Anexo técnico Workflow 

En el momento de la ejecución de un Workflow, así como su firma, se dispone de un contexto muy rico, en forma de clase de variables y de variables locales en línea. Este contexto depende del tipo de Workflow y del proceso en curso (Workflow original, firma, Workflow consecutivo a un primer Workflow). Este anexo describe el algoritmo empleado por el motor de Workflow y detalla las variables que pueden emplearse en cada estadío.

Hay que tener en cuenta que el asistente de fórmula provee una lista de variables procedentes del contexto para construir fórmulas de la forma más adaptada posible.

Algoritmo principal Workflow objet

Un Workflow de tipo objeto se descompone en una serie de etapas que son las siguientes:

Inicio de las variables de ambiente

Esta etapa consiste en asignar variables globales. Se dispone sobre todo de la variable USRWRK, que corresponde al usuario actual del workflow de origen.

Tratamiento de la regla de asignación

En esta etapa se evalúan las fórmulas dadas en la regla y se almacenan en una variable dimensionada denominada como VALEXP. ESto permite disponer sobre todo de valores que no se emplean forzosamente como criterio de definición de los destinatarios, sino que son útiles en la continuación del Workflow (por ejemplo para decidir el envío de un mensaje en función de valores mínimos, máximos o medias de un elemento).

El nombre de valores calculados se conoce por la variable NBCOL.

A continuación se busca, a partir de valores calculados, la línea de regla que corresponde, para asignar el cuadro de variables USER (de 1 a 10 máximo).

Tratamiento del Workflow

Esta etapa se descompone en varias sub-etapas. Para empezar, se determina cierto número de valores:

  • se inicia la variable CTX, que contiene el contexto actual, según las fórmulas parametrizadas. Este contexto se almacena en el histórico Workflow y se restituirá posteriormente si después se activa un evento Workflow seguido del primero.
  • Se asignan las variables S_USER, S_CLEOBJ, S_ABREV, que definen el usuario al inicio del Workflow, la clave del objeto o del grupo de líneas y el código objeto afectado.
  • Se calcula S_NBRUSER, que da el nombre de los firmantes que se definen realmente en la regla.

A continuación se verifican las condiciones de ejecución en la cabecera del Workflow. Si se dan estas condiciones, se realizarán las operaciones siguientes:

  • Constitución del contexto de retorno (icono).
  • Atribución de un número de crono a cada tratamiento de las reglas. En caso de Workfloe manual, se realiza una atribución cada vez que se cambia de valor de clave en la tabla principal (si no hay campo de agrupamiento) o de valor de reagrupamiento (si lo hay).
  • Atribución de un número de crono para cada línea (hay varias por grupo, si hay agrupamiento).
  • Ejecución de la acción de inicio de Workflow (si lo hay y se cumplen las condiciones).
  • Si hay que enviar un mensaje o realizar un seguimiento, busca a los usuarios delegados.
  • Si debe enviarse un mensaje, tratamiento del mensaje.
  • Si debe realizarse un seguimiento, tratamiento del seguimiento.
  • Ejecución de la acción de tipo fin de Workflow (si lo hay y se cumplen las condiciones).

Tratamiento del mensaje

En esta etapa se realizan las operaciones siguienes:

  • Constitución del texto por ensamblaje del texto principal y del texto de detalle de las líneas (si lo hay).
  • Constitución del objeto del mensaje.
  • Visualización de la ventana de modificación del mensaje (si el mensaje puede ser modificado y si la activación es interactiva).
  • Transacción de escritura en las tablas correspondientes: AWRKHISMES contiene el cuerpo del mensaje, AWRKHISJOI los elementos adjuntos, y AWRKHISDES los destinatarios.
  • Envío del mensaje si la opción de envío agrupado no está activada. En caso contrario, el envío agrupado se realizará al finalizar el tratamiento del workflow.

Tratamiento de seguimiento

Esta realiza la puesta al día de la línea de seguimeinto a tratar en la tabla AWRKHISSUI. La transacción correspondiente está separada de los precedentes (pero sólo se ejecuta si las anteriores se han realizado sin problemas).

Algoritmo principal Workflow firma

Se activa un Workflow de tipo firma después de una acción de firma (ya sea manual desde el plan de trabajo o automática a través de otro evento de Workflow o notificación mediante un vínculo).

