jbpm node signal

task-node (任务节点)
其性质和node节点一样,在没有task的时候,也都是自动执行,不等待。task-node被归类为一个等待节点,是指在task-node中的task列表中的task没有全部执行完之前,它会一直等待。Task可以在task-node节点下定义,也可以挂在process-definition节点下。最普遍的方式是在task-node节点下定义一个或多个任务。默认情况下,流程在task-node节点会处于等待状态,直到所有的任务被执行完毕。Task的执行是按顺序执行的,任务都完成后,token仍然不会指向后面的节点;需要自己手动调用processInstance.signal()才会驱动流程到下面的节点。
名称
类型
数量
描述
signal
属性
可选的
{unsynchronized|never|first|first-wait|last|last-wait},默认是lastsignal指定了任务的完成对流程执行继续的影响。
create-tasks
属性
可选的
{yes|no|true|false},默认是true。当需要在运行时通过计算来决定哪个任务将被创建时,可以设置为false,如果这样的话,在node-enter事件上加一个动作,在动作中创建任务,并且把create-tasks设置为false
end-tasks
属性
可选的
{yes|no|true|false},默认是false。如果设置end-taskstrue,在离开节点时,所有打开的任务将被结束。
task
元素
[0..*]
当执行到达本节点时所应被创建的任务。
 
 
请参考普通节点元素
 
为了帮助读者理解task-node节点的signal属性,这里举例如下:
对于这样的流程定义:
 <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这个任务节点没有任务被建立时,任务节点等待直到任务被建立

posted on 2015-10-08 11:24  rigidwang  阅读(646)  评论(4编辑  收藏  举报