Caso de uso: supervisionar workflows supervising-workflows
Esse caso de uso detalha a criação de um workflow que permite monitorar o status de um conjunto de workflows que são "pausados", "interrompido" ou "com erros".
Seu objetivo é:
- Usar um workflow para monitorar um grupo de workflows de negócios.
- Enviar uma mensagem para um supervisor por meio de uma atividade "entrega".
Para monitorar o status de um conjunto de workflows, siga estas etapas:
- Crie o workflow de sincronização.
- Escreva o JavaScript para determinar se os workflows estão pausados, interrompidos ou com erros.
- Crie a atividade Test.
- Prepare o template de entrega.
Etapa 1: Criação do workflow de monitoramento step-1--creating-the-monitoring-workflow
A pasta de workflow que vamos monitorar é a pasta "CustomWorkflows" armazenada no nó Administration > Production > Technical workflows. Esta pasta contém um conjunto de workflows de negócios.
O Monitoring workflow é armazenado na raiz da pasta Technical Workflows. O rótulo usado é "Monitoring".
O schema a seguir mostra a sequência de atividades:
Este workflow é composto por:
- uma atividade "Start" .
- uma atividade "JavaScript code" responsável pela análise da pasta de workflows corporativos.
- uma atividade "Test" para enviar uma entrega ao supervisor ou reiniciar o workflow.
- uma atividade "Entrega" responsável pelo layout da mensagem.
- uma atividade "Wait" que controla os tempos de lead entre as iterações do workflow.
Etapa 2: Gravação do JavaScript step-2--writing-the-javascript
A primeira parte do código JavaScript coincides com um query (queryDef) que permite identificar os workflows com status "pause" (@state == 13), "error" (@failed == 1) ou "stopped" (@state == 20).
O nome interno da pasta de workflow a monitorar é fornecido na seguinte condição:
<condition boolOperator="AND" expr="[folder/@name] = 'Folder20'" internalId="1"/>
var strError = "";
var strPaused = "";
var strStop = "";
var queryWkfError = xtk.queryDef.create(
<queryDef schema="xtk:workflow" operation="select">
<select>
<node expr="@internalName"/>
<node expr="@state"/>
<node expr="@label"/>
<node expr="@failed"/>
<node expr="@state"/>
</select>
<where id="12837805386">
<condition boolOperator="AND" expr="[folder/@name] = 'Folder20'" internalId="1"/>
<condition boolOperator="AND" internalId="2">
<condition boolOperator="OR" expr="@state = 20" internalId="3"/>
<condition expr="@state = 13" internalId="4"/>
</condition>
</where>
</queryDef>
);
var ndWkfError = queryWkfError.ExecuteQuery();
A segunda parte do código JavaScript permite exibir uma mensagem para cada workflow com base no status recuperado durante a query.
for each ( var wkf in ndWkfError.workflow )
{
if ( wkf.@state == 13 ) // Status 13 = paused
{
if ( wkf.@failed == 1 )
strError += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
else
strPaused += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
}
if ( wkf.@state == 20 ) // Status 20 = stop
strStop += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
}
vars.strWorkflowError = strError;
vars.strWorkflowPaused = strPaused;
vars.strWorkflowStop = strStop;
Etapa 3: Criação da atividade "Test" step-3--creating-the--test--activity
A atividade "Test" permite determinar se uma entrega precisa ser enviada ou se o workflow de monitoramento precisa executar outro ciclo com base na atividade "Wait".
Uma entrega é realizada ao supervisor se pelo menos uma das três variáveis de evento "vars.strWorkflowError", "vars.strWorkflowPaused" ou "vars.strWorkflowStop" for não nulas.
A atividade "Wait" pode ser configurada para reiniciar o workflow de monitoramento em intervalos regulares. Para esse caso de uso, o tempo de espera é definido como uma hora.
Etapa 4: Preparação da entrega step-4--preparing-the-delivery
A atividade "Entrega" baseia-se em um template de entrega armazenado no nó Resources > Templates > Templates de entrega.
Este template deve incluir:
-
o endereço de e-mail do supervisor.
-
Conteúdo HTML para inserir texto personalizado.
As três variáveis declaradas (WF_Stop, WF_Paused, WF_Error) correspondem às três variáveis de evento do workflow.
Essas variáveis devem ser declaradas na guia Variables das propriedades do template de entrega.
Para recuperar o conteúdo das variáveis de evento do workflow, é preciso declarar as variáveis específicas para a entrega que será inicializada com valores retornados pelo código JavaScript.
O template de entrega tem o seguinte conteúdo:
Depois que o template tiver sido criado e aprovado, é necessário configurar a atividade Entrega para:
- vincular a atividade "Entrega" ao template de entrega criado anteriormente.
- vincular as variáveis de evento do workflow àquelas específicas do template de entrega.
Clique duas vezes na atividade Entrega e selecione as seguintes opções:
-
Entrega: selecione New, created from a template e selecione o template de entrega criado anteriormente.
-
Para os campos Destinatários e Conteúdo, selecione Especificado na entrega.
-
Ação para executar: selecione Prepare and start.
-
Desmarque a opção Process errors.
-
Acesse a guia Script da atividade Delivery, adicione três variáveis de tipo de character string por meio do menu de campo de personalização.
As três variáveis declaradas são:
code language-none delivery.variables._var[0].stringValue = vars.strWorkflowError; delivery.variables._var[1].stringValue = vars.strWorkflowPaused; delivery.variables._var[2].stringValue = vars.strWorkflowStop;
Depois que esse workflow de monitoramento for iniciado, ele enviará um resumo para os recipients.