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. Se o armazenamento 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 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 monitorar até que o TryLoadRunnableWorkflowCommand é chamado uma vez no armazenamento.
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 está sendo 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 monitorar até que o QueryActivatableWorkflowsCommand é chamado uma vez no armazenamento.
Quando um host genérico que se inscreveu para o HasActivatableWorkflowEvent recebe o evento, ele executa o armazenamento de instâncias para obter os QueryActivatableWorkflowsCommand 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.
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 estiver definido como WAS, o Repositório de Instâncias do Fluxo de Trabalho SQL lançará um InstancePersistenceExceptionarquivo . 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.