WorkflowRuntime.AddService(Object) 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.
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).
O WorkflowRuntime é descartado.
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.