阅读更多
1、流程定义
流程定义是对业务过程步骤的详细描述,在JBPM4中表现为若干“活动”节点
通过“转移”线条串联。例如一个请假流程定义,描述了一个请假的具体处理
步骤。
2、流程实例
流程实例表示流程定义在运行时特有的执行例程。打个比方:可以把流程定义
理解为一个Java类,而流程实例则可以理解为该Java类的一个具体对象。例如
学生A提出请假申请,就会产生一个请假流程定义的具体流程实例A;学生B提出
请假申请,又会产生一个新的请假流程定义的具体流程实例B;就好像一个名为
User的Java类,使用User user1 = new User();会产生一个User(流程定义)的
具体对象(流程实例)。所以一个流程定义对应多个流程实例。
3、执行
一个流程实例的其生命周期中,最典型的特征就是其具有指向当前执行活动的指针
-------“执行”。比如一个请假单流程实例:执行活动指针将指向该请假单当前所
处的位置,也就是该请假单目前提交给谁了,是到了班长审批还是到了老师审批。
注意:“执行”这个概念在JBPM3中被称为“token”,到了JBPM4中则变成了“executions”
流程实例支持“并行”执行(比如企业中的一个采购单需要经过多个领导审批,也就是
一个采购单在某个环节需要同时提交给多个人),所以在同一个流程实例中执行的数
量并非绝对唯一(在某个节点提交成功后,可以fork到不同的节点,也就是产生多个
分支)。
一般情况下,一个流程实例可以理解为一颗“执行树”。当一个流程实例启动时,最初
的执行处于这棵执行树的“根”节点位置,之后可以根据定义的需要产生子执行,即
”树枝“。
JBPM使用树状执行结构的原因在于:这一概念实际上只有一条执行路径,所以执行终将
归于(join)根执行(也就是说:fork和join在流程定义中是成对出现了)。这样,执
行流程模型的实现和使用就更简单、更容易理解了。
业务API不需要理解流程实例和执行之间的功能区别,jBPM Service API里值需要一个
执行类型来引用流程实例。
【注:本文章参考《jBPM4工作流应用开发指南》胡奇 一书】