WorkflowRuntime.AddService(Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将指定的服务添加到工作流运行时引擎中。
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
为核心服务,且工作流运行时引擎已运行(此时 IsStarted 为true
)。
示例
下面的代码示例演示如何使用工作流宿主中的 WorkflowRuntime 功能。 它提供了有关如何使用 AddService 方法向工作流运行时引擎添加 ExternalDataExchangeService 和 SqlWorkflowPersistenceService 的示例。
此代码示例是 取消工作流 示例的一部分。
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。