WfRequester is the interface that has a direct concern with the execution and results
of a workflow process - it represents the request for some work to be done. Its
performer, a WfProcess, is expected to handle its request and communicate significant
status changes; in particular to inform the requester when it has completed performing
the requested work. A single requester can have many processes associated with it.
璇存槑錛?/span> WfRequester 鎺ュ彛鏄竴涓拰宸ヤ綔嫻佹祦紼嬬殑鎵ц鍙?qiáng)缁撴灉鏈夌洿鎺ュ叧绯荤殑鎺ュ彛锛涘畠浠h〃浜嗗涓浜涘伐浣滄墽琛岀殑璇鋒眰錛涘畠鐨勪竴涓富瑕佸姛鑳芥槸鎶?/span> WfProcess 閾炬帴鍒頒竴涓叾瀹冨簲鐢紱鍏朵腑 WfRequester 浼?xì)鍏宠仈鍒板涓?/span> WfProcee, 褰?/span> WfProcess 鍙戠敓 complete 銆?/span> terminate 銆?/span> abort 浜嬩歡鏃朵細(xì)閫氳繃鍥炶皟 receiveEvent() 鏂規(guī)硶鏉ラ氱煡 WfRequest 錛涘湪 receiveEvent(event) 鏂規(guī)硶涓紝鍙傛暟 event 鏄竴涓?/span> WfEventAudit 瀵硅薄錛屽叾涓?/span> WfEventAudit 涓湁涓涓柟娉?/span> source(), 閫氳繃榪欎釜鏂規(guī)硶鎴戜滑鍙互寰楃煡鏄摢涓?/span> WfExecutionObject 瀵硅薄瑙﹀彂浜嗕簨浠舵簮錛涘緱鍒頒簡 WfExcutionObject 鍗?/span> WfProcess 鎴戜滑涔熻繘鑰?/span> 寰楀埌浜嗗拰榪欎釜 WfProcess 鐩稿叧鑱旂殑鍏跺畠搴旂敤錛?/span>
涓昏姝ラ :
(1)聽聽聽 鑷畾涔変竴涓嚜宸辯殑綾繪垨鎺ュ彛錛屽 GenericRequester, 榪欎釜 GenericRequester 綾諱唬琛ㄧ敤鎴瘋嚜瀹氫箟鐨勪竴涓姹傝咃紱
(2)聽聽聽 鍦ㄥ惎鍔?/span> WfProcess 鏄紝鎶婅繖涓姹傝呭拰 WfProcess 榪涜緇戝畾娉ㄥ唽鍒?/span> WfRequester 涓紱
聽
鍦?/span> WfReuester 鐨?/span> registerProcess() 灝辨槸鍋氳繖涓姛鑳斤紝涓昏浠g爜濡備笅
protected Map performers = null;
public void registerProcess(WfProcess process, Map context, GenericRequester requester){
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 performers.put(process, requester);
聽
}
(3)聽聽聽 褰撳伐浣滄祦紼嬪湪鎵ц鐨勮繃紼嬩腑鍙戠敓 complete 銆?/span> terminate 銆?/span> abort 浜嬩歡鏃朵細(xì)鍥炶皟 WfRequest 涓殑 receiveEvent() 鏂規(guī)硶錛?/span>
聽聽聽 聽 requester.receiveEvent(audit);
(4) 聽聽 鍦?/span> receiveEvent() 涓鍏堟牴鎹?/span> WfEventAudit 鐨?/span> source() 鑾峰彇瑙﹀彂浜嬩歡鐨?/span> WfProcess 瀵硅薄錛?/span>
receiveEvent(WfEventAudit event){
聽聽聽聽聽聽聽 // 鑾峰彇浜嬩歡婧?/span> process 瀵硅薄
WfProcess聽 process = (WfProcess) event.source();
// 鏍規(guī)嵁 prcocess 瀵硅薄鑾峰彇鍦ㄦ敞鍐屾椂緇戝畾鐨勮嚜瀹氫箟璇鋒眰鑰?/span> GenericRequester
GenericRequester 聽req = (GenericRequester) performers.get(process);
// 鎵ц鑷畾涔夎姹傝呯殑鏂規(guī)硶
req.receiveResult(process.result());
}
鍏跺畠錛氬湪榪欓噷 GenericRequester 涔熷彲鏄竴涓?/span> WfProcess 鎴?/span> WfActivity 瀵硅薄錛岃繖鏍峰彲浠ュ湪 WfProcess 瀹屾垚鎿嶄綔鍚庡張鍚姩鍙︿竴涓瓙嫻佺▼鎴栨煇涓椿鍔紱 聽聽聽