Las etapas correspondientes son los siguientes:

  • Inicio de las variables heredadas
  • Carga de las clases de variables [F] (tablas) definidas por el evento de origen
  • Para un workflow de tipo cabecera o de tipo línea sin reagrupamiento, tratamiento de la regla de asignación, y después tratamiento del Workflow.
  • Si es un Workflow con reagrupamiento de líneas, lectura de líneas de agrupamiento correspondiente al seguimiento, tratamiento de la regla de asignación y ademástratamiento del Workflow.
  • Para cada línea, se ejecuta la acción de tipo línea y se formatea el texto de la línea.
  • La continuación del proceso es idéntico a un Workflow estándar.

Inicio de las variables heredadas

Las variables heredadas del contexto de firma se asignan en esta fase. Estas variables son los siguientes:

NUMORG

número cronológico de origen.

USRORG

destinatario del evento de origen

NUMSIG

chrono para el que se activa el proceso de firma.

USRDES

destinatario del chrono para el que se activa el proceso de firma.

USRWRK

usuario firmante.

MAIWRK

dirección de mensajería del firmante, si su firma se realiza por un vínculo http externo.

LEVSIG

Nivel de firma (el evento de origen lleva el número 0, los eventos que se encadenan llevan los números siguientes a partir del 1).

RETORG

Clave del objeto que ha activado el Workflow original.

CONTXT

Referencia del icono de devolución.

CLEOBJ

Número du chrono firmado.

CTX(1..15)

Variables del contexto.

S_USER

Destinatario que ha activado el Workflow de origen.

S_CLEOBJ

Clave de activación (objeto o agrupamiento).

S_ABREV

Abreviatura del objeto del Workflow original.

S_NBRUSR

Nombre de usuarios definidos en la regla del Workflow de origen.

Algoritmo de tratamiento de una firma

La fase de firma de un evento se realiza a partir del proceso siguiente:

  • inicio del contexto de firma.
  • Verificación de la existencia del chrono y del bloqueo.
  • Evaluación (según las condiciones) de la lista de respuestas autorizadas.
  • Captura de una respuesta entre las distintas posibles.
  • Bloqueo de la ficha que ha generado el primer seguimiento.
  • Carga de las clases de variables [F]
  • Actualización de la variable RESULT en función de la respuesta
  • Modificación de esta variable por captura (si la respuesta puede modificarse)

A continuación, se realiza la transacción de firma propiamente dicha:

  • Ejecución de las acciones de firma, si las hay.
  • Actualización del campo correspondiente a la respuesta (si existe)
  • Tratamiento de la regla de Workflow asociada a la firma (si existe)
  • Actualización de la línea de seguimiento (flag marcado, firmante correspondiente).

inicio del contexto de firma.

Cuando un usuario firma un seguimiento, las variables disponibles en el contexto son las siguientes:

CHRONO:

chrono del evento para el que se va a realizar la firma.

USRDES

código de usuario del destinatario.

USRSIG

Código de usuario del firmante.

USRMAIL

dirección de mensajería del firmante, si su firma se realiza por un vínculo http externo.

NUMORG

Chrono del evento de origen para el que se ha realizado la primera firma.

USRORG

Destinatario de este evento.

LEVSIG

Nivel de firma (el evento de origen lleva el número 0, los eventos que se encadenan llevan los números siguientes a partir del 1).

USRTOP

Destinatario principal (los otros son delegados).

NUMGRP

Grupo del evento a firmar.

CTX(1..15)

Variables del contexto.

S_USER

Destinatario que ha activado el Workflow de origen.

S_CLEOBJ

Clave de activación (objeto o agrupamiento).

S_ABREV

Abreviatura del objeto del Workflow original.

S_NBRUSR

Nombre de usuarios definidos en la regla del Workflow de origen.

El cuadro de variables REPCHR permite saber si otros destinatarios del mismo evento han firmado ya. Se tienen en cuenta el número de grupos (un grupo es igual a una línea en el cuadro de los firmantes; si un delegado firma, el evento queda firmado y no puede ser firmado por segunda vez por otro miembro del grupo).

Se tiene:

REPCHR(0) = número de respuestas que quedan por dar: si por ejemplo hay 4 líneas de firmantes en la discripción del evento y sólo se ha firmado una, este valor es igual a 3.

REPCHR(NO), NO puede valer de 1 a 10 y da el número de firmantes que han respondido con la respuesta colocada en la línea del número NO en el cuadro de respuestas.

Estas variables permiten sobre todo condicionar las etapas siguientes por el hecho de que el último firmante en espera haya respondido, o trabajar sobre lógicas mayoritarias de firma.