WF4實現工作流駁回流轉模型的幾種設計方案

2021-09-22 12:10:32 字數 1292 閱讀 4836

wf4是微軟最新的工作流框架,其中我們可以實現順序型的和flowchart的工作流,利用flowchart我們可以實現複雜的流轉,本文就討論一下關於wf4實現工作流流轉中乙個很普通的模型—駁回的設計。

先說說駁回的流轉模型,乙個流程會有很多節點,每個節點都可以做核可和駁回的動作,在駁回的時候就有幾種方式,最常見的駁回到申請者或者駁回到前一節點。而駁回後重新呈現的流程也幾種方式,一種是同正常核可流程,另一種是回到駁回者。

下面是幾種設計方案:

方案一:利用流程圖直接設計

上面的圖可以實現駁回的設計,但是有乙個缺點,就是當節點過多的時候flowdecision的判斷也非常多,會讓流程圖看起來很亂,基於這個我做了如下的改進,圖如下:

這種方式我將所有需要審核的節點放到乙個審核流程的活動中,作為其子活動,審核流程在執行其子活動時如果遇到駁回的就不再繼續向下執行,退出該活動,將單據設定為駁回狀態,然後在使用flowdecision進行判斷,這就解決了上面的問題,當然審核流程這些都是您要自定義開發的活動。

方案二:操作持久化資料

我們在工作流需要審核的時候會設定乙個bookmark等待審核者作出處理,這個時候工作流就進入idle狀態,進行持久化。我們將每次持久化的資料都備份起來,當駁回的時候將原備份的持久化恢復,工作流自然就回退了。通過我測試發現這種方式不太穩定,大家可以測試下。

方案三:維護狀態資訊

wf4本身的工作流有一組狀態資訊,不過我們一般在使用的時候都會在維護一組狀態資訊,基於此我只要維護好自己的狀態也可以實現駁回。這個時候wf的工作流就是輔助作用,在駁回的時候可以有兩種方式處理,一種是駁回後重送的流程同核可的流程時可以直接終止或結束當前工作流,重新送出時在新建乙個流程例項,另一種就是駁回後重送回到駁回者時wf的工作流當前的bookmark不做任何更改,只去更新我們自己的狀態資訊,重送後核可恢復bookmark流程繼續向下執行。

方案四:狀態機!狀態機

個人認為這種方式是最好的實現方式,可惜的是wf4目前還沒有狀態機模型,不過這裡有乙個好訊息,就是小道訊息得知wf4的狀態機快要放出來了,下面是我唯一能找到的一張:

WF4實現工作流駁回流轉模型的幾種設計方案

wf4是微軟最新的工作流框架,其中我們可以實現順序型的和flowchart的工作流,利用flowchart我們可以實現複雜的流轉,本文就討論一下關於wf4實現工作流流轉中乙個很普通的模型 駁回的設計。先說說駁回的流轉模型,乙個流程會有很多節點,每個節點都可以做核可和駁回的動作,在駁回的時候就有幾種方...

工作流學習 WF小結

繼承sequentialworkflowactivity,叫做workflow 實現 executecode 建乙個whileactivity,會自動包含上面的workflow 在console workflowinstance instance workflowruntime.creatework...

工作流 WF 程式設計入門

一 wf基礎 簡介 wf 被用於簡化和爭強 net 應用程式開發,wf不是乙個獨立的開發環境,它提供了一套用於輔助工作流的開發框架。特點 wf 的執行時引擎 wf支援順序工作流 狀態機工作流和資料驅動工作流,並且支援工作流的持久化,wf支援使用特定領域模型解決問題,可以開發自己的活動元件,來引入對特...