Page 1 of 1

Cómo hacer que se ejecute un TRIGGER asignado BEFORE DYNAFORM, luego de un TIMER EVENT

Posted: Wed Aug 01, 2018 4:42 pm
by claudiojeraldo
Edité el título del POST original: "Cómo ejecutar un trigger al inicio de una tarea, que solamente se accede vía API REST"
------------------------------------------------------------------------------------------------------------------------------------------------------------

Buenos días

Les cuento la situación y mi problema.
Utilizo la versión 3.1.3 de ProcessMaker principalmente a través de la API REST. A través de la API se crean y derivan (route) casos a través del proceso.

Contexto del problema:

Necesitaba ejecutar 2 trigger al inicio de ciertas tareas de mi proceso (para comunicarme con un webservice externo) y debido a que la configuración por defecto de las tareas únicamente me permite asignar trigger en los eventos: AFTER y BEFORE route y assignment (https://wiki.processmaker.com/3.0/Triggers) se me ocurrió crear un formulario DYNAFORM en blanco (vacío) y lo agregué como STEP a las tareas que necesitaba agregar los triggers.

Al agregar los formularios, processmaker habilita los eventos AFTER Y BEFORE DYNAFORM en los cuales agregué los TRIGGERs que necesitaba ejecutar.


Adjunto una captura de la configuración descrita:

En la siguient eimagen indico en donde estoy colocando los formularios.
Screenshot of (administrador_sistema in FICR_gorecoquimbo) (4).png
Screenshot of (administrador_sistema in FICR_gorecoquimbo) (4).png (213.32 KiB) Viewed 2202 times
https://i.imgur.com/O705gtN.png

La siguiente captura indica la configuración de STEPs de ambas tareas.
Screenshot of (administrador_sistema in FICR_gorecoquimbo) (3).png
Screenshot of (administrador_sistema in FICR_gorecoquimbo) (3).png (120.56 KiB) Viewed 2202 times
https://i.imgur.com/foBJehD.png

El problema: (CORREGIDO)

He realizado varias pruebas y lamentablemente los TRIGGER NO SE ACTIVAN (o disparan) cuando se encuentran luego de un TIMER EVENT. Solamente se activan cuando ingreso manualmente al panel de control de Processmaker.


¿Qué soluciones tengo? :roll:

Agradezco cualquier idea de antemano.

Re: Cómo ejecutar un trigger al inicio de una tarea, que solamente se accede vía API REST

Posted: Wed Aug 01, 2018 11:43 pm
by amosbatto
Claudio,
Puedes usar mi endpoint para enrutar el caso:
PUT extrarest/case/{app_uid}/route-case
Tiene un parametro de POST "execute_triggers" que puedes setear a true.

Re: Cómo ejecutar un trigger al inicio de una tarea, que solamente se accede vía API REST

Posted: Thu Aug 02, 2018 12:31 pm
by claudiojeraldo
.
amosbatto wrote:Claudio,
Puedes usar mi endpoint para enrutar el caso:
PUT extrarest/case/{app_uid}/route-case
Tiene un parametro de POST "execute_triggers" que puedes setear a true.
Wow! qué interesante tu endpoint amosbatto, estoy seguro de que me va a sacar de varios apuros y de hecho podré reformular partes de la aplicación cliente que consume la API REST. Pero creo que equivoqué la descripción de mi problema, a continuación explico por qué.

Revisé la descripción del problema y me equivoqué. Lo que realmente sucede es lo siguiente:

Los TRIGGER que añadí al evento BEFORE DYNAFORM no se ejecutan cuando SE CUMPLE EL TIEMPO DEL TIMER EVENT que antecede a las tareas que se observan en la captura del post original y aunque la tarea pasa a estar "IN_PROGRESS"(o se activa) los trigger no se disparan si no ingreso directamente al panel de administración de Processmaker.

Re: Cómo hacer que se ejecute un TRIGGER asignado BEFORE DYNAFORM, luego de un TIMER EVENT

Posted: Thu Aug 02, 2018 11:36 pm
by amosbatto
Si estas ejecutando el caso con REST, los triggers antes y despues de Dynaforms no van a ejecutar. Puedes ejecutar el trigger con PUT /api/1.0/{workspace}/cases/{app_uid}/execute-trigger/{tri_uid}

Re: Cómo hacer que se ejecute un TRIGGER asignado BEFORE DYNAFORM, luego de un TIMER EVENT

Posted: Fri Aug 03, 2018 9:26 am
by claudiojeraldo
amosbatto wrote:Si estas ejecutando el caso con REST, los triggers antes y despues de Dynaforms no van a ejecutar. Puedes ejecutar el trigger con PUT /api/1.0/{workspace}/cases/{app_uid}/execute-trigger/{tri_uid}
No es el caso, estoy tratando que un trigger que he definido en un evento BEFORE DYNAFORM sea ejecute luego de que el evento de tiempo que le antecede (o controla) se active (que alcance la fecha y hora programada).

Diseñé un ejemplo para hacer pruebas, adjunto la captura:
Screenshot of (administrador_sistema in FICR_gorecoquimbo).png
Screenshot of (administrador_sistema in FICR_gorecoquimbo).png (83.33 KiB) Viewed 2160 times
https://i.imgur.com/DcUzdY1.png

La configuración de PASOS de la "tarea 2" es la siguiente:
Screenshot of (administrador_sistema in FICR_gorecoquimbo) (1).png
Screenshot of (administrador_sistema in FICR_gorecoquimbo) (1).png (116.95 KiB) Viewed 2160 times
https://i.imgur.com/NXz5T2I.png

Espero que se entiende cual es el problema.

Durante el día de ayer, realicé varias y pruebas y la única manera en que se "dispare el evento BEFORE DYNAFORM" es ingresando al caso desde le panel de administración. Lo que necesito es que se ejecute el trigger luego del evento de tiempo definido ( no me sirve crear una tarea tipo script).

Re: Cómo hacer que se ejecute un TRIGGER asignado BEFORE DYNAFORM, luego de un TIMER EVENT

Posted: Fri Aug 03, 2018 9:25 pm
by amosbatto
Tienes que usar un script task despues de tu intermediate timer event. Puedes setear el trigger para ejecutar after routing en "tarea 1", pero va a ejecutar antes del intermediate timer event.

Bueno, puedes hacer algo afuera de ProcessMaker, como usar cron para ejecutar un script en un minuto que llama PUT /api/1.0/{workspace}/cases/{app_uid}/execute-trigger/{tri_uid}.

Re: Cómo hacer que se ejecute un TRIGGER asignado BEFORE DYNAFORM, luego de un TIMER EVENT

Posted: Mon Aug 06, 2018 6:31 pm
by claudiojeraldo
Así fue, finalmente tuve que añadir tareas "script task" para hacer lo requerido, no quería añadir tantas tareas extra, tuve que terminar haciendo esto para lograr mi cometido.

Gracias por tu ayuda