涓涓祦紼嬪畾涔夋湁涓涓猅askMgmtDefinition錛涗竴涓猅askMgmtDefinition瀵瑰簲澶氫釜swimlane,鍚屾椂瀵瑰簲澶氫釜task;涓涓猻wimlane鏈夊涓猼ask,鍙互 TaskMgmtDefinition涓氳繃task鐨勫悕縐扮洿鎺ヨ幏鍙栫浉搴旂殑task;
swimlane瀵硅薄鏈夊洓涓睘鎬э紝鍒嗗埆鏄痭ame錛堝悕瀛楋級銆乤ssignmentDelegation錛堝垎閰嶄唬鐞嗙被錛夈乼askMgmtDefinition銆乼asks錛圫et 瀵瑰簲澶氫釜task),鍙互澧炲姞task
task瀵硅薄涓昏鐨勫睘鎬э細(xì)taskMgmtDefinition銆乻wimlane銆乤ssignmentDelegation銆乼askNode錛岄渶瑕佹敞鎰忕殑鏄痵wimlane鍜宎ssignmentDelegation涓棿鍙槸鍙互涓涓睘鎬ф湁鍊鹼紝鍥犱負(fù)瀹冧滑閮藉拰浠誨姟鐨勫垎閰嶆湁鍏崇郴銆?/P>
涓涓祦紼嬪疄渚嬫湁涓涓猅askMgmtInstance錛涗竴涓猅askMgmtInstance瀵瑰簲澶氫釜swimlaneInstance,鍚屾椂瀵瑰簲澶氫釜taskInstance;涓涓猻wimlaneInstance鏈夊涓猼askInstance,鍙互浠嶵askMgmtInstance涓洿鎺ヨ幏鍙栫浉搴旂殑taskInstance;
swimlaneInstance瀵硅薄涓昏鏈変簲涓睘鎬э紝鍒嗗埆鏄痭ame銆乤ctorId銆乸ooledActors錛圫et錛夈乻wimlane銆乼askMgmtInstance銆?BR>taskInstance瀵硅薄鐨勪富瑕佸睘鎬э細(xì)name銆乤ctorId銆乼ask銆乻wimlaneInstance銆乼askMgmtInstance銆乸ooledActors銆?/P>
褰撳浠誨姟榪涜鍒嗛厤鏃訛紝涓鑸渶瑕佸疄鐜癆ssignmentHandler榪欎釜鎺ュ彛錛岃繖涓帴鍙g殑鏂規(guī)硶鍙湁涓涓細(xì)
void assign( Assignable assignable, ExecutionContext executionContext ) throws Exception;
涓涓吀鍨嬬殑瀹炵幇錛堟妸鍚嶅瓧鏄?change nappy'鐨勪換鍔′氦緇橬appyAssignmentHandler榪欎釜綾繪潵鍒嗛厤錛?BR> <task name='change nappy'>
<assignment class='org.jbpm.tutorial.taskmgmt.NappyAssignmentHandler' />
</task>
NappyAssignmentHandler綾伙細(xì)
public void assign(Assignable assignable, ExecutionContext executionContext) {
assignable.setActorId("papa");
}
鍚屾牱錛孉ssignable鍙槸涓涓帴鍙o紝瀹冩湁涓や釜鏂規(guī)硶錛歴etActorId()鍜宻etPooledActors()錛孉ssignable鐨勫叿浣撳疄鐜扮被涔熸槸涓や釜
swimlaneInstancehe鍜宼askInstance銆傝繖鏍峰氨涓嶄笉闅劇悊瑙f暣涓換鍔″垎閰嶆祦紼嬩簡錛?BR> 1銆佹祦紼嬭繘鍏askNode鑺傜偣錛屾墽琛孴askNode綾葷殑execute()鏂規(guī)硶錛岃鏂規(guī)硶棣栧厛鑾峰緱TaskMgmtInstance瀹炰緥錛岀劧鍚庨氳繃瀹冩潵鍒涘緩TaskInstance銆倀askMgmtInstance.createTaskInstance(task, executionContext);
2銆佸湪涓婇潰鐨刢reateTaskInstance(task, executionContext)閲岋紝璇ユ柟娉曡皟鐢ㄤ簡taskInstance.assign(executionContext)瀵箃askInstance榪涜鍒嗛厤銆?BR> 3銆佸湪assign(executionContext)鏂規(guī)硶閲岋紝棣栧厛浼?xì)鍒ゆ柇task灞炴ч噷鏄惁瀛樺湪swimlane錛屽鏋滄湁鐨勮瘽錛岃繖涓猼askInstance灝變細(xì)鍒嗛厤緇檚wimlane鎸囧畾鐨凙ctorId鎴?PooledActors錛涘鏋滀笉瀛樺湪錛屽啀鍘繪壘task灞炴ч噷 assignmentDelegation錛堝垎閰嶄唬鐞嗙被錛夐氳繃浠g悊綾伙紙鍗蟲垜浠嚜宸卞啓鐨勫疄鐜癆ssignmentHandler榪欎釜鎺ュ彛鐨勭被錛夋寚瀹欰ctorId鎴?PooledActors銆?