WorkflowRuntime.AddService(Object) 方法

定义

将指定的服务添加到工作流运行时引擎中。

public:
 void AddService(System::Object ^ service);
public void AddService (object service);
member this.AddService : obj -> unit
Public Sub AddService (service As Object)

参数

service
Object

一个对象,表示要添加服务。

例外

service 为空引用(在 Visual Basic 中为 Nothing)。

service 已向工作流运行时引擎注册。

  • 或 - service 为核心服务,且工作流运行时引擎已运行(此时 IsStartedtrue)。

示例

下面的代码示例演示如何使用工作流宿主中的 WorkflowRuntime 功能。 它提供了有关如何使用 AddService 方法向工作流运行时引擎添加 ExternalDataExchangeServiceSqlWorkflowPersistenceService 的示例。

此代码示例是 取消工作流 示例的一部分。

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

注解

通过添加核心服务可以配置工作流运行时引擎。 核心服务是派生自以下任一服务基类的服务:WorkflowSchedulerService 类、WorkflowCommitWorkBatchService 类、WorkflowPersistenceService 类和 TrackingService 类。 仅当工作流运行时引擎未运行时,才能添加核心服务;也就是说,何时IsStartedfalse为 。 WorkflowRuntime 也可以用作存储其他服务的容器,其他工作流或宿主上运行的应用程序可能会使用这些服务。 如果您在工作流运行时引擎启动后添加派生自 WorkflowRuntimeService 类的非核心服务,则 AddService 将会调用该服务实现的 Start 方法。

备注

AddService 有一些限制,即不能将同一 Type 的两个服务添加到 WorkflowRuntime。 但是,您可以添加派生自相同基类的多个服务。 从 WorkflowRuntime 中的以下每个服务基类只能派生一个服务:WorkflowSchedulerService 类、WorkflowCommitWorkBatchService 类和 WorkflowPersistenceService 类。 如果您添加了派生自其中一个类的多个服务(例如两个持久性服务),则 StartRuntime 将引发 InvalidOperationException

适用于