0

我正在通過父工作流程執行動態加載的子工作流程。當子工作流正在執行時,我想根據來自父工作流的用戶輸入來中止當前的子工作流並從動態加載的文件(.xaml)開始新的工作流。
我的父工作流是一個狀態機,它作爲一個服務公開,它有一個狀態,在狀態的輸入方法中執行另一個加載的子工作流(使用Microsoft.Activities.Extensions)。我希望子工作流根據觸發器。子工作流可以是狀態機或順序的。通過觸發器終止子工作流程

回答

3

有兩種方法可以中止工作流程。

  1. 主機WorkflowApplication
  2. 工作流本身可以使用終止活動

在你的情況,Microsoft.Activities.Extensions使用WorkflowInvoker調用工作流程,你不能放棄孩子的工作流程等等您唯一的選擇是讓子工作流程檢查某種「信號」是否在循環時終止。

這種「信號」可能是文件的存在,記錄在數據庫等

+0

我想要做的就是通過外部觸發(A WCF調用父流程)停止孩子的工作流程。假設我的子工作流程也是一個狀態機,並且我想將父狀態的狀態更改爲子工作流程中的最終狀態。那可能嗎? – 2012-03-07 22:18:50

+0

是的,這是可能的 - 但是您需要從每個想要退出的狀態轉換兩次。所以,假設你有幾個狀態,然後是最終狀態 - 在你需要能夠中止的每個狀態中,至少需要兩個觸發器。一個將在觸發器中有一個接收(這是您呼叫停止工作流程的入口點),其他則用於處理。但是,其他人必須執行一些將發出書籤的內容,以便接收到!所以我想在這裏與@RonJacobs的方法。 – 2012-03-08 13:21:02

+0

因爲Microsoft.Activities.Extensions使用WorkflowInvoker調用子工作流程,所以不能使用接收活動或書籤。子工作流必須是WorkflowInvoker可以運行的東西。如果你需要更復雜的東西,你將不得不創建基於WorkflowApplication的更高級的InvokeWorkflow版本 - 這會變得棘手。可能會更好地堅持父級工作流程和子級工作流程之間的消息傳遞。 – 2012-03-08 17:26:07