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
является неопределенной ссылкой (Nothing
в Visual Basic).
Объект WorkflowRuntime удален.
Служба 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. Основные службы можно добавлять только в том случае, если подсистема времени выполнения рабочего процесса не запущена; то есть, когда IsStarted есть false
. Объект WorkflowRuntime также можно использовать в качестве контейнера для хранения других служб, которые могут использоваться другими рабочими процессами или приложениями, выполняемыми на узле. При добавлении небазовой службы, производной от класса WorkflowRuntimeService, после запуска механизма среды выполнения рабочих процессов, метод AddService вызывает метод Start, реализованный данной службой.
Примечание
Метод AddService накладывает ограничение, запрещающее добавлять несколько служб одного типа Type к объекту WorkflowRuntime. Однако можно добавлять несколько служб, производных от одного базового класса. В объекте WorkflowRuntime может быть только по одной службе, производной от каждого из следующих базовых классов служб: WorkflowSchedulerService, WorkflowCommitWorkBatchService и WorkflowPersistenceService. При добавлении нескольких служб, производных от одного из этих классов, например двух служб сохраняемости, метод StartRuntime вызовет исключение InvalidOperationException.