2010-08-24 62 views
3

我有一個.Net 4.0 Workflow應用程序託管在WCF中,它接受請求來處理一些信息。該信息通過Web服務傳遞給輔助系統,並返回一個布爾值,指示它將處理該信息。清單目前在.Net 4.0中運行的工作流程

我的工作流程然後循環,休眠5分鐘,然後查詢輔助系統以查看信息處理是否完成。

完成工作流完成後。

我有這個持久化在SQL中,它完美的作品。

我的問題是如何以這種方式檢索持久化工作流的列表,以便將它們綁回原始請​​求?我希望我的用戶界面能夠使用已運行的時間在網格中列出正在運行的工作流。

我想過在我的主數據庫中存儲工作流GUID並以這種方式生成列表,但我真正想要的是能夠協調我認爲正在運行的內容以及持久性存儲所認爲的內容運行。

我也希望能夠選擇一個正在運行的工作流程,並將其關閉或完全重新啓動它,如果用戶確定它已經擰緊了。

回答

3

您可以使用SqlWorkflowInstanceStore從工作流中獲取數據promote。結果是它們使用InstancePromotedPropertiesTable存儲在InstancesTable中的工作流數據旁邊。使用InstancePromotedProperties視圖是查詢數據的最簡單方法。

This博客文章會告訴你你需要的代碼。

0

另一種選擇是使用WorkflowRuntime GetAllServices()。 然後你可以遍歷每一個來提取你需要的數據。我會緩存結果,因爲這可能是一個昂貴的操作。如果您只有100個或更少的運行工作流程,並且您的頁面上只有少數用戶,請不要打擾緩存。

這樣您就不必創建DAL或Repo圖層。特別是如果你正在使用sql進行持久化。

http://msdn.microsoft.com/en-us/library/ms594874(v=vs.100).aspx

相關問題