工作流回退模式分析

2021-04-18 12:20:32 字數 1637 閱讀 8986

回退(rollback workitem)

回退是工作流參與者對自己「待辦任務」(實際是對工作項)的一種操作,即參與者主動回退待辦任務列表中的任務到已經執行過的人工節點。

為什麼要回退?

參與者接受任務後,發現不應由自己辦理此任務或以前的執行者辦理有錯誤等情況後,需要將此接受的任務回退給以前某個節點的執行者重新辦理。

回退模式

回退的情況實際上是非常複雜的,其中包括了參與者的重新選擇以及回退的條件判斷等等。這裡先列出常見的回退模式(其實也是我們支援的模式)。

序列

這種情況最為簡單,後續節點可以回退到前續任意人工節點。回退後,節點重走。

分支

這種情況也相對簡單,實際執行的分支上的節點可以回退到前續任意人工節點(不區分主支和分支)。同樣,主支上的節點也可以回退到任意實際執行的分支上的節點。

可能的問題:多次回退後的回退節點擊擇。例如:第一次流程經過節點2、節點3到達節點5, 節點5可以回退到節點1、節點2和節點3的任意乙個,此時節點5回退到節點1,節點1重走,這一次流程改為經過節點4到達節點5,節點5回退時如何選擇回 退節點?此時的策略是以最近實際執行的分支為準,即節點5只允許回退到節點4和節點1,不允許回退到節點2和節點3。(抹去記憶)

併發

對於併發的情況,分支節點只允許在分支的節點間回退。

同理,主支節點也只允許在主支的節點間回退。

多例項匯聚

在這種情況下,節點5會產生2個例項,實際相當於繼續併發。節點5根據具體哪個節點觸發的它而產生回退節點。同時不允許回退到節點1以及前續的節點去。

子流程

支援子流程到父流程的回退,也支援父流程到子流程節點的回退。需要注意的是子流程節點有可能產生多個子流程例項,在這種情況下不支援父子流程之間的相互回退。

回退節點的參與者選擇

預設策略是由原先節點的實際參與者重新處理,比如節點2回退到節點1,則節點1的實際參與者重新處理該節點任務。這也符合大多數實際的業務場景。

在節點任務競爭參與的情況下,提供另一種策略,即讓人員重新競爭。

回退的條件判斷

對於多人(或者多部門,使用者)參與的工作項,提供不同的回退策略

任意人回退即回退,剩餘工作項手工終止

最後提交人回退才回退

流程定義期定義該策略。

另外流程定義時提供節點可回退列表,由使用者在定義期對可回退的節點進行限制。

關於業務補償

業務補償是乙個很重要的概念,在回退的情況下需要相應的回退部分業務操作。這裡由引擎提供統一的介面,返回回退路徑,由客戶自定義**進行匹配處理。

關於實現

很多任務作流引擎通過流程定義時繪出回退線來顯式的支援回退,這種實現在業務複雜的情況下會造成流程圖的異常煩瑣,但是比較清晰,實現比較容易。隱式實現相比而言優點更多。

工作流回退模式分析

回退 rollback workitem 回退是工作流參與者對自己 待辦任務 實際是對工作項 的一種操作,即參與者主動回退待辦任務列表中的任務到已經執行過的人工節點。為什麼要回退?參與者接受任務後,發現不應由自己辦理此任務或以前的執行者辦理有錯誤等情況後,需要將此接受的任務回退給以前某個節點的執行者...

工作流模式

工作流模式 工作流原理上有很多特定模式,可以用於工作流過程建模和分析。在研究工作流引擎時,這些是必不可少知識儲備 基本模式 5個 1 順序模式 按照順序執行各項活動,工作流流程中的乙個活動只有當另乙個活動完成後才能進行。如 當訂單登記活動完成後,客戶通知才可以進行。2 並行分支模式 同時執行兩個活動...

工作流模式

工作流原理上有很多特定模式,可以用於工作流過程建模和分析。在研究工作流引擎時,這些是必不可少知識儲備 基本模式 5個 1 順序模式 按照順序執行各項活動,工作流流程中的乙個活動只有當另乙個活動完成後才能進行。如 當訂單登記活動完成後,客戶通知才可以進行。2 並行分支模式 同時執行兩個活動。在流程中的...