`
fly_ever
  • 浏览: 149901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JBPM的流程定义

阅读更多
1 .JBPM 的版本:3.1.4

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

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

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

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

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

JBPM 的流程版本控制机制  

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

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

当一个流程存档被部署时,将在 jBPM 数据库中创建一个新的流程定义。

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

当一个新的版本被部署,新的流程实例以新版本启动,而老的流程实例则以老的流程定义继续执行,直到它结束为止。

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

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

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

process-definition,有一个流程定义名称,其流程内容主要由下面七个部分组成:
1 ,swimlane ,泳道,它们被用于任务分配 ,一个泳道可以被视为一个参与者在这一流程中的角色名称。
2 ,start-state ,流程的起始状态,所有的流程实例都是从这个状态开始的,没有起始状态的流程是合法的,但不能被执行;
3 ,node-elements ,包含一系统流程定义的节点,这些节点类型包括
end-state|state|node|task-node|process-state|super-state|fork|join|decision
没有流程定义的流程是合法的,但不能被执行;
4 ,action-elements ,全局定义的动作,可以在事件和转换中引用,为了被引用,这些动作必须被指定名称;包括 action|script|create-timer|cancel-timer
5 ,event ,事件,服务于动作的流程事件;
6 ,task ,全局定义的任务,可以在动作中使用;
7 ,exception-handler ,一个异常处理器列表,用于这个流程定义中的委托类所抛出的所有异常。

在JPDL 包含的这些元素中,node-elements
中定义的为一系统的包含各种类型的 node-elements ,这些 node-elements 描述了整个流程包含的各个状态,以及状态之间的转换。即相当于流程的过程模型。
而在这些 node-elements 的状态转换时,可以调用相应的action-elements
node-elements 也有支持的event 类型,所以能够调用相应的event ,在event 中,也可以调用相应的action-elements
。而action 是指实现用户指定的行为,通过实现org.jbpm.graph.def.ActionHandler
接口来实现。所以可以在流程中,得到用户的或者其他应用程序的资源。
当 node-element 为task-node 时,即流程包含的任务,可以为这些任务指定任务的执行者,通过swimlane
属性直接指定或者通过assignment来实现一个委托,即实现一个org.jbpm.taskmgmt.def.AssignmentHandler
接口来分派任务执行者。
参考《 JBPM3.1 用户指南》




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics