Compartir vía


WorkflowRuntime.AddService(Object) Método

Definición

Agrega el servicio especificado al motor en tiempo de ejecución de flujo de trabajo.

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

Parámetros

service
Object

Objeto que representa el servicio que se va añadir.

Excepciones

service es una referencia nula (Nothing en Visual Basic).

service ya se registró con el motor en tiempo de ejecución de flujo de trabajo.

O bien service es un servicio central y el motor en tiempo de ejecución de flujo de trabajo ya está en ejecución (IsStarted es true).

Ejemplos

El ejemplo de código siguiente muestra cómo se puede utilizar la funcionalidad WorkflowRuntime desde un host del flujo de trabajo. Proporciona ejemplo de cómo utilizar el método AddService para agregar ExternalDataExchangeService y SqlWorkflowPersistenceService al motor en tiempo de ejecución de flujo de trabajo.

Este ejemplo de código forma parte del ejemplo De cancelación de un flujo de trabajo .

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

Comentarios

Puede configurar el motor en tiempo de ejecución de flujo de trabajo agregando servicios centrales. Los servicios centrales son los que derivan de cualquiera de las clases base de servicio siguientes: la clase WorkflowSchedulerService, la clase WorkflowCommitWorkBatchService, la clase WorkflowPersistenceService y la clase TrackingService. Los servicios principales solo se pueden agregar cuando el motor en tiempo de ejecución del flujo de trabajo no se está ejecutando; es decir, cuando IsStarted es false. WorkflowRuntime también se puede utilizar como contenedor de almacenamiento para otros servicios que pueden ser utilizados por otros flujos de trabajo o por aplicaciones en ejecución en un host. Si agrega un servicio no central derivado de la clase WorkflowRuntimeService después de que el motor en tiempo de ejecución del flujo de trabajo se haya iniciado, AddService llamará al método Start implementado por ese servicio.

Nota

AddServiceaplica la restricción de que no se pueden agregar dos servicios del mismo Type a .WorkflowRuntime Sin embargo, puede agregar varios servicios que derivan de la misma clase base. Puede haber sólo uno servicio derivado de cada una de las clases base de servicio siguientes en WorkflowRuntime: la clase WorkflowSchedulerService, la clase WorkflowCommitWorkBatchService y la clase WorkflowPersistenceService. Si agrega varios servicios derivados de una de estas clases, por ejemplo, dos servicios de persistencia, StartRuntime lanzará un InvalidOperationException.

Se aplica a