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:

  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 entrega.
NOTE
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 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.

NOTE
As strings 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" 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á o seguinte resumo para o destinatário:

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1