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")指定。
|