`

JBPM的流程定义

阅读更多

1JBPM的版本:3.1.4

2JBPM流程建模

JBPM的流程建模采用的是改良的UML活动图,一是在用UML活动图表述业务流程时,只建模状态层(状态和控制流),不包括动作(UML活动图没有区分状态和动作,它们都用活动来表示);二是如果多个迁移到达一个状态,缺省定义为不需要同步的合并(UML活动图中默认是需要同步的联合)JBPM定义了自己的流程定义语言JPDL,用它来精确描述UML活动图的每一个部分,采用的是XML格式的。

JBPM的流程建模结合应用了状态图,活动图和PetriNet的知识,这里的活动图是UML2.0版的。JBPM使用的状态图的概念有transition/event等; JBPM的内部实现中还采用了PetriNet的概念,如token,signal等。

    在UML活动图没有区分状态和动作,在JBPM中动作(actions)就是一段程序逻辑,也就是工作流模型中的应用服务。在JBPM中,状态(state)这一术语与有限自动机(FSM)或者UML状态图中的state具有相同的意义。状态是jBPM的一个核心概念,也是业务流程的基本元素,状态代表了一种对外部参与者的依赖。定义状态时需要指定该状态的执行者,也就是该状态依赖的外部参与者。多个状态可能依赖同一个参与者,工作流管理系统根据这些信息构建该参与者的任务列表。当开始在jBPM中进行流程建模时,首先需要考虑业务流程的状态,状态将会成为你定义的流程的基本框架。

控制流包含一组状态和它们之间的关系。状态之间的逻辑关系描述了哪些执行路径可以同时执行,那些不可以。

可以用分叉(forks)和联合(joins)建模来表示流程中的分支路径,用判断(decisions)来选择流程怎么样流向下一个节点。JBPM的流程版本控制机制

3

    一般情况下,流程定义不应该改变,因为预测流程变化带来的梭鱼可能的影响是非常困难的。JBPM有一个明智的流程版本机制,版本机制允许在数据库中多个同名的流程定义共存,流程实例以当时最新的版本来启动,并且在它的整个生命周期中将保持以相同的流程定义执行。

的版本控制机制可归结为以下几条原则: 

<!--[if !supportLists]-->a)当一个流程存档被部署时,将在jBPM数据库中创建一个新的流程定义。

<!--[if !supportLists]--b>当一个被命名的流程定义被部署,部署器将分配一个版本号。为了分配版本号,部署器将查询同名流程定义的最高版本号,并且在其上加1.

<!--[if !supportLists]-->c)当一个新的版本被部署,新的流程实例以新版本启动,而老的流程实例则以老的流程定义继续执行,直到它结束为止。

<!--[if !supportLists]-->d)JBPM甚至能够对与一个流程相关的程序逻辑进行版本控制,通过在流程存档中包括java类,JBPM能够将每个流程定义的类分离。

4JPDL具体分析

为了把复杂的企业经营过程定义成工作流引擎可以理解的形式化信息及工作流管理系统可以管理的工作流,需要建立计算机化的工作流模型。为了全面描述经营过程,工作流模型通常又包含三个子模型,分别是过程模型,资源模型和组织模型。过程模型描述经营过程中的活动以及活动之间的关系,资源模型描述活动所需要的软硬件资源,而组织模型描述活动的执行实体。过程模型是工作流模型的核心,比较常见的过程建模方法有Petri网、活动图、状态图等。

针对具体的JBPM的流程建模,具体的在JBPM中,一个业务流程是用xml文件的形式表现出来的,其包含的元素如下:

一个业务流程的定义process-definition,有一个流程定义名称,其流程内容主要由下面七个部分组成:

1swimlane,泳道,它们被用于任务分配,一个泳道可以被视为一个参与者在这一流程中的角色名称。

2start-state,流程的起始状态,所有的流程实例都是从这个状态开始的,没有起始状态的流程是合法的,但不能被执行;

3node-elements,包含一系统流程定义的节点,这些节点类型包括

end-state|state|node|task-node|process-state|super-state|fork|join|decision

    没有流程定义的流程是合法的,但不能被执行;

4action-elements,全局定义的动作,可以在事件和转换中引用,为了被引用,这些动作必须被指定名称;包括 action|script|create-timer|cancel-timer

5event,事件,服务于动作的流程事件;

6task,全局定义的任务,可以在动作中使用;

7exception-handler,一个异常处理器列表,用于这个流程定义中的委托类所抛出的所有异常。

JPDL包含的这些元素中,node-elements中定义的为一系统的包含各种类型的node-elements,这些node-elements描述了整个流程包含的各个状态,以及状态之间的转换。即相当于流程的过程模型。

而在这些node-elements的状态转换时,可以调用相应的action-elementsnode-elements也有支持的event类型,所以能够调用相应的event,在event中,也可以调用相应的action-elements。而action是指实现用户指定的行为,通过实现org.jbpm.graph.def.ActionHandler接口来实现。所以可以在流程中,得到用户的或者其他应用程序的资源。

node-elementtask-node时,即流程包含的任务,可以为这些任务指定任务的执行者,通过swimlane属性直接指定或者通过assignment来实现一个委托,即实现一个org.jbpm.taskmgmt.def.AssignmentHandler接口来分派任务执行者。

因此使用JPDL,可以从过程模型,资源模型,组织模型来完整的描述一个业务流程。


<!--[endif]-->

参考《JBPM3.1用户指南》

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics