TaskNode节点的signal属性决定了任务完成时对流程执行继续的影响,共有六种取值:unsynchronized,never,first,first-wait,last,last-wait。默认的取值是last。
(1)signal="unsynchronized"流程不在当前结点停留,而直接推进到下一结点
(2)signal="never"任务结束时,流程结点依然停留在本结点,直到你手动地调用token.signal()才会继续向下执行
(3)signal="first"如果在当前结点创建了多个任务,第一个任务完成之后,流程就会走到下一个结点。
(4)signal="first-wait"当前结点没有任务被创建时,会一直等待,当有任务被创建之后,它的作用就同signal="first"一样了。不管创建多少个任务,只要第1个任务完成,就会执行到下一结点。
(5)signal="last"这个是默认的。如果在当前结点创建了多个任务,会一直等到最后一个任务完成时,流程才会到下一结点。
(6)signal="last-wait"当前结点没有任务被创建时,会一直等待;当有任务被创建后,它的作用就同signal="last"一样了。
由于TaskNode默认是会自动创建任务的,所以last-wait和first-wait通常都会与createTasks=‘false‘一起使用,当有需要的时候,可以手动地创建任务,否则就没有等待的必要了。另外,需要说明的是,如果在TaskNode结点中的任务没有指定任务处理人,默认情况下,JBPM不会为流程创建任务,会自动执行到下一结点,所以在很多业务中,比如动态会签,或者在流程执行到某一结点之后多次对任务结点添加新任务,就会需要JBPM在此结点等待。last-wait与first-wait也正是用来处理这种较复杂的情况的。
原文:http://www.cnblogs.com/toSeeMyDream/p/4403916.html