WorkflowRuntime.StartRuntime 方法

定義

啟動工作流程執行階段引擎和工作流程執行階段引擎服務。

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,則不會執行任何動作。

適用於