9.3 Looptimes: Opción avanzada

Opciones avanzadas


1. Looptimes

La configuración de Looptime permite que una acción en el flujo se ejecute varias veces, por ejemplo, insertando múltiples registros en una tabla con una sola acción.

Funcionamiento del Looptime

El Looptime se configura en acciones de flujo de tipo Evento ("type": "event"). Se añade junto a los objetos id, type y data en la acción, como se muestra en el siguiente ejemplo:
{ "text": "Registra Rechazo - Máquinas y Herramientas - interno", "id": "A4", "type": "event", "loopTimes": "_TRIGGER.control.procesos_probados", "data": {...} }
El valor de loopTimes corresponde a un campo tipo CHECKBOX en el formulario y le indica al programa cuántas veces ejecutar la acción, basado en el número de opciones seleccionadas en el checkbox.
 

Consideraciones Importantes

El loopTimes no puede quedar vacío. Si no se usa, no debe agregarse en el código.
  • loopTimes determina cuántas veces se repetirá la acción o método.
  • Si no se establece, se asume una sola iteración.
  • Si el valor proviene de un dato del formulario, debe ir entre ##.
  • Si el valor es numérico, se utiliza ese valor para iterar.
  • Si el valor no es numérico y contiene tag (#seccion.campo#), se utiliza el valor de la variable.
  • Si el valor no es numérico y no contiene tag, se asume que es el nombre de un objeto MULTIPLE, CHECKBOX o TABLE, iterando sobre sus valores hasta la propiedad .size.
  • No es necesario añadir .size al final del dato cuando el campo del formulario es de tipo MULTIPLE, CHECKBOX o TABLE; se añade automáticamente.
 

2. QueryClones

Es una propiedad que permite en los Formularios mostrar X cantidad de campos dependiendo de X selecciones en algún campo tipo MULTIPLE, MULTIPLE_REORDER, CHECKBOX o TABLE.
Para su correcto funcionamiento se debe configurar en el Formulario y en el Flujo de trabajo correspondiente.
La key de los campos clones creados deben tener la siguiente forma: clone_<indice>_<key_del_campo_madre> por ejemplo: “clone_0_INCL_CRE”.
Para insertar los valores en la BD utilizando la acción del flujo de type : event se debe seguir la siguiente estructura:
{ "key": "INCL_CRE", "value": "#_TRIGGER.componentes.clone_@index@_INCL_CRE#" },
El @index@ se ejecutará la cantidad de veces que el “loopTimes” indique.
 

Ejemplo

En este caso el campo COMPS_RECE es de tipo CHECKBOX.
"loopTimes": "_TRIGGER.general.COMPS_RECE.size",
Para insertar valores en la BD usando los valores de los clones operados matemáticamente puede hacerse de la siguiente manera:
{ "key": "CONS_HR_CRE", "value": "js(#_TRIGGER.general.KG_HORA_RECE# * #_TRIGGER.componentes.clone_@index@_INCL_CRE#)" }, { "key": "KG_X_BATCH_CRE", "value": "js(#_TRIGGER.general.VOL_BATCH_RECE# * #_TRIGGER.componentes.clone_@index@_INCL_CRE#)" }, { "key": "KG_COMP_VACA_CRE", "value": "js(#_TRIGGER.general.KG_V_D_RECE# * #_TRIGGER.componentes.clone_@index@_INCL_CRE#)" },