Caso di utilizzo: supervisione dei flussi di lavoro supervising-workflows
Questo caso d’uso descrive la creazione di un flusso di lavoro che consente di monitorare lo stato di un set di flussi di lavoro "in pausa", "interrotti" o "con errori".
Il suo obiettivo è:
- Utilizza un flusso di lavoro per monitorare un gruppo di flussi di lavoro aziendali.
- Invia un messaggio a un supervisore tramite un’attività di "consegna".
Per monitorare lo stato di un set di flussi di lavoro, è necessario seguire questi passaggi:
- Crea il flusso di lavoro di monitoraggio.
- Scrivere JavaScript per determinare se i flussi di lavoro vengono sospesi, interrotti o con errori.
- Crea l'attività Test.
- Prepara il modello di consegna.
Passaggio 1: creazione del flusso di lavoro di monitoraggio step-1--creating-the-monitoring-workflow
La cartella del flusso di lavoro che verrà monitorata è la cartella "CustomWorkflows" memorizzata nel nodo Administration > Production > Technical workflows. Questa cartella contiene un set di flussi di lavoro aziendali.
Il flusso di lavoro di monitoraggio è archiviato nella directory principale della cartella Flussi di lavoro tecnici. L'etichetta utilizzata è "Monitoring".
Lo schema seguente mostra la sequenza di attività:
Questo flusso di lavoro è costituito da:
- attività "Start".
- un'attività "JavaScript code" responsabile dell'analisi della cartella dei flussi di lavoro aziendali.
- un'attività "Test" per inviare una consegna al supervisore o riavviare il flusso di lavoro.
- un'attività "Delivery" responsabile del layout dei messaggi.
- attività "Wait" che controlla i lead time tra le iterazioni del flusso di lavoro.
Passaggio 2: scrittura del JavaScript step-2--writing-the-javascript
La prima parte del codice JavaScript coincide con una query (queryDef) che consente di identificare i flussi di lavoro con uno stato "pausa" (@state == 13), "errore" (@failed == 1) o "arrestato" (@state == 20).
Il nome interno della cartella del flusso di lavoro da monitorare è fornito nella seguente condizione:
<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 seconda parte del codice JavaScript ti consente di visualizzare un messaggio per ogni flusso di lavoro in base allo stato recuperato durante la 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;
Passaggio 3: creazione dell’attività "Test" step-3--creating-the--test--activity
L’attività "Test" consente di determinare se una consegna deve essere inviata o se il flusso di lavoro di monitoraggio deve eseguire un altro ciclo in base all’attività "Wait" (Attendi).
Viene inviata una consegna al supervisore se almeno una delle tre variabili di evento "vars.strWorkflowError", "vars.strWorkflowPaused" o "vars.strWorkflowStop" non è nulla.
L’attività "Attendi" può essere configurata per riavviare il flusso di lavoro di monitoraggio a intervalli regolari. Per questo caso d'uso, il tempo di attesa è impostato su un'ora.
Passaggio 4: preparazione della consegna step-4--preparing-the-delivery
L'attività "Delivery" è basata su un modello di consegna memorizzato nel nodo Resources > Templates > Delivery templates.
Questo modello deve includere:
-
l'indirizzo di posta elettronica del supervisore.
-
Contenuto HTML per l'inserimento di testo personalizzato.
Le tre variabili dichiarate (WF_Stop, WF_Paused, WF_Error) corrispondono alle tre variabili di evento del flusso di lavoro.
Queste variabili devono essere dichiarate nella scheda Variabili delle proprietà del modello di consegna.
Per recuperare il contenuto delle variabili dell'evento del flusso di lavoro, è necessario dichiarare le variabili specifiche della consegna che verranno inizializzate con i valori restituiti dal codice JavaScript.
Il modello di consegna ha il seguente contenuto:
Una volta creato e approvato il modello, devi configurare l'attività Delivery in:
- collega l’attività "Delivery" al modello di consegna creato in precedenza.
- collega le variabili evento del flusso di lavoro a quelle specifiche del modello di consegna.
Fare doppio clic sull'attività Consegna e selezionare le opzioni seguenti:
-
Consegna: selezionare Nuovo, creato da un modello, quindi selezionare il modello di consegna creato in precedenza.
-
Per i campi Destinatari e contenuto, seleziona Specificato nella consegna.
-
Azione da eseguire: selezionare Prepara e avvia.
-
Deseleziona l'opzione Errori di processo.
-
Vai alla scheda Script dell'attività Consegna, aggiungi tre variabili di tipo stringa di caratteri tramite il menu del campo di personalizzazione.
Le tre variabili dichiarate sono:
code language-none delivery.variables._var[0].stringValue = vars.strWorkflowError; delivery.variables._var[1].stringValue = vars.strWorkflowPaused; delivery.variables._var[2].stringValue = vars.strWorkflowStop;
Una volta avviato, il flusso di lavoro di monitoraggio invia il riepilogo seguente al destinatario: