在流程建模的時候,定義好了返回的線路,這種嚴格來說,不是回退流。例如,審核不通過,則返回重新填寫,這種只是條件路由。
工作流的回退流,是流程例項在流轉的過程中,可以回退到執行軌跡的任意步驟,同時還可以輔助一些業務補償方法,使得回退時候的環境和原來執行時候的環境一樣。
所以回退流,和流程引擎支援的正常的路由方式是不一樣的,甚至是反流程建模的方式,流程建模就是把業務流程的各業務處理過程按一定的流轉方式建立起關聯。而回退流,是沒有規律的,當流轉到一定的步驟後,可以回退到任意的步驟。
當流程的流轉方式為順序流的時候,處理回退很簡單:
順序流:
當執行到最後乙個步驟時,可以選擇 回退到 前面的任意步驟。而不是按照流程定義的方式,接著往下執行。
實現過程:關閉當前執行的步驟--》轉入歷史步驟--》指定回退的步驟為當前可執行的步驟--》生成指定回退步驟的任務--》輔助執行業務補償類(可選的)
條件路由:
實現過程:和順序流的處理類似,當需要回退的時候,關閉當前的可執行步驟--》送入歷史步驟--》建立回退到的步驟為當前可執行步驟--》生成指定回退步驟的任務--》輔助執行業務補償類(可選的)
分支路由:
單層的分支:
當流轉到分支節點,產生併發的分支時
分支--回退到--分支,處理過程:關閉當前分支節點--》轉入歷史步驟--》回退到的分支節點步驟為當前可執行步驟--》生成指定回退到的步驟的任務--》輔助執行業務補償類(可選)
其它的分支不受影響。
分支--回退到--主幹,處理過程:關閉所有分支上的當前步驟--》轉入歷史步驟--》回退到的主幹節點步驟為當前可執行步驟--》生成指定回退到的步驟的任務--》輔助執行業務補償類(可選)。
所有分支都被關閉,回退到主幹節點上。
主幹--》回退到--分支,處理過程:關閉當前主幹上的當前步驟--》轉入歷史步驟--》回退到的分支節點步驟為當前可執行步驟--》生成指定回退到的步驟的任務--》輔助執行業務補償類(可選)
只生成回退到的分支節點為當前可執行步驟,其它並行節點不生成,當此分支執行完成,匯聚的時候,配合其它分支節點的歷史步驟的執**況,來滿足匯聚的條件。就如只有此回退到的分支需要重新執行一次,其它的分支不用重新執行。
多層的分支:
當有分支巢狀的時候,回退的處理又更加複雜
單層的分支--回退到--本分支,處理過程,同上面單層分支--分支。其它的分支均不受影響,只在本分支上面回退。
單層的分支--回退到--上層分支的主幹,處理過程:
遞迴出上層分支的所有下級分支節點
||關閉這些節點的所有當前步驟
||送入歷史步驟
||生成回退到的上層分支主幹的節點為當前步驟
||生成指定回退到步驟的任務
||輔助執行業務補償類(可選)
任意分支--回退到--主幹,處理過程:關閉所有的多層分支的當前步驟--》送入歷史步驟--》回退到的主幹節點步驟 為當前步驟--》生成指定步驟的任務--》輔助執行業務補償(可選)
這種回退處理比較清晰,關閉掉所有並行的一級分支,二級分支等等。
上層分支的主幹--回退到--任意分支步驟:
關閉分支主幹上的當前步驟--》送入歷史步驟--》生成回退到的分支節點步驟為當前步驟--》生成回退步驟的任務--》輔助業務補償(可選)
其它併發分支線不受影響。
主幹--回退到--任意分支:
只生成回退到的分支節點
處理過程:關閉主幹節點的當前步驟--》送入歷史步驟--》生成回退到的分支節點為當前步驟--》生成回退到步驟的任務--》輔助業務補償(可選)
其它分支線不受影響,取其它分支的歷史步驟 和 當前分支 步驟 匹配 匯聚節點的條件。就如同某分支需要重做,其它分支不需要重新處理。
工作流系統之三十五 自由流的實現
工作流系統在給業務流程建模的時候,按照流程引擎的設計,將業務流程定義出來。這個業務流程的每個流程例項,就按照流程建模時定義好的線路流轉。通常自由流是指向前的跳轉,回退流是回退到曾經執行過的軌跡。向前跳轉會略過一些節點,不執行,直接到達新的節點。回退流是回到原來的軌跡,再重新執行,對應重做 撤回 的功...
2 工作流的實現
首先再次說明一下我的想法 根據 1 幾天狂想的成果 工作流的定義與模型 對工作流的描述 workflow step step steps branches waits branch wait 為了便於實現,進一步抽象出 action作為乙個動作,它執行乙個動作並返回乙個結果。乙個步驟也是乙個動作,但...
工作流系統的設計與實現 1 0
i系統設計 5 1 概述 5 2 介紹 15 2.1 工作流歷史與發展 15 2.2 術語定義 wfmc 16 2.3 工作流模式說明 25 3 引擎設計 74 3.1 工作流物件狀態 74 3.2 三層狀態關係 75 3.3 過程推進 76 ii系統實現 84 4 系統定位 84 4.1 web應...