2012-07-17 23 views
1

幾年前(WF存在之前)我開發了一個自定義工作流引擎。它的工作方式如下:設計一個工作流程(稱爲定義),將特定類型的工作項目與該定義相關聯(例如:工作流程定義X流程小部件),並通過創建一個實例來處理該工作項目的各種狀態和轉換每個工作項目的定義。在Windows Workflow(WF)中,「工作項」的概念是如何表達的?

該工作項目實現了一個IWorkItem接口,該接口允許它作爲一種狀態機進行處理(例如,它具有當前狀態和一組方法,如Run,Stop,Pause等來控制它)。

在Windows工作流程中,您如何定義工作項目?它可以是一個在我的SQL Server數據庫中建模的自定義實體嗎?我必須給它任何特定的領域嗎?在我的代碼中代表它的對象是否必須實現特定的接口?它如何對基礎行數據的持久性/持久性做出反應?我如何輕鬆查詢數據庫以獲取我的實體狀態?

回答

1

WF中的工作項是工作流本身,它由「活動」組成(可以內置或通過派生自.net活動類型自定義),還可以添加擴展支持持久性,跟蹤等Here是一個很好的框架介紹

在我個人的經驗中,我讀了一本書,因爲當時,MSFT文檔對於WF4來說並不好,但現在看起來好多了。我已經能夠建立一個工作流程來模擬我辦公室的銷售流程,銷售人員使用一個Silverlight客戶端連接到一個WCF服務,該服務反過來提供存儲在我的持久性表中的數據。使用工作流服務來管理工作流的新實例d將現有實例保留回SQL DB。就查詢現有實例而言,這非常簡單。在我的情況下,我安裝了MSFT提供的實例存儲數據庫,並且我簡單地查詢了它們提供的其中一個表。

+0

我們假設在工作流程中正在處理的項目是一加侖牛奶。我有一個牛奶桌,有carton_type,milk_id,exp_date等屬性。我想跟蹤一段時間以後某個加侖的進度。它可能有可能的狀態,如過期,消耗等。你能給我一些關於如何使用工作流程跟蹤這個對象/行的信息嗎? – udog 2012-07-18 01:15:44

+0

您需要閱讀關於工作流持久性,更具體地說,您可以如何推廣屬性。使用你的例子,假設你已經安裝了提供的持久化數據庫,你可以提升你的牛奶的屬性,你可以在SQL的System.Activities.DurableInstancing.InstancePromotedProperties視圖中查詢。您可以編寫一個查詢來返回僅在2天內過期的牛奶,假設您已提升加侖的到期日期。 [這](http://msdn.microsoft.com/en-us/library/ee364726(VS.100).aspx)網站應該對你有所幫助 – Thelonias 2012-07-18 03:38:43

+0

這是一個很好的開始,謝謝瑞安。 – udog 2012-07-18 22:00:43

相關問題