Caso de uso: Supervisión de flujos de trabajo supervising-workflows
Este caso de uso detalla la creación de un flujo de trabajo que permite monitorizar el estado de un conjunto de flujos de trabajo que están “en pausa”, “detenidos” o “con errores”.
Su objetivo es:
- Utilizar un flujo de trabajo para monitorizar un grupo de flujos de trabajo empresariales.
- Enviar un mensaje a un supervisor a través de una actividad de “envío”.
Para monitorizar el estado de un conjunto de flujos de trabajo, se debe seguir estos pasos:
- Cree el flujo de trabajo de monitorización.
- Escriba el código JavaScript para determinar si los flujos de trabajo están en pausa, detenidos o con errores.
- Cree la actividad Test.
- Prepare la plantilla de envío.
Paso 1: Creación del flujo de trabajo de monitorización step-1--creating-the-monitoring-workflow
La carpeta de flujo de trabajo que se va a monitorizar es “CustomWorkflows” almacenada en el nodo Administration > Production > Technical workflows. Esta carpeta contiene un conjunto de flujos de trabajo empresariales.
El flujo de trabajo de monitorización se almacena en la raíz de la carpeta de flujos de trabajo técnicos. La etiqueta utilizada es “Monitoring”.
El esquema siguiente muestra la secuencia de actividades:
Este flujo de trabajo consta de:
- una actividad “Start” (inicio).
- una actividad “JavaScript code” (código JavaScript) responsable de analizar la carpeta de flujos de trabajo empresariales.
- una actividad “Test” (prueba) para realizar una entrega al supervisor o reiniciar el flujo de trabajo.
- una actividad “Delivery” (envío) responsable del diseño del mensaje.
- una actividad “Wait” (espera) que controla los tiempos de posible cliente entre las iteraciones del flujo de trabajo.
Paso 2: Escritura de JavaScript step-2--writing-the-javascript
La primera parte del código JavaScript consiste en una consulta (queryDef) que permite identificar los flujos de trabajo con los estados “en pausa” (@state == 13), “error” (@error == 1) o “detenido” (@state == 20).
El nombre interno de la carpeta del flujo de trabajo a monitorizar se presenta en la siguiente condición:
<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 segunda parte del código JavaScript permite mostrar un mensaje para cada flujo de trabajo en función del estado recuperado durante la consulta.
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;
Paso 3: Creación de la actividad “Test” step-3--creating-the--test--activity
La actividad “Prueba” permite determinar si una entrega debe ser realizado o si el flujo de trabajo de monitorización debe ejecutar otro ciclo en función de la actividad “Espera”
Se realiza una entrega al supervisor si al menos una de las tres variables de evento “vars.strWorkflowError”, “vars.strWorkflowPaused” o “vars.strWorkflowStop” es válida.
La actividad “Espera” se puede configurar para reiniciar el flujo de trabajo de monitorización a intervalos regulares. Para este caso de uso, el tiempo de espera se establece en una hora.
Paso 4: Preparación de una entrega step-4--preparing-the-delivery
La actividad “Envío” se basa en una plantilla de envío almacenada en el nodo Recursos > Plantillas > Plantillas de envío.
Esta plantilla debe incluir:
-
la dirección de correo electrónico del supervisor.
-
Contenido HTML para insertar texto personalizado.
Las tres variables declaradas (WF_Stop, WF_Paused, WF_Error) coinciden con las tres variables de evento de flujo de trabajo.
Estas variables deben declararse en la pestaña Variables de las propiedades de la plantilla de envío.
Para recuperar el contenido de las variables de evento de flujo de trabajo, se debe declarar las variables específicas para la entrega que se desea inicializar con los valores que devuelve el código JavaScript.
La plantilla de envío tiene el siguiente contenido:
Una vez creada y aprobada la plantilla, se debe configurar la actividad Envío para:
- vincular la actividad “Envío” a la plantilla de envío creada anteriormente.
- vincular las variables de evento del flujo de trabajo a las específicas de la plantilla de envío.
Haga doble clic en la actividad de Envío y seleccione las siguientes opciones:
-
Envío: seleccione Nuevo, creado desde plantilla y seleccione la plantilla de envío creada previamente.
-
Para los campos Destinatarios y Contenido, seleccione Especificado en la entrega.
-
Acción que quiere ejecutar: seleccione Preparación e inicio.
-
Anule la selección de la opción Procesamiento de errores.
-
Vaya a la pestaña Script de la actividad Envío, añada tres variables de cadena de caracteres a través del menú del campo de personalización.
Las tres variables declaradas son:
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 vez iniciado este flujo de trabajo de monitorización, envía un resumen a los destinatarios.