Partilhar via


WorkflowRuntime.AddService(Object) Método

Definição

Adiciona o serviço especificado ao mecanismo de tempo de execução do fluxo de trabalho.

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

Um objeto que representa o serviço a ser adicionado.

Exceções

service é uma referência nula (Nothing no Visual Basic).

service já está registrado com o mecanismo de tempo de execução do fluxo de trabalho.

- ou - service é um serviço principal e o mecanismo de tempo de execução do fluxo de trabalho já está em execução (IsStarted é true).

Exemplos

O exemplo de código a seguir demonstra como usar WorkflowRuntime a funcionalidade de um host de fluxo de trabalho. Ele fornece um exemplo de como usar o AddService método para adicionar um mecanismo de tempo de execução ExternalDataExchangeService e SqlWorkflowPersistenceService de fluxo de trabalho.

Este exemplo de código faz parte do exemplo cancelando um fluxo de trabalho .

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

Comentários

Você pode configurar o mecanismo de tempo de execução do fluxo de trabalho adicionando serviços principais. Os principais serviços são aqueles que derivam de qualquer uma das seguintes classes base de serviço: a WorkflowSchedulerService classe, a WorkflowCommitWorkBatchService classe, a WorkflowPersistenceService classe e a TrackingService classe. Os principais serviços só podem ser adicionados quando o mecanismo de tempo de execução do fluxo de trabalho não estiver em execução; ou seja, quando IsStarted é false. O WorkflowRuntime também pode ser usado como um contêiner de armazenamento para outros serviços que podem ser usados por outros fluxos de trabalho ou por aplicativos em execução em um host. Se você adicionar um serviço não core que deriva da classe após o WorkflowRuntimeService mecanismo de tempo de execução do fluxo de trabalho ter sido iniciado, AddService chamará o Start método implementado por esse serviço.

Observação

AddService impõe a restrição de que nenhum dos dois serviços do mesmo Type pode ser adicionado ao WorkflowRuntime. No entanto, você pode adicionar vários serviços que derivam da mesma classe base. Pode haver apenas um serviço derivado de cada uma das seguintes classes base de serviço na classe: a WorkflowRuntimeWorkflowSchedulerService classe, a WorkflowCommitWorkBatchService classe e a WorkflowPersistenceService classe. Se você adicionar vários serviços derivados de uma dessas classes, por exemplo, dois serviços de persistência, StartRuntime gerará um InvalidOperationException.

Aplica-se a