Supervisão de worflows

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 "delivery".

Para monitorar o status de um conjunto de workflows, siga estas etapas:

  1. Crie o workflow de sincronização.
  2. Escreva o JavaScript para determinar se os workflows estão pausados, interrompidos ou com erros.
  3. Crie a atividade Test.
  4. Prepare o template de delivery.
OBSERVAÇÃO

Além do workflow, o Workflow Heatmap do Campaign permite analisar os detalhes dos workflows executados no momento. Para obter mais informações, consulte a seção dedicada.

Para obter mais informações sobre como monitorar a execução dos workflows, consulte esta seção.

Etapa 1: Criação do workflow de monitoramento

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 delivery ao supervisor ou reiniciar o workflow.
  • uma atividade "Delivery" 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

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.

OBSERVAÇÃO

As cadeias de caracteres criadas devem ser carregadas nas variáveis de evento do workflow.

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"

A atividade "Test" permite determinar se um fornecimento precisa ser enviado ou se o workflow de monitoramento precisa executar outro ciclo com base na atividade "Wait".

Uma delivery é 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 do delivery

A atividade "Delivery" baseia-se em um template de delivery armazenado no nó Resources > Templates >Delivery templates.

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 delivery.

    Para recuperar o conteúdo das variáveis de evento do workflow, é preciso declarar as variáveis específicas para a delivery que será inicializada com valores retornados pelo código JavaScript.

    O template de delivery tem o seguinte conteúdo:

Depois que o template tiver sido criado e aprovado, é necessário configurar a atividade Delivery para:

  • vincular a atividade "Delivery" ao template de delivery criado anteriormente.
  • vincular as variáveis de evento do workflow àquelas específicas do template de delivery.

Clique duas vezes na atividade Delivery e selecione as seguintes opções:

  • Delivery: selecione New, created from a template e selecione o template de delivery criado anteriormente.

  • Para os campos Recipientes e Content , selecione Specified in the delivery.

  • 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:

    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á o seguinte resumo para o recipient:

Nesta página