2009-12-06 57 views
1

除了訂閱WorkfloRuntime的WorkflowCompleted事件外,如何從主機確定工作流實例是否已經完成調試?是否有任何標誌或狀態可以檢查給定的WorflowInstance以確定它是否已完成?WF:確定工作流程是否已完成

@編輯:問題是關於順序工作流程。

回答

0

答案(至少從我所瞭解的知道來看)是沒有與WorkflowInstance關聯的標誌,您可以爲給定實例檢索指示實例是否已完成的標誌。

可用兩種方法是:

  1. WorkflowRuntime.WorkflowCompleted Event

  2. 使用TrackingService服務保持工作流執行的「登錄」和quering日誌以destermine如果一個工作流實例已經完成。這是一個good introductory article。通過這種方法,唯一可用的TrackingService的現成實現是SqlTrackingService,它需要SQL Server數據庫。然後,您可以使用SqlTrackingQuery查詢「登錄」

注: SqlTrackingService的行爲的一個有趣的方面是它會默認不立刻把它寫在運行時接收到消息數據庫,但只在交易結束時。此行爲由SqlTrackingService的IsTransactional屬性控制。

1

您可以檢查TrackingServices以瞭解工作流實例的當前狀態。

這裏有一些代碼片段:.NET 3.0 State Machines In Windows Workflow

+0

感謝您的幫助!從我所看到的'完全'檢查可以使用TrackingService實現,但僅用於此目的,看起來有點麻煩,甚至比事件方法還要多。而且這兩種方法看起來很相似,因爲您必須事先進行亞文化,您不能只抓取任意的工作流實例並獲取其狀態。但是,如果它的工作和世界自然基金會這樣設計,它不應該是一個問題。我只是好奇爲什麼WorkfloInstance本身沒有那麼多的信息,應該有一個原因 – axk

+0

另一個選擇是使用'System.Workflow.Activities.StateMachineWorkflowInstance'結合'WorkflowInstance.GetWorkflowDefinition()'來判斷是否smwi。 CurrentState'是最終狀態。 –