Partilhar via


WorkflowRuntime.StartRuntime Método

Definição

Inicia o mecanismo de tempo de execução de fluxo de trabalho e os serviços do mecanismo de tempo de execução de fluxo de trabalho.

public:
 void StartRuntime();
public void StartRuntime ();
member this.StartRuntime : unit -> unit
Public Sub StartRuntime ()

Exceções

Há mais de um serviço CommitWorkBatch de fluxo de trabalho de serviço registrado com este WorkflowRuntime.

- ou -

Há mais de um serviço de agendador registrado com este WorkflowRuntime.

- ou -

Há mais de um serviço de persistência registrado com este WorkflowRuntime.

Exemplos

O exemplo de código a seguir demonstra como usar WorkflowRuntime a funcionalidade de um host de fluxo de trabalho. O código chama o StartRuntime depois WorkflowRuntime de criar uma WorkflowRuntime instância e depois de chamar AddService para adicionar serviços ao runtime. Ele também chama StartRuntime antes que qualquer outro processamento ocorra.

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

Esse método verifica se existe um conjunto válido de serviços principais e inicia todos os serviços derivados da WorkflowRuntimeService classe . Deve haver um e apenas um dos seguintes serviços principais: um serviço de fluxo CommitWorkBatch de trabalho derivado da WorkflowCommitWorkBatchService classe base e um serviço de agendador derivado da WorkflowSchedulerService classe base. Se um ou ambos os serviços principais estiverem ausentes, o mecanismo de tempo de execução do fluxo de trabalho fornecerá o serviço padrão apropriado: DefaultWorkflowCommitWorkBatchService para o serviço de fluxo de CommitWorkBatch trabalho e DefaultWorkflowSchedulerService para o serviço agendador. Um serviço de persistência é opcional, mas pode haver no máximo apenas um serviço de persistência presente. Depois de validar a configuração do serviço, StartRuntime chama Start todos os serviços derivados da WorkflowRuntimeService classe . Por fim, o mecanismo de tempo de execução do fluxo de trabalho define IsStarted e aciona o Started evento.

Não é possível adicionar ou remover os principais serviços depois que o mecanismo de tempo de execução do fluxo de trabalho for iniciado. Os principais serviços são serviços que derivam da WorkflowSchedulerService classe, da WorkflowCommitWorkBatchService classe, da WorkflowPersistenceService classe ou da TrackingService classe . Se você chamar StartRuntime enquanto o mecanismo de tempo de execução do fluxo de trabalho estiver em execução, nenhuma ação será executada.

Aplica-se a