爲了使用戶能夠在流程中產生邏輯異常(好比參與者設置爲空)後,協同工做流引擎引入了異常補償功能,經過這個功能,用戶能夠對流程產生的邏輯異常進行自定義的補償。咱們經過在流程中引入異常活動來完成客戶的邏輯異常補償自定義化的工做。函數
異常活動是一種新的活動類型,經過異常活動能夠完成流程邏輯異常的補償。異常活動不須要像其餘活動同樣設置其活動屬性。經過後繼轉移線來完成異常的用戶自定義補償工做,以下圖所示,在報銷申請的時候,用戶選擇領導審批,當他沒有選擇領導直接提交工做項後,在領導審批的時候由於參與者爲空則會產生邏輯異常,這是工做流引擎會激發流程中的異常活動,經過異常活動的後繼活動完成用戶的異常補償工做。工作流
協同工做流引擎中的異常活動實例it
若是一個流程會產生多種不一樣的邏輯異常,咱們能夠經過異常活動的後繼轉移線來完成不一樣異常的補償工做。咱們包含如下幾種邏輯異常:變量
參與者表達式異常:設置參與者有誤產生的異常,好比參與者爲空。程序
條件表達式異常:設置轉移線表達式錯誤產生的異常。im
後繼條件不知足異常:流程流轉完成某個活動後,該活動的後繼轉移線的條件都不知足,會拋出後繼條件不知足異常。異常
調用應用程序出錯異常:在調用應用程序出錯時會產生該異常。img
參與者函數異常:流程運轉時,在調用用戶的自定義參與者函數時候產生的異常。vi
下面是異常活動的後繼轉移線條件的設置面板:工作
協同工做流引擎中的異常活動面板
若是須要對不一樣的活動產生的異常進行異常補償的話,能夠經過激發異常活動的活動定義ID這個變量(ActivityID)來進行區分。好比流程中活動A(活動ID爲1)和活動B(活動ID爲2)均可能產生異常,可是活動A和活動B要進行不一樣的異常補償。這時候能夠在異常補償活動後面設置兩條轉移線,經過ActivityID這個全局變量來設置轉移線條件,異常活動的轉移線條件和普通的轉移線條件設置方式相似。
本文來源:時光·協同