JBPM基于Spring系统工作流平台整合3------JBPM(原创)

JBPM基于Spring系统工作流平台整合3------JBPM

 

声明:该文系作者原创,如您用于商业用途或者论文发表,请您一定要通知作者本人同意方可引用。

基本概念

令牌token表示了一个执行的路径,它是运行时产生的。令牌代表一个流程执行的路径,它维护着流程定义中各个结点的指针,同时记录了流程当前执行的位置。

        jBpm采用Token来表示当前实例运行的位置,也利用token在流程各个点之间的转移来表示流程的推进。JBpm没有节点实例NodeInstance这个概念。利用TokenTaskInstanceJBpm足以持久化足够的信息,能够让流程实例迅速定位到当前运行的状态。

节点node表示流程中的一个节点1.实现某个指定行为,在JBPM中就是执行一段指定的Java代码;2.转递、维持流程的延续,直至达到最终结点。

转移transition关联两个节点,用于表示节点的走向。当一个Node中存在有多个同名的transition的时候,第一个transition将会被选中。

发信号signal让一个token执行下一步。当token进入到一个node时,node会被执行,并产生一些事件,比如进入、离开节点等,这也是执行业务逻辑的地方。事件由action来表示。

任务Task任务作为流程定义中的一部分,定义了如何创建任务实例(Task instances)以及任务分配。任务可以在任务结点(Task-Node)和流程定义(process-definition)两个地方定义。在整个的流程定义中,任务名必须是唯一的。可以给任务设定优先级,任务实例可以在之后的运行中改变优先级。

任务实例Task Instance一个任务实例对象可以分配给指定操作者处理,完成后,触发流程继续下行。任务实例生命周期:生成实例-->开始处理-->任务结束。任务实例记录着任务创建的时间、结束时间,这些信息可以通过TaskInstance对象中的getter方法获取。

 节点定义

1node(自动节点)

这种节点和State相反,也称自动节点。当业务程序实例执行到这个节点不会停止执行。而是会继续往下执行。如果该节点存在多个离开转向。那么,就会执行其中的第一个离开转向,在Node状态中,不需要外部参与者的参与,业务流程的这个部分是自动的、即时完成的。

2state(状态)
    State
节点也叫手工节点,进入到这种节点,整个流程的执行就会中断。直到系统外参与者发起继续执行的命令,即调用signalend方法,业务程序实例的执行才能够继续下去。
    3
task-node (任务节点) 

其性质和node节点一样,在没有task的时候,也都是自动执行,不等待。task-node被归类为一个等待节点,是指在task-node中的task列表中的task没有全部执行完之前,它会一直等待。Task可以在task-node节点下定义,也可以在process-definition节点下。

<task-node name='a'>
<task name='laundry' />
<task name='dishes' />
<task name='change nappy' />
<transition to='b' />
</task-node>
    a)
这里没有定义signal属性的值,这就表明当节点中的三个任务都完成后,流程才进入后面的节点
    b)
<task-node name='a' signal='unsynchronized'>表明token不会在本节点停留,而是直接到后面的节点
    c)
<task-node name='a' signal='never'>表明三个任务都完成后,token仍然不会指向后面的节点;需要自己手动调用processInstance.signal()才会驱动流程到下面的节点
    d)
<task-node name='a' signal='first'>表明只要有一个任务完成后,token就指向后面的节点
    e)
<task-node name='a' signal='first-wait'>表明当第一个任务实例完成时继续执行;当在a节点入口处没有任务创建时,tokena任务节点处等待,直到任务被创建或完成。
    f)
<task-node name='a' signal='last'>时,这是默认值,和不设置signal属性的情况相同。
    g)
<task-node name='a' signal='last-wait'>时,当最后一个任务实例完成时候继续执行下去。 a这个任务节点没有任务被建立时,任务节点等待直到任务被建立。
    4
fork(分支

一个fork把一个执行路线分割成多个执行路线. 默认分支的行为是为每个离开分支转换建立一个子令牌,在令牌要到达的分支之间建立一个父母-子女关系

一般来说,forkjoin需要一起配对使用,一个fork对应一个join,否则流程执行会有问题
    5
join(联合)

在上使用fork(分支)这个情形就出现了并且所有令牌分支建立,并且到达同一个联合(join)。当全部令牌都进入联合的时候联合就结束了, 然后联合将检查父母-子女,当所有兄弟令牌到达联合(join),父母令牌将传播(唯一的)离开转换,当还有兄弟令牌活动时,联合的行为将作为等待状态。

6decision(决策
   
一个decision用以决定在多个执行路径中哪个才可以被执行。一个decision能够具有许多离开的transitionHandler所指定的DecisionHandler的实现类里的decide方法返回一个字符串,表示要执行哪个transition
    7
Superstate

是用来对node进行分组的. 而且可以被嵌套使用, 一般在复杂的流程设计中使用(比如流程中的node有一定的层次关系), 其好处能对进入Superstate中的任意的一个node进行统一的控制(通过独有的两个事件superstate-enter and superstate-leave)

8transition(转换)
   
转换用来指定节点之间的连接。transition元素放在node里面,那么这个transition就会从这个节点出离开。
    9
event(事件)
    JBPM
定义了一系列与工作流节点元素相关联的事件,流程实例运行过程中,可以触发节点进入(node-enter)、节点离开 node-leave)、流程启动(process-start)、流程结束(process-end)、任务创建(task-create)、 任务分派(task-assign)、任务启动(task-start)等事件。

10action(动作)
   
一个action是一段java代码。在流程执行期间在一些事件之上定义,这样会在相关事件触发时自动在工作流引擎上执行。

11script(脚本)
    Script
里是动作执行的beanshell脚本. 更多有关beanshell的的信息请参考Beanshell的网站:http://www.beanshell.org

12expression(表达式)
    Expression
里可书写Beanshell脚本
    13
variable(变量)

一个是变量是一种key-value对。它与过程实例(一次过程执行)相关联。

 14handler(句柄) 
    Handler
是在定义一个decision时需要为其定义一个DecisionHandler时才用。
    15timer(定时器)
   
定时器以设置开始时间duedate和频率repeat。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值