2009-11-13 23 views

回答

0

無法將運行時配置爲限制正在進行的工作流的數量。

儘管它的工作流量本身負責控制流程的責任。因此,工作流本身應該有方法來確定其自身的另一個實例是否正在進行中。

我會考慮創建一個活動,它會事務性地嘗試更新數據庫記錄,以使該工作流的實例正在進行中。如果它發現另一個正在進行中,它可以採取適當的行動。它可能會失敗,或者它可以使用EventActivity排隊,以便在以前的工作流程完成時發出警報。

+0

謝謝。這應該完美。 – Brian 2009-11-13 17:20:54

0

您可能需要在工作流啓動時檢查另一個正在運行的實例。 如果找到,取消它。

+0

我想要做的是排隊他們。如果兩個工作流同時啓動,這會產生併發問題,因爲兩者都可能發現它們是唯一正在運行的問題。這看起來確實需要在工作流運行時級別進行處理,但我不知道如何在wcf服務中託管時完成該任務。 – Brian 2009-11-13 17:10:13

0

我不同意這需要在WorkflowRuntime級別進行處理。我喜歡自定義Activity的想法,類似於具有DB後端的CompositeActivity的MutexActivity。第一次執行會記錄到它擁有互斥量的數據庫。隨後的調用將排隊他們的工作流ID,然後閒置。當MutexActivity完成時,它將釋放互斥鎖,加載隊列中的下一個工作流並調用包含的子活動。

相關問題