Ce cas pratique détaille la création d'un workflow qui permet de suivre le statut d'un ensemble de workflows dont l'état est "en pause", "stoppé" ou "en erreur".
Son objectif est le suivant :
Pour suivre le statut d'un ensemble de workflows, vous devez procéder comme suit :
Outre le workflow, la carte thermique des workflows Campaign vous permet d’analyser dans le détail les workflows en cours d’exécution. Voir à ce sujet la section dédiée.
Pour plus d’informations sur la surveillance de l’exécution des workflows, consultez cette section.
Le dossier de workflows que nous allons suivre est le dossier "CustomWorkflows" stocké dans le noeud : Administration > Exploitation > Workflows Techniques. Ce dossier contient un ensemble de workflows métiers.
Le workflow de suivi est stocké à la racine du dossier Workflows Techniques. Le libellé utilisé est "Suivi".
Le schéma suivant montre l'ordonnancement des activités :
Ce workflow se compose de :
La première partie du code JavaScript correspond à une requête (queryDef) permettant d'identifier les workflows ayant un statut "pause" (@state == 13), "erreur" (@failed == 1) ou "stoppé" (@state == 20).
Le nom interne du dossier de workflow à suivre est donné dans la condition suivante :
<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();
La deuxième partie du code JavaScript permet d'afficher un message pour chaque workflow en fonction du statut remonté lors de la requête.
Les chaînes créées doivent être chargées dans les variables d'événements du 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;
L'activité "Test" permet de déterminer si une diffusion doit être envoyée ou bien si le workflow de suivi doit recommencer un cycle en se positionnant sur l'activité "Attente".
Une diffusion est envoyée au superviseur si au moins une des trois variables d'événements "vars.strWorkflowError", "vars.strWorkflowPaused", "vars.strWorkflowStop" est non nulle.
L'activité "Attente" peut être paramétrée pour relancer le workflow de suivi à intervalle régulier. Pour ce cas pratique, la durée d'attente est fixée à une heure.
L'activité "Diffusion" est basée sur un modèle de diffusion stocké dans le noeud Ressources > Modèles > Modèles de diffusion.
Ce modèle doit comporter :
l'adresse mail du superviseur.
un contenu HTML permettant d'insérer du texte personnalisé.
Les trois variables déclarées (WF_Stop, WF_Paused, WF_Error) correspondent aux trois variables d'événements du workflow.
Ces variables doivent être déclarées dans l'onglet Variables des propriétés du modèles de diffusion.
Afin de récupérer le contenu des variables d'événements du workflow, il est nécessaire de déclarer des variables propres à la diffusion qui seront initialisées avec les valeurs retournées par le code JavaScript.
Le contenu de modèle de diffusion est le suivant :
Une fois le modèle crée et validé, vous devez configurer l'activité Diffusion pour:
En double cliquant sur l'activité Diffusion, choisissez les options suivantes :
Diffusion : sélectionnez Nouvelle, créée depuis un modèle, et sélectionnez le modèle de diffusion créé précédemment.
Pour les champs Destinataires et Contenu, sélectionnez Spécifiés dans la diffusion.
Action à effectuer : sélectionnez Préparer et démarrer.
Décochez l'option Traiter les erreurs.
Dans l'onglet Script de l'activité Diffusion, ajoutez trois variables de type chaîne de caractères via le sélecteur de champs de personnalisation
Les trois variables déclarées sont :
delivery.variables._var[0].stringValue = vars.strWorkflowError;
delivery.variables._var[1].stringValue = vars.strWorkflowPaused;
delivery.variables._var[2].stringValue = vars.strWorkflowStop;
Une fois lancé, ce workflow de suivi envoie au destinataire de la diffusion un message récapitulatif de la forme :