Ponto de extremidade de controle de fluxo de trabalho
O ponto de extremidade de controle de fluxo de trabalho permite que os desenvolvedores chamem operações de controle para controlar remotamente instâncias de fluxo de trabalho hospedadas usando WorkflowServiceHost. Esse recurso pode ser usado para executar programaticamente operações de controle como suspensão, retomada e encerramento.
Aviso
Se você estiver usando o ponto de extremidade de controle de fluxo de trabalho em uma transação e o fluxo de trabalho controlado contiver uma atividade Persist, a instância de fluxo de trabalho será bloqueada até que a transação atinja o tempo limite.
Gerenciamento de instância de fluxo de trabalho
O .NET Framework 4.6.1 define um novo contrato chamado IWorkflowInstanceManagement. Esse contrato define uma série de operações de controle que permitem controlar remotamente instâncias de fluxo de trabalho hospedadas por WorkflowServiceHost. WorkflowControlEndpoint é um ponto de extremidade padrão que fornece uma implementação do contrato IWorkflowInstanceManagement. WorkflowControlClient é uma classe usada para enviar as operações de controle para WorkflowControlEndpoint.
As instâncias de fluxo de trabalho podem estar em um dos seguintes estados:
Ativo
O estado de uma instância de fluxo de trabalho que não está no estado suspenso e antes de atingir o estado concluído. Enquanto estiver nesse estado, ela será executada e processará as mensagens do aplicativo.
Suspenso
Enquanto estiver nesse estado, a instância de fluxo de trabalho não será executada, mesmo se houver atividades que não começaram a ser executadas ou foram executadas parcialmente.
Concluído
O estado final de uma instância de fluxo de trabalho. A instância não pode ser executada após atingir o estado concluído.
IWorkflowInstanceManagement
A interface IWorkflowInstanceManagement define um conjunto de operações de controle com versões síncronas e assíncronas. As versões transacionadas requerem o uso de uma associação com reconhecimento de transação. A tabela a seguir lista as operações de controle com suporte.
Operação de controle | Descrição |
---|---|
Anular | Para à força a execução da instância de fluxo de trabalho. |
Cancelar | Faz a transição de uma instância de fluxo de trabalho do estado ativo ou suspenso para o concluído. |
Executar | Fornece a uma instância de fluxo de trabalho a oportunidade de ser executada. |
Suspend | Faz a transição de uma instância de fluxo de trabalho do estado ativo para o suspenso. |
Terminate | Faz a transição de uma instância de fluxo de trabalho do estado ativo ou suspenso para o concluído. |
Cancelar suspensão | Faz a transição de uma instância de fluxo de trabalho do estado suspenso para o ativo. |
TransactedCancel | Executa a operação Cancelar em uma transação (transmitida pelo cliente ou criada localmente). Se o sistema mantiver o estado durável da instância de fluxo de trabalho, ela deverá ser mantida durante a execução dessa operação. |
TransactedRun | Executa a operação Executar em uma transação (transmitida pelo cliente ou criada localmente). Se o sistema mantiver o estado durável da instância de fluxo de trabalho, ela deverá ser mantida durante a execução dessa operação. |
TransactedSuspend | Executa a operação Suspender em uma transação (transmitida pelo cliente ou criada localmente). Se o sistema mantiver o estado durável da instância de fluxo de trabalho, ela deverá ser mantida durante a execução dessa operação. |
TransactedTerminate | Executa a operação Terminar em uma transação (transmitida pelo cliente ou criada localmente). Se o sistema mantiver o estado durável da instância de fluxo de trabalho, ela deverá ser mantida durante a execução dessa operação. |
TransactedUnsuspend | Executa a operação Cancelar suspensão em uma transação (transmitida pelo cliente ou criada localmente). Se o sistema mantiver o estado durável da instância de fluxo de trabalho, ela deverá ser mantida durante a execução dessa operação. |
O contrato IWorkflowInstanceManagement não fornece meios para criar uma instância de fluxo de trabalho, somente para gerenciar as existentes. Para saber como criar remotamente uma instância de fluxo de trabalho, confira Extensibilidade do host de serviço do fluxo de trabalho.
WorkflowControlEndpoint
WorkflowControlEndpoint é um ponto de extremidade padrão com um contrato fixo, IWorkflowInstanceManagement. Quando adicionado a uma instância WorkflowServiceHost, esse ponto de extremidade pode ser usado para enviar operações de comando para qualquer instância de fluxo de trabalho hospedada pela instância do host. Para saber mais sobre o ponto de extremidade padrão, confira Pontos de extremidade padrão.
WorkflowControlClient
WorkflowControlClient é uma classe que permite enviar mensagens de controle para um WorkflowControlEndpoint em um WorkflowServiceHost. Ela contém um método para cada uma das operações compatíveis com o contrato IWorkflowInstanceManagement, exceto para as transacionadas. O WorkflowControlClient usa a transação de ambiente para determinar se uma operação transacionada deve ser usada.