WorkflowRuntime.StartRuntime Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
O WorkflowRuntime é descartado.
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.