Partilhar via


Ativação da instância

O Repositório de Instâncias do Fluxo de Trabalho SQL executa uma tarefa interna que é ativada periodicamente e deteta 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 do fluxo de trabalho que é capaz de ativar a instância. Caso o armazenamento de instâncias encontre uma instância de fluxo de trabalho que possa ser ativada, ele notifica um host genérico. Este host genérico ativa então 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 o processo de ativação da instância em detalhes.

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

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

  • A instância está desbloqueada e tem um temporizador pendente que expirou.

  • A instância tem um bloqueio expirado.

  • A instância é desbloqueada e seu status é Executando.

O Repositório de Instâncias do Fluxo de Trabalho SQL gera o HasRunnableWorkflowEvent quando encontra uma instância executável. Depois disso, o SqlWorkflowInstanceStore para de monitorizar até que o TryLoadRunnableWorkflowCommand seja chamado uma vez na loja.

Um host de fluxo de trabalho que se inscreveu para o HasRunnableWorkflowEvent e capaz de carregar a instância executa o 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 com o mesmo valor.

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

Uma instância de fluxo de trabalho é considerada ativável se a instância for executável e não houver nenhum host de fluxo de trabalho capaz de carregar a instância enquanto está a ser executada no computador. Consulte Detetando e ativando 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 SQL gera o HasActivatableWorkflowEvent quando encontra uma instância de fluxo de trabalho ativável no banco de dados. Depois disso, o SqlWorkflowInstanceStore para de monitorizar até que o QueryActivatableWorkflowsCommand seja chamado uma vez na loja.

Quando um host genérico que se inscreveu para o HasActivatableWorkflowEvent recebe o evento, executa o QueryActivatableWorkflowsCommand contra o armazenamento de instâncias para obter os parâmetros de ativação necessários para criar um host de workflow. 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.

Anfitriões 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 do Fluxo de Trabalho SQL oferece suporte a hosts genéricos com o valor do parâmetro ActivationType definido como WAS. Se o ActivationType não for definido como WAS, o Repositório de Instâncias do Fluxo de Trabalho SQL gerará um InstancePersistenceException. O Serviço de Gerenciamento de Fluxo de Trabalho que acompanha os recursos de hospedagem do Windows Server AppFabric é um host genérico que tem o tipo de ativação definido como WAS.

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

Período de deteção de instâncias executáveis

A propriedade Runnable Instances Detection Period do SQL Workflow Instance Store especifica o período após o qual o SQL Workflow Instance Store executa uma tarefa de deteção para detetar quaisquer instâncias de fluxo de trabalho executáveis ou ativáveis no banco de dados de persistência após o ciclo de deteção anterior. Consulte Período de deteção de instâncias executáveis para obter mais detalhes sobre essa propriedade.