Invocar desde actividades asíncronas

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > Asistente de Procesos > Integrar > Integración con aplicaciones > Conector de servicios Web >

Invocar desde actividades asíncronas

Introducción

Dentro de los procesos, Bizagi presenta la posibilidad de ejecutar ciertas tareas de manera asíncrona con respecto a la ejecución del Portal de trabajo.

Esto permite que los usuarios finales completen sus tareas, sin importar cuál sea el siguiente paso en el flujo del proceso, de manera que Bizagi se encargue de ejecutar lo siguiente como una tarea no-interactiva con el usuario (en segundo plano).

 

En Bizagi, este tipo de ejecución en tareas se conoce como Actividades asíncronas: y a través de ellas, usted también podrá configurar una comunicación asíncrona con un sistema externo.

Para indicar que en un proceso, ciertas tareas deban ser ejecutadas de esta manera asíncrona, usted debe primero asegurarse de utilizar las Tareas de Servicio (de tipo automáticas) de la notación estándar BPMN, y seguidamente, configurarla para esté habilitada la propiedad que le permite actuar como asíncrona.

 

Asynchronous_Overview

¿Por qué usar Actividades asíncronas?

Las Actividades asíncronas han sido diseñadas especialmente para manejar un tratamiento especial en puntos del proceso donde se requiere integrar aplicaciones externas.

Ya sea por medio de interfaces (servicios web) o por medio de llamados directos desde componentes (Librería de componentes), este tratamiento especial se requiere cuando hay conexiones a aplicaciones externas para que se consideren estos aspectos:

Si la aplicación externa estuviera fuera de línea (o temporalmente fuera de servicio), entonces Bizagi dejará en cola la ejecución para volver a intentar esta parte desde un segundo plano.

Si la ejecución se demora, entonces habrá un timeout (se agota un tiempo de espera) que dejará igualmente en cola esa tarea para que Bizagi la vuelva  a internar desde un segundo plano.

 

Asynchronous_Information

 

Si la ejecución se demora, entonces usted podrá manejar la transacción de la mejor manera con Bizagi para evitar bloqueos potenciales a nivel de base de datos.

Dada la naturaleza de los puntos de integración en los procesos, en la cual existe una posibilidad alta de que se prolongue su tiempo de la ejecución (debido a factores externos como: el estado de la conexión, la capacidad de procesamiento de la aplicación externa, etc), es una buena práctica e ideal para el rendimiento general, que esta transacción se maneje separadamente de las otras (donde pueden haber actividades simultáneas u otras transacciones pendientes en el Portal de trabajo, disparadas por los demás usuarios).

 

note_pin

Bizagi administra el acceso de datos a través de sus componentes (como por ejemplo, el conocido como Entity Manager), por medio de los cuales implementa diversas medidas para evitar bloqueos o para optimizar las operaciones de persistencia de información (p.e escrituras a la base de datos).

Lo anterior permite a Bizagi hacer un commit de las transacciones tan pronto los usuarios completen sus tareas dentro del flujo de proceso, y que el Portal de trabajo cargue y asigne de manera automática las siguientes tareas del flujo.

 

Dado que estas transacciones son diseñadas para persistirse en un segmento corto de tiempo, es recomendado apoyarse en el tratamiento especial que maneja Bizagi cuando hay conexiones a otras aplicaciones porque en estos escenarios, el tiempo de ejecución puede variar ampliamente (aumentarse de manera desconocida) y no se tiene control sobre ello.

 

Comunicación asíncrona de aplicación a aplicación

Adicional a las razones anteriores, este tipo de tarea le permitirá modelar en Bizagi una integración asíncrona con otra aplicación externa, al apoyarse también en los Eventos de tipo intermedio de la notación estándar BPMN.

En la imagen a continuación, note que usted podrá hacer que Bizagi dispare el procesamiento en la aplicación externa mediante la tarea llamada Interface, recibiendo un acuse de recibo (ACK) de manera inmediata por parte de la aplicación externa.

El proceso continuará con la siguiente tarea, pero en paralelo también espera a que se complete la ejecución del Evento intermedio, de la parte de abajo.

 

Good practices8

 

 

Una vez que la aplicación externa termine el procesamiento el cuál está a su cargo, podrá disparar a su vez el Evento en Bizagi por medio del API de servicios web de Bizagi (la Capa SOA).

Tenga presente que en este modelo, usted deberá enviar en el mensaje de invocación de la interface, la metadata necesaria (incluyendo el ID del evento, y demás información como un callback address), que permite a la aplicación externa notificar de vuelta a Bizagi.

 

¿Cómo funcionan las Actividades asíncronas?

Las Actividades Asíncronas son una variante en la manera como se ejecuta una Tarea de Servicio (aunque son la variante recomendada en Bizagi).

 

Esta funcionalidad tiene el siguiente tratamiento:

Cuando en el proceso hay una Actividad asíncrona, las acciones configuradas a la entrada de la tarea -onEnter- (típicamente reglas de negocio) son ejecutadas de manera inmediata.

Cuando la transacción asociada a esas acciones onEnter finaliza, entonces las acciones pendientes asociadas a la salida de la tarea -onExit- (reglas de negocio, servicios web, componentes, etc), serán ejecutadas en una transacción nueva (aparte).

En este punto la culminación de la Actividad será presentada como pendiente por hacer a los usuarios finales (o, desplegándose un mensaje de "procesando..." si se cuenta con la propiedad que muestra retroalimentación -Show feedback-).

Esto difiere del tratamiento que se da a Actividades que no son asíncronas porque de la otra manera, se tendrá que tanto las acciones onEnter u onExit harán un rollback en caso de fallo en la ejecución de las acciones en onExit.

 

Si la Actividad asíncrona falla, entonces esta será administrada mediante los reintentos automáticos que realiza el servicio Programador (como tareas en segundo plano).

Una vez que la ejecución haya sido exitosa por medio de un reintento, el servicio Programador notificará al Portal de trabajo que la siguiente Actividad está disponible (y los usuarios finales sabrán de la disponibilidad de esta Actividad desde su inbox, o por medio de un correo, si se ha diseñado el uso de notificaciones automáticas para dicha Actividad).

 

Modeling_the_Process9_Image009

 

 

Por otro lado, en caso de que la Actividad asíncrona falle continuamente y se alcance el número máximo de reintentos pre definidos, esta Actividad se listará en la consola de administración de Actividades asíncronas, con su log correspondiente (para que la causa sea diagnosticada y revisada por un administrador).

Si dentro de la definición del flujo de proceso, aún cuando los siguientes pasos sean también Actividades asíncronas (una cadena de ellas), Bizagi las manejará en transacciones separadas y cada Actividad asíncrona podrá hacer rollback hasta su determinado punto.

 

 

¿Cómo configurar una Actividad asíncrona?

Las Actividades Asíncronas se definen en el momento de crear el modelo del Proceso (en el primer paso del Asistente de Proceso, por medio del uso de Tareas de Servicio de la notación estándar BPMN).

A partir de ese punto, usted podrá configurar cada una de esas Tareas para que se maneje como una Actividad asíncrona.

 

Para configurarlo, desde el primer paso del Asistente de proceso en Bizagi Studio, realice lo siguiente:

 

1. Dé clic derecho sobre la Tarea de Servicio y seleccione la opción Propiedades.

 

Asynchronous_Properties

 

2. Ubique el conjunto de propiedades del manejo asíncrono en la pestaña de configuración Básica.

 

Asynchronous_Information

 

3. Habilite la propiedad Es Asíncrona.

Una vez habilitada, ingrese los valores de los parámetros de la ejecución asíncrona para definir cómo se manejarán los fallos.

Consulte la siguiente tabla para conocer a detalle cómo configurar cada parámetro.

 

PARÁMETRO

DESCRIPCIÓN

RECOMENDACIÓN

Reintentos

Determina el número de veces que la ejecución asíncrona intentará  la ejecución de las acciones automáticamente (en caso de falla).

Se recomienda enfáticamente utilizar esta propiedad, por lo menos configurando 1 reintento automático.

Las ejecuciones que no sean exitosas incluso en reintentos, indican que el servicio externo experimenta algún inconveniente por lo que deberá escalarse con el administrador.

Intervalo de Reintento

Define un intervalo de tiempo en minutos, bajo el cuál Bizagi esperará antes de reintentar una nueva ejecución (en caso de falla inicial).

Se recomienda enfáticamente utilizar esta propiedad.

Configure un intervalo de reintento que sea adecuado al SLA de su servicio externo.

Mostrar Retroalimentación

Esta propiedad es útil para servicios que son propensos a ejecutarse muy rápidamente.

 

Esto se debe a que cuando esta propiedad esta habilitada, Bizagi ejecutará inmediatamente la Actividad a través de su Portal de Trabajo (de manera interactiva), y una página de espera se mostrará al usuario mientras la solicitud se procesa.

Por lo tanto cuando la ejecución se complete, el Portal de Trabajo cargará la siguiente tarea al usuario final si éste tiene una pendiente y designada, del mismo caso.

La ventaja de habilitar esta propiedad es que el usuario final podrá ver de manera casi inmediata, que la tarea se ha completado y que su siguiente tarea se encuentra disponible (porque de lo contrario y sin esta propiedad, el Portal de trabajo mostrará al usuario final un mensaje indicando que se ha agendado la ejecución y no se redirige a la siguiente tarea).

 

 

Si la invocación falla o se demora, el usuario final verá la forma de resumen o será notificado del fallo (en este punto se deberá contactar al administrador).

Aún así, la ejecución de asíncronas fallidas será reintentada por el servicio Programador en segundo plano.

Si está utilizando esta opción, es muy importante que la definición del tiempo de espera no sea muy alto (p.e que no exceda los 10 segundos). De lo contrario, no será adecuado el uso de la propiedad Mostrar retroalimentación.

Tiempo de Espera

Define un intervalo de tiempo en segundos, poniendo el límite máximo que espera Bizagi de la ejecución.

La aplicación externa debe responder dentro de ese intervalo de tiempo, o de lo contrario, Bizagi cancelará la operación pendiente.

Se recomienda enfáticamente utilizar esta propiedad.

Configure un tiempo de espera que sea adecuado al SLA de su servicio externo.

En caso de que este tiempo sea muy alto, se recomienda que evalúe un enfoque de comunicación asíncrona de aplicación a aplicación.

 

Si está utilizando la opción de Mostrar retroalimentación, es muy importante que su tiempo de espera no sea muy alto (p.e que exceda los 10 segundos). De lo contrario, no será adecuado el uso de la propiedad Mostrar retroalimentación.

 

 

Administración de Actividades asíncronas y reintentos

Observe que se puede configurar un número de reintentos de manera que, en caso de que una Actividad asíncrona falle, Bizagi pueda reintentarla automáticamente sin intervención del usuario.

La Actividad dejará de ser reintentada automáticamente cuando el número máximo de ejecuciones sea agotado.

 

En estos casos, se requerirá de la intervención de un administrador, quien podrá apoyarse en las opciones de la Consola de Actividades asíncronas del Portal de Trabajo (para revisar y reintentar manualmente estos casos excepcionales).

Para ver más información acerca de estas opciones de administración, consulte la Administración de Actividades asíncronas.