Compartilhar via


Ativação de instância

O Repositório de Instâncias de Fluxo de Trabalho do SQL executa uma tarefa interna que periodicamente desperta e detecta instâncias de fluxo de trabalho executáveis ou ativáveis no banco de dados de persistência. Se encontrar uma instância de fluxo de trabalho executável, ele notificará o host de fluxo de trabalho capaz de ativar a instância. Se o repositório de instâncias encontrar uma instância de fluxo de trabalho ativável, ele notificará um host genérico que ativa um host de fluxo de trabalho, que, por sua vez, executa a instância de fluxo de trabalho. As seções a seguir neste tópico explicam detalhadamente o processo de ativação da instância.

Detectando e ativando instâncias de fluxo de trabalho executáveis

O Repositório de Instâncias de Fluxo de Trabalho do SQL considera uma instância de fluxo de trabalho executável se a instância não estiver no estado suspenso ou no estado concluído e atender às seguintes condições:

  • A instância foi desbloqueada e possui um temporizador pendente que expirou.

  • A instância tem um bloqueio expirado nele.

  • A instância é desbloqueada e seu status está em execução.

O Repositório de Instâncias de Fluxo de Trabalho do SQL gera o HasRunnableWorkflowEvent quando encontra uma instância executável. Após isso, o SqlWorkflowInstanceStore para monitorar de TryLoadRunnableWorkflowCommand até que seja chamado uma vez no armazenamento.

Um host de fluxo de trabalho que assine para HasRunnableWorkflowEvent e capaz de carregar a instância executa TryLoadRunnableWorkflowCommand contra o armazenamento de instância para carregar a instância na memória. Um host de fluxo de trabalho é considerado capaz de carregar uma instância de fluxo de trabalho se o host e a instância tiverem a propriedade de metadados WorkflowServiceType definida como o mesmo valor.

Detectando e ativando instâncias de fluxo de trabalho ativáveis

Uma instância de fluxo de trabalho será considerada ativada se a instância for executável e não houver nenhum host de fluxo de trabalho capaz de carregar a instância estiver em execução no computador. Consulte Detectar e ativar instâncias de fluxo de trabalho executáveis acima para obter a definição de uma instância de fluxo de trabalho executável.

O Repositório de Instâncias de Fluxo de Trabalho do SQL aciona o HasActivatableWorkflowEvent quando encontra uma instância de fluxo de trabalho ativável no banco de dados. Após isso, o SqlWorkflowInstanceStore para monitorar de QueryActivatableWorkflowsCommand até que seja chamado uma vez no armazenamento.

Quando um host genérico que assine para HasActivatableWorkflowEvent recebe o evento, executa QueryActivatableWorkflowsCommand contra o armazenamento de instância para obter os parâmetros de ativação necessários para criar um host de fluxo de trabalho. O host genérico usa esses parâmetros de ativação para criar um host de fluxo de trabalho, que, por sua vez, carrega e executa a instância de serviço executável.

Hosts genéricos

Um host genérico é um host com o valor da propriedade de metadados WorkflowServiceType para hosts genéricos é definido como WorkflowServiceType.Any para indicar que ele pode lidar com qualquer tipo de fluxo de trabalho. Um host genérico tem um parâmetro XName chamado ActivationType.

Atualmente, o Repositório de Instâncias de Fluxo de Trabalho SQL dá suporte a hosts genéricos com o valor do parâmetro ActivationType definido como WAS. Se o ActivationType não estiver definido como WAS, o Repositório de Instâncias de Fluxo de Trabalho SQL gerará um InstancePersistenceException. O Serviço de Gerenciamento de Fluxo de Trabalho fornecido com os recursos de hospedagem do Windows Server AppFabric é um host genérico que tem o tipo de ativação definido como WAS.

Para WAS ativação, um host genérico requer um conjunto de parâmetros de ativação derivar o endereço do ponto de extremidade em que os novos host podem ser ativados. Os parâmetros de ativação do WAS são o nome do site, o caminho para o aplicativo em relação ao site e o caminho para o serviço em relação ao aplicativo. O Repositório de Instâncias de Fluxo de Trabalho do SQL armazena esses parâmetros de ativação durante a execução do SaveWorkflowCommand.

Período viável de detecção de instâncias

A propriedade Período de Detecção de Instâncias Executáveis do Repositório de Instâncias de Fluxo de Trabalho DO SQL especifica o período após o qual o Repositório de Instâncias de Fluxo de Trabalho do SQL executa uma tarefa de detecção para detectar quaisquer instâncias de fluxo de trabalho executáveis ou ativadas no banco de dados de persistência após o ciclo de detecção anterior. Confira o Período de Detecção de Instâncias Executáveis para obter mais detalhes sobre essa propriedade.