swimlane一般是为了task准备的,任务总是要分配到某个人头上的。如果在流程定义文件中任务没有指定对应的泳道如:<task name="bank"/>,那么就需要在程序代码中分配相关的处理人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")指定。
本文介绍如何使用swimlane简化工作流引擎中的任务分配过程。通过定义swimlane及其与处理人的关系,可以实现任务与处理人之间的松耦合,方便进行多任务管理。
1万+

被折叠的 条评论
为什么被折叠?



