swimlane一般是为了task准备的,任务总是要分配到某个人头上的。如果在流程定义文件中任务没有指定对应的泳道如:,那么就需要在程序代码中分配相关的处理人taskInstance.setActorId("jeffen")。如果程序都是这样来搞那其实是很麻烦的,而且分配代码分散到各个地方,很容易出错。于是引进了泳道,我们可以在流程定义文件中统一指定swimlane和处理人的关系、task和swimlane的关系,只需要维护这一个文件就好了,(有点像struts的配置文件)如下:
<
swimlane name
=
"
banker
"
>
<
assignment expression
=
"
user(jeffen)
"
/>
</
swimlane
>
......
<
task name
=
"
bank
"
swimlane
=
"
banker
"
>
这样就将任务实例和处理人松耦合了,对于多任务对应相同的处理人,这种方式的好处显而易见。
当然还可以在程序中动态指定处理人,如上taskInstance.setActorId("jeffen"),也可以通过泳道实例swimlaneInstance.setActorId("jeffen")指定。
|