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,将不会执行任何操作。

适用于