天天看點

堅持學習WF文章索引

本文主要通過實作了一個可以接受參數的HelloWorld程式來了解WF。 

2.3兩篇主要全面的闡述了WF架構和Visual Studio對開發WF的一些設計時的工具。 

4.5兩篇對主要對活動(Actibity)的介紹和依賴屬性(DependencyObject)和DependencyProperty事件的使用。 

主要實作兩個類來對WorkflowInstance和WorkflowRuntime進行簡單的封裝。 

主要說了WF中和流程相關的活動,主要包括以下這些活動:IfElseActivity,WhileActivity,ParallelActivity,ReplicatorActivity,ConditionedActivityGroup,InvokeWorkflowActivity,TerminateActivity,SuspendActivity等。 

工作流能夠使用方法和事件通過消息與宿主程式互動。 事件用于将資料發送到工作流,而工作流使用方法将資料發送到主機應用程式,8.9兩篇主要說了本地服務如何調用外部方法和接收事件。

當工作流執行個體在本地服務接口上偵聽相同僚件的不同執行個體時,就無法确定該響應哪個事件。如何解決這個問題呢,我們就需要在工作流中使用關聯。

WF 提供的通信模型是建構于隊列系統的基礎之上,我們可以使用自定義活動來注冊以接收關于隊列的消息,而宿主應用程式中的服務則發送關于隊列的消息。自定義活動可以使用此模型來處理外部事件,也可以傳遞異步活動執行的完成。這樣,您的活動可以先執行到某一點,然後等待激發因素的到來以便繼續執行。

EventHandlingScopeActivity活動包含一個主線子活動和一組事件處理活動(EventHandlersActivity),它的主線子活動中隻能包含一個子活動。它會執行其主子活動比如SequenceActivity。 同時,可能會執行每個EventDrivenActivity,也可能不執行它們,這取決于在SequenceActivity 活動執行時是否發生了它們的事件,當主線活動執行完了整個EventHandlingScopeActivity活動也就結束了。

主要介紹了如何使用WF中提供的SqlWorkflowPersistenceService來進行持久化存儲。

我們除了使用WF提供的SqlWorkflowPersistenceService外,還可以自定義持久化服務。因為有的時候你可能不想使用Sql Server資料庫,我們就可以通過自定義持久化服務來使用其他的資料庫,檔案等來進行持久化存儲。 

本文主要介紹WF中狀态機工作流的基礎知識,狀态機工作流和順序型工作流不同。順序型工作流一般是比較固定的,可預測的,和系統互動的時候比較多。而狀态機工作流一般是不可預測,和人的互動會比較多一些,一般有回退流程的時候使用狀态機工作流會比較好一點,如何正确的選擇順序型工作流還是狀态機工作流是十分重要的。

在關系型資料庫中支援事務已經有10幾年了,事務用來解決資料的完整性、一緻性等等問題。在WF中提供了TransactionScopeActivity活動用來支援事務,當該活動執行時一個System.Transactions.Transaction執行個體就被建立了,如果TransactionScopeActivity中的子活動有一個有異常,就會執行復原操作。

事務是你在做一組更新時要不成功,要不失敗,不可能隻部分更新。事務最經典的使用場合就是在關系型資料庫中。補償是取消之前已經成功的操作,在我們的工作流中我們可能完成一項任務有很多活動組成,比如我們的活動都使用了TransactionScopeActivity,我們在之後發現錯誤了,想要取消之前成功的操作,這個和事務就沒有關系了,因為事務已經成功了。這個時候我們就可以使用補償。 

WF會定期在各個持久性點(Persistence Point)檢查并将工作流執行個體儲存到持久化存儲中,這樣如果工作流出現錯誤或是異常終止時相關的資訊就會被存儲,下次加載工作流執行個體時就會從此做為開始點。這個主要是針對工作内置的服務。工作流的外部服務使用工作批次來保留狀态資訊。 這些服務對其工作項進行批處理并共享與工作流的事務相同的事務。 如果工作流尚未送出事務,則服務仍可以在持久點期間對某些工作項進行批處理。WF提供 IWorkBatch 和 IPendingWork 以幫助服務和工作流執行個體保留狀态資訊。 

<a href="http://www.cnblogs.com/carysun/archive/2008/09/07/1286153.html">堅持學習WF(19):工作流線程</a>

WF中提供了很多内置的服務,其中工作流計劃服務是用來管理工作流執行個體線程的。預設情況下WF會自動使用DefaultWorkflowSchedulerService服務,我們還可以手動去加載ManualWorkflowSchedulerService服務。本文利用MSDN中的一個例子來說明工作流中的線程以及如何使用DefaultWorkflowSchedulerService和ManualWorkflowSchedulerService服務。

<a href="http://www.cnblogs.com/carysun/archive/2008/09/21/RuleSet.html">堅持學習WF(21):規則引擎中的RuleSet</a>

WF提供了非常靈活,強大和簡單易懂的規則引擎。這幾篇文章介紹了WF中規則引擎的相關知識。

說明了WF如果捕獲和處理異常,并介紹了CancellationHandlerActivity活動的基本使用。

更新:今天弄了下skydrive,把最新的Pro WF Windows Workflow in .NET3.5的随書代碼放了上去,文中部分例子來源此書。大家去下面的位址下載下傳吧。

<a href="http://cid-55bd0af403d6b60a.skydrive.live.com/self.aspx/.Public/Pro%7C_WF%7C_Windows%7C_Workflow%7C_in%7C_NET%7C_3%7C_5-4020.zip">http://cid-55bd0af403d6b60a.skydrive.live.com/self.aspx/.Public/Pro%7C_WF%7C_Windows%7C_Workflow%7C_in%7C_NET%7C_3%7C_5-4020.zip</a>

本文轉自生魚片部落格園部落格,原文連結:http://www.cnblogs.com/carysun/archive/2008/10/21/WF.html,如需轉載請自行聯系原作者