1/10/2005

BPM如何處理交易中的錯誤

在WebLogic Integration 8.1中, 所有的流程都是至少有一個全域交易(Global Transaction), 萬一有錯誤(Exception)發生, 流程引擎會怎麼運作呢? 下面這張圖是基本的演算法:

很清楚地, 只有在沒被標示成Roll-Back Only, 而且Exception Hanlder沒有產生錯誤的情況下, 流程會繼續跑下去(Resume), 否則都Rollbacked, 流程進入Aborted狀態。

問題來了, 如果流程被設定成"freeze on failure"時, 會如何? 答案是: 交易會被Roll-backed, 而且不會執行Exception Handler, 流程進入凍結狀態! 如果又希望在Rollbacked前, Exception Handler可以被執行的話 (例如做補償交易), 可以將其"execute on rollback"屬性設成"true" 。

Exception的處理, 影響到整個流程的設計, 請千萬小心!

原始文件在 http://e-docs.bea.com/workshop/docs81/doc/en/integration/wfguide/wfguideException.html 可取得。

沒有留言: