`

如何利用OSWorkflow的function进行任务的分配

阅读更多
OSWorkflow是只是一个workflow engine的内核体。我们都说osworkflow非常的易扩展,但是这也同样说明了,用osworkflow去实现一个能够运行的工作流系统是非常繁琐的事情。繁琐并不是难,因为你要想实现一个流程,不得不自己去实现大量的condition和function。

       既然说到工作流,那么肯定会涉及到“任务交给谁做”的问题。但是OSWorkflow压根就没有管这种需求,对于其来说,其提供了c和f,如果再有什么额外的需求和功能,那么就扩展condition或function。于是,你不得不扩展一些function类去处理“角色”“任务分配”“提交任务”等等诸如此类的操作。



       在我的标题中提到了workitem,这个概念几乎在其他工作流引擎都有所体现,但是对osworkflow来说,这是一个空白区域。至于workitem的含义,请参考wfmc的《Terminology & Glossary》。



       OSWorkflow引擎只负责了“流程的运转”,当然这个运转会根据你所定义的Action和condtion来判断。Funtion对osworkflow来说,只是step、action、result执行过程需要调用的功能,至于这个功能作什么,OSWorkflow并不关心,引擎只是负责提供几个参数接口。



public interface FunctionProvider {

  public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException;
}



       所有的Function实现类都必须实现这个FunctionProvider接口中execute方法,而且能够处理的信息,也全部来自这个方法中的三个参数:



transientVars


这个是最为核心的参数,记录非常重要的一些对象,比如WorkflowContext,WorkflowEntry,输入参数等等。

args


这个是function配置中的arg参数,具体请参考osworkflow dtd

ps


是PropertySet对象,记录了流程实例所需要保存的数据,可以理解成osworkflow所描述的流程相关数据。



     




       具体transienVars中包含哪些对象,请参考 FunctionProvider api doc。



       下面就说说如何利用Function进行任务的分配。



       个人建议你在Step的pre-function中做处理,配置如下:

    <step id="4" name="Assign">

      <pre-functions>

        <function type="class">

          <arg name="class.name">nucleus.assign.AssignmentFunction</arg>

          <arg name="Participant">A</arg>

          <arg name="ParticipantType">role</arg>
          <arg name="actionID">22</arg>

        </function>

      </pre-functions>

      <actions>

         ······

      </actions>

    </step>



看了这个配置形式,我想大家应该明白如何去处理。你可以在function中获取自己所定义的角色、根据角色获取人员、根据人员产生workitem······ 。你在function 所作的这一切操作对osworkflow engine来说都是透明的—— 你所产生的worklist所代表的含义只有你自己知道。

其中我为什么会附加了一个arg属性:actionID?这是因为我需要告诉每一个workitem在其应该处理哪一个动作。 因为外部程序都是通过Workflow.doAction(long, int, java.util.Map) 这个接口来激活流程的运转或改变实例的状态。



总体来说,利用osworkflow去实现一个完整的工作流例子,还是比较麻烦的。主要是要扩展和自己实现的太多。
分享到:
评论
2 楼 sunchaohui_koko 2009-04-20  
压根不对的,如果step里面有多个action呢?这个function还是放在action里面好了,毕竟action和workitem是对等的。
1 楼 fantasy 2008-05-05  
function和condition里的actionId可以通过transientVars得到

actionId = (Integer) transientVars.get("actionId");

相关推荐

    osworkflow配置及演示程序.rar

    5. **任务分配与状态跟踪**:OSWorkflow提供了任务分配机制,可以将不同阶段的任务指派给相应的用户或角色。同时,系统可以跟踪每个实例的状态,便于管理和监控。 6. **API使用**:压缩包可能还包括了关于如何使用...

    OSWorkflow

    OSWorkflow

    OSWorkFlow

    4. 任务处理:根据流程实例的状态,分配任务给相应用户,用户完成任务后提交回引擎。 5. 监控与管理:通过API或Web界面监控流程进度,进行暂停、恢复、跳转等操作。 四、相关资源 1. 官方文档:提供详细的API参考和...

    OSWorkFlow 请假实例

    3. **任务分配**:根据流程定义,OSWorkFlow自动将任务分配给合适的参与者,如请假申请的审批人。 4. **事件驱动**:流程中的每个任务通常与一个或多个事件关联,当满足特定条件时,OSWorkFlow会触发这些事件,推动...

    OSWorkflow中文手册 OSWorkflow中文手册

    此外,还可以配置任务分配规则、时间触发器等。 4. **API与集成** OSWorkflow提供了丰富的Java API,使得开发人员可以在应用程序中轻松地启动流程、查询流程状态、执行任务和转移控制。同时,它也支持与其他技术栈...

    osworkflow中文入门指南,osworkflow+hibernate+spring集成配置,osworkflow-2.8.0.jar

    它的核心功能包括任务分配、状态转换、流程分支和并行处理等。 **osworkflow-2.8.0.jar** 是osworkflow的一个版本,包含了所有必要的类库和资源文件,供开发人员在项目中使用。这个版本可能包含了一些新的特性、...

    Osworkflow 入门级例子

    它的核心功能包括流程定义、流程实例管理、任务分配以及状态跟踪。在这个2.8版本中,它可能包含了性能优化和一些新特性,以便更好地适应不断变化的业务需求。 首先,我们需要理解 Osworkflow 的基本组件。流程定义...

    OSWorkFlow入门

    这个框架提供了灵活的流程定义、状态跟踪、任务分配以及事件通知等功能,使得开发人员能够轻松地创建和管理动态工作流程。本文将深入介绍 OSWorkflow 的基本概念、安装与配置、流程定义、任务管理和实际应用。 1. *...

    基于osworkflow框架的OA系统demo

    OSWorkflow提供了强大的工作流定义和执行能力,包括流程设计、状态转换、事件触发、任务分配等。它支持XML配置,使得工作流定义可以独立于代码,便于维护和扩展。此外,osworkflow还提供了一套API,方便与各种编程...

    osworkflow详细资料 pdf 工作流

    3. **任务分配**:根据预定义的规则,OSWorkflow能够自动将任务分配给合适的执行者,例如,基于角色分配或者基于用户指定。 4. **并发控制**:在多用户环境中,OSWorkflow能处理并发操作,确保流程的正确性和一致性...

    osworkflow

    4. **事件驱动**:通过监听器(Listeners)和触发器(Triggers),osWorkflow 可以响应外部事件,如定时任务或用户交互,从而驱动流程的执行。 5. **持久化存储**:osWorkflow 内置了对数据库的支持,可以将流程...

    osworkflow2.8

    工作流引擎是自动化业务流程的核心组件,它负责执行预定义的流程规则,如任务分配、审批流程等。OSWorkflow 就是这样一个引擎,它提供了一个可扩展的框架,帮助开发者快速构建灵活的工作流系统。 2. **OSWorkflow ...

    OsWorkflow

    通过这个请假申请的例子,你可以了解到如何使用XML定义流程,Servlet如何与工作流引擎交互,以及如何利用OsWorkflow API来控制流程的执行。这不仅有助于理解OsWorkflow的工作原理,也为实际开发提供了实践经验。

    osworkflow_bundle2

    工作流定义包括了任务、状态转换、参与者分配等,使得业务流程能够以声明式的方式进行配置。 2. **工作流实例**:在运行时,OSWorkflow 将工作流定义转化为可执行的实例,每个实例代表一个具体的业务流程。实例的...

    OSWorkflow 工作流 开发指南、中文手册

    在本文中,我们将详细探讨OSWorkflow的核心概念、功能特性以及如何在实际项目中进行集成和应用。 一、OSWorkflow简介 OSWorkflow 是一个开源的工作流解决方案,最初由OpenSymphony团队开发,现在由Atlassian公司...

    OSWorkflow源码及电子书

    它允许用户自定义每个工作流步骤,包括任务分配、审批规则、流程分支等,无需编程即可实现复杂的业务逻辑。通过XML配置文件,你可以定义任意数量的步骤、状态转换以及参与者角色,满足各种流程需求。 2. **可扩展性...

    osworkflow开发指南

    5. **任务管理**:理解任务的概念,包括任务分配、领取、完成和委托,以及如何通过API进行任务操作。 6. **事件与监听器**:学习osWorkFlow中的事件机制,如何设置监听器以响应流程中的特定事件,如任务完成、流程...

    工作流引擎(osworkflow) 2.80

    - **任务管理**:支持任务的创建、分配、委派和完成,同时提供任务查询和跟踪功能。 - **事件驱动**:通过监听和触发事件,实现流程的自动推进。 - **持久化**:OSWorkflow 内置了持久化机制,确保流程实例在系统...

Global site tag (gtag.js) - Google Analytics