WorkflowRuntime.StartRuntime 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
啟動工作流程執行階段引擎和工作流程執行階段引擎服務。
public:
void StartRuntime();
public void StartRuntime ();
member this.StartRuntime : unit -> unit
Public Sub StartRuntime ()
例外狀況
有一個以上的服務工作流程 CommitWorkBatch
服務已向此 WorkflowRuntime 註冊。
-或-
有一個以上的排程器服務已向此 WorkflowRuntime 註冊。
-或-
有一個以上的持續性服務已向此 WorkflowRuntime 註冊。
範例
下列程式碼範例示範如何從工作流程主機使用 WorkflowRuntime 功能。 程式碼在 StartRuntime 建立 WorkflowRuntime 執行個體,並且在它呼叫 WorkflowRuntime 以加入服務到執行階段中後呼叫 AddService。 它也會在發生任何其他處理之前呼叫 StartRuntime。
此程式碼範例是 取消工作流程 範例的一部分。
static void Main()
{
string connectionString = "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;";
using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
ExternalDataExchangeService dataService = new ExternalDataExchangeService();
workflowRuntime.AddService(dataService);
dataService.AddService(expenseService);
workflowRuntime.AddService(new SqlWorkflowPersistenceService(connectionString));
workflowRuntime.StartRuntime();
workflowRuntime.WorkflowCompleted += OnWorkflowCompleted;
workflowRuntime.WorkflowTerminated += OnWorkflowTerminated;
workflowRuntime.WorkflowIdled += OnWorkflowIdled;
workflowRuntime.WorkflowAborted += OnWorkflowAborted;
Type type = typeof(SampleWorkflow1);
WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(type);
workflowInstance.Start();
waitHandle.WaitOne();
workflowRuntime.StopRuntime();
}
}
Shared Sub Main()
Dim connectionString As String = "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;"
Using workflowRuntime As New WorkflowRuntime()
Dim dataService As New ExternalDataExchangeService()
workflowRuntime.AddService(dataService)
dataService.AddService(expenseService)
workflowRuntime.AddService(New SqlWorkflowPersistenceService(connectionString))
AddHandler workflowRuntime.WorkflowCompleted, AddressOf OnWorkflowCompleted
AddHandler workflowRuntime.WorkflowTerminated, AddressOf OnWorkflowTerminated
AddHandler workflowRuntime.WorkflowIdled, AddressOf OnWorkflowIdled
AddHandler workflowRuntime.WorkflowAborted, AddressOf OnWorkflowAborted
Dim workflowInstance As WorkflowInstance
workflowInstance = workflowRuntime.CreateWorkflow(GetType(SampleWorkflow))
workflowInstance.Start()
waitHandle.WaitOne()
workflowRuntime.StopRuntime()
End Using
End Sub
備註
這個方法會確認有一組有效的核心服務存在,然後啟動任何衍生自 WorkflowRuntimeService 類別的服務。 下列每個核心服務都必須有一個且只有一個:衍生自 WorkflowCommitWorkBatchService 基類的工作流程 CommitWorkBatch
服務,以及衍生自基類的 WorkflowSchedulerService 排程器服務。 如果遺漏或兩個核心服務,工作流程執行時間引擎會提供適當的預設服務: DefaultWorkflowCommitWorkBatchService 工作流程 CommitWorkBatch
服務和 DefaultWorkflowSchedulerService 排程器服務。 持續性服務是選用的服務,而且最多只能有一個持續性服務。 驗證服務組態後,StartRuntime 會呼叫所有衍生自 Start 類別之服務上的 WorkflowRuntimeService。 最後,工作流程執行階段引擎會設定 IsStarted 並引發 Started 事件。
工作流程執行階段引擎啟動後,無法加入或移除核心服務。 核心服務是衍生自 WorkflowSchedulerService 類別、WorkflowCommitWorkBatchService 類別、WorkflowPersistenceService 類別和 TrackingService 類別的服務。 如果您在工作流程執行階段引擎執行時呼叫 StartRuntime,則不會執行任何動作。