<< Clic para mostrar Tabla de Contenidos >> Mejores prácticas en integraciones |
Bizagi provee una poderosa capa de integración que sigue una arquitectura orientada a servicios que soporta las diferentes posibilidades de integración para toda la solución corporativa.
En proyectos donde es necesario integrar el procesos con aplicaciones existentes (po ejemplo, sistemas ESB), La capa de Integración de Bizagi presenta múltiples opciones. Es posible invocar servicios basados en Web (por ejemplo., SOAP, REST) o APIs directamente dentro de los procesos de Bizagi (por ejemplo, dlls, jars).
Esta sección brinda algunas recomendaciones y prácticas para crear y configurar interfaces eficientes que no afecten la experiencia del usuario y la ejecución normal de los proceso.
Use actividades asíncronas
Cuando el tiempo involucrado en la transacción de un punto de integración es significativamente alto, se debe usar tarea asíncronas en vez de las tareas síncronas, esto debido a las siguientes razones:
•Cuando usa interfaces síncronas, mientras estas son ejecutadas, las tablas involucradas son bloqueadas hasta el final de la transacción.
•Las interfaces síncronas esperan una respuesta de un servicio externo antes de permitirle continuar al caso.
•Cuando usa interfaces síncronas, si la respuesta toma demasiado, las tablas usadas pueden ser bloqueadas, afectado a TODOS los usuarios finales.
•Cuando usa interfaces síncronas, si la interfaz falla, se bloqueará el caso.
Las Actividades Asíncronas han sido diseñadas especialmente para llamar interfaces externas, las cuales son usadas principalmente para integración con servicios existentes en otros sistemas.
Cuando tiene actividades que invoquen servicios externos (Servicios Web SOAP o servicios REST) o que usen un componente de integración (a través de la Librería de Componentes), use la propiedad Asíncrono para esta actividad. De esta manera, va a tener una actividad que maneja los reintentos y demás posibilidades para administrar transacciones (por ejemplo, se evitan bloqueos de retardo) en puntos del proceso donde hay un tiempo de servicio significativo (debido a un posible retraso en la comunicación con sistemas externos).
Use interfaces síncronas solo si puede garantizar absolutamente que el servicio externo le responde en un máximo de 3 segundos. De esta manera, los usuarios no se verán afectados. De lo contrario, convierta su interfaz a asíncrona.
Habilite Mostrar Retroalimentación (show feedback) en interfaces que NO TOMEN más de 10 segundos
Las tareas automáticas tienen una propiedad llamada Mostrar Retroalimentación (Show Feedback). Cuando se activa esta propiedad, Bizagi ejecutará inmediatamente la actividad a través de su Portal de Trabajo; se mostrará una página de espera mientras se procesa la solicitud, notificará la terminación o el fallo de esta ejecución. Cuando esta propiedad está deshabilitada, La actividad asíncrona es ejecutada después por el servicio del Scheduler. Para el usuario final, el Portal de Trabajo notificará que la ejecución a sido programada.
Cuando las interfaces no tienen retroalimentación, son ejecutadas por el Scheduler, permitiéndole al caso continuar sin que los usuarios finales esperen por una respuesta.
En las Interfaces que tardan mucho tiempo en responder (como las interfaces de manejo documental), la retroalimentación hará que la aplicación se vea lenta y causará problemas de desempeño inminentes.
Opciones:
Si sabe que una interfaz tarda mucho tiempo para procesar (debido a su naturaleza y la cantidad de procesamiento que debe hacer), diseñe la actividad automática sin retroalimentación. Por lo tanto, que quede fuera de la experiencia del usuario.
Deshabilite Mostrar Retroalimentación (show feedback) cuando la primera actividad de un Subproceso múltiple es una tarea automática
Las tareas automáticas tienen una propiedad llamada Mostrar Retroalimentación (Show Feedback). Cuando se activa esta propiedad, Bizagi ejecutará inmediatamente la actividad a través de su Portal de Trabajo; se mostrará una página de espera mientras se procesa la solicitud, notificará la terminación o el fallo de esta ejecución. Como el subproceso es múltiple, la página de espera de esta tarea no puede ser mostrada a los usuarios finales.
Asegúrese de que la interfaz se ha completado exitosamente antes de continuar
En escenarios donde su proceso está integrado con sistemas externos y la información involucrada en dicha integración es enviada a Bizagi de manera asíncrona, se recomienda usar eventos BPMN en el modelo del proceso.
Cuando algún sistema externo complete un trabajo asíncrono, dicho sistema notifica a Bizagi y envía de vuelta la información lanzando un Evento BPMN en el modelo del Proceso. De esta manera, no quedan trabajos pendientes que continúen escuchando o pidiendo una actualización, pero el sistema externo puede trabajar sin estar atado a Bizagi y notificarlo cuando haya terminado.
Esto también aplica si un cliente tiene una estrategia de integración basada en colas de mensajería. En este caso, se le debe solicitar al cliente la generación de una capa "Broker" que exponga Web Services. Esta integración debe ser diseñada y provista usando el modelado asíncrono "físico", es decir que es invocado por el Web Service al Broker, este recibe el mensaje de confirmación y después, el broker invoca a Bizagi usando la capa SOA para ejecutar un evento:
Utilice puntos adecuados de integración
El punto por el que se invoca una interfaz tiene un alto impacto en el comportamiento de la interfaz en ejecución. Realice un análisis profundo de cuál es el mejor punto de integración de acuerdo con las condiciones de negocios para evitar problemas de rendimiento. Cuando defina los puntos de integración tenga en cuenta:
Invocar los servicios externos desde dentro de los procesos en Bizagi, se recomienda definir estos puntos de integración como tareas de servicio BPMN.
Siempre deben estar configurados como tareas asíncronas y tienen un tiempo de espera de 10 a 15 segundos.
Dependiendo del SLA acordado con el cliente, se tienen las siguientes opciones:
•SLA menor de 10 segundos: Utilice una tarea automática para llevar a cabo la integración
•SLA mayor que 10 segundos: Debe ser modelado utilizando un patrón asíncrono. Esto apunta a reducir los tiempos y obliga a dividir el servicio en 2 elementos:
oIntegración asíncrona es invocada únicamente para enviar información y recibir la confirmación.
oUn evento en Bizagi espera la respuesta del sistema externo a través de la capa de Bizagi SOA.
Como práctica recomendada, la integración con otros sistemas debería realizarse a la salida de las actividades (On Exit de las acciones de actividad). Esto aplica al uso del Conector de servicios Web, el conector de SAP u otros conectores, y a la librería de componentes en general. |
Manipule sólo la información necesaria en los servicios web SOAP o en las invocaciones de servicios REST
Cuando tenga Actividades que invoquen servicios externos (servicios web SOAP o REST Services), siempre se deben asignar y actualizar aquellos atributos que están involucrados estrictamente en la respuesta.
De esta manera y de acuerdo con las buenas prácticas, la invocación de su servicio externo debe manejar (recibir y devolver) sólo la información estrictamente necesaria.
Tenga en cuenta estas recomendaciones cuando necesite crear y publicar un servicio Web nuevo en un sistema externo, por lo que el intercambio óptimo de la información se considera en este diseño.
Ponga a punto su configuración de la interfaz
Ponga a punto sus interfaces después de un mes de estar en producción. Después de este tiempo, usted tendrá estadísticas que le permitan ajustar los tiempos de espera, retroalimentaciones, reintentos y los intervalos de reintento.
Considere un ODS para reportes (o integración de herramientas de BI)
La función ODS de Bizagi (Operational Data Store) está diseñada para mejorar la disponibilidad del servidor de Bizagi (mejora el rendimiento y confiabilidad en general también).
Esto significa que cuando se ejecuten consultas pesadas, de alto consumo de recursos donde se manejan grandes volúmenes de datos, deberá considerar el uso de una base de datos replicada para evitar afectar el rendimiento de la base de de datos transaccional (las operaciones diarias).
Por ejemplo, si se integra la base de datos de Bizagi con cualquier herramienta de reportes o BI, usted tendrá que apoyarse en el concepto de ODS de Bizagi para asegurarse de que los informes que se produzcan se hagan sobre la base de datos replicada.
De esta forma, las consultas realizadas directamente a esta base de datos replicada no utilizarán los recursos asignados a la base de datos transaccional (lo cuál también previene bloqueos potenciales).
Configure solo una interfaz independiente del número de invocaciones
Cuando se invoque servicios Web SOAP o REST en diferentes puntos del proceso, configure solo una interfaz independiente del número de tareas que invoquen el mismo servicio (solo una por URL del servicio Web).
¿Qué se debe evitar?
Evite invocar las interfaces en botones o expresiones (reglas)
En algunos casos, puede ser necesario invocar interfaces desde botones en las formas o desde reglas. Si es estrictamente necesario, tenga en cuenta que:
•Las Interfaces ejecutadas desde botones o desde expresiones (reglas) son siempre síncronas. Por lo tanto, utilice botones para realizar integraciones si el SLA es menor de 10 segundos. Si el SLA es superior a 10 segundos, el usuario debe repensar el comportamiento de la actividad (posiblemente dividirlo) y llevar a cabo la integración mediante un modelo asíncrono.
•Cuando se está ejecutando una interfaz, las tablas que participan serán bloqueadas hasta que se termine la transacción.
•Las interfaces síncronas esperan una respuesta del servicio externo antes de permitir que el caso continúe.
•Si la respuesta tarda demasiado, las tablas utilizadas pueden ser bloqueadas, afectando a TODOS los usuarios finales.
•Si la interfaz falla, se bloqueará el caso.
Opciones:
•Utilice la opción interfaces disponible en el evento A la salida de las acciones para invocar las interfaces en lugar de utilizar los botones.
•Utilice la opción interfaces disponibles en las acciones de la actividad para invocar las interfaces en lugar de utilizar las reglas.
Evite combinar interfaces y reglas
Bizagi ejecuta expresiones e interfaces en una sola transacción, la expresión Al Salir de una actividad junto con la expresión Al Entrar de la siguiente. Cuando las expresiones que están relacionadas a la ejecución de interfaces son muy complejas, se verá afectado el rendimiento.
Opciones:
Las expresiones relacionadas con la ejecución de una interfaz (en la misma acción Al Salir o Al entrar de la siguiente tarea manual) deben ser muy simples.
Si se necesitan expresiones complejas úselas en el evento Al Salir de la siguiente tarea manual, cuando sea posible, para evitar ser parte de la misma transacción.
Evite combinar interfaces secuenciales con "show feedback" y sin "show feedback"
Combinar interfaces secuenciales con y sin "show feedback" puede bloquear la base de datos,
Opciones:
Para interfaces secuenciales, seleccione para todas o para ninguna la opción "show feedback".
Evite el uso de muchos reintentos, y evitar intervalo de reintento corto
Al definir una tarea de servicio BPMN como una actividad asíncrona, Bizagi permite configurar el número de reintentos, en caso de que las acciones de integración de la actividad no respondan en un umbral determinado (normalmente, una invocación a un servicio externo).
Por lo tanto, en este escenario en el que falla una actividad asíncrona (es decir, no se ha iniciado una aplicación externa, hay problemas de conectividad, etc) y supera el número de intentos predefinidos, Bizagi ofrece la posibilidad de que un administrador revise, siga/diagnostique y reintente manualmente este tipo de operaciones.
La forma en que están configurados los parámetros de las actividades asíncronos afecta directamente el rendimiento de la aplicación.
•Cuando los reintentos están configurados, piense muy bien acerca de los tipos de errores que serán recibidos. Pregúntese: ¿Vale la pena volver a intentar?
Si los errores son del tipo: usuario no existe en el sistema externo o ruta del documento inválida, no importa lo mucho que vuelva a intentar, la interfaz nunca funcionará. Entonces, tiene que pensar en otra forma de solucionar este tipo de errores y evitar el uso de reintentos. Por otro lado, si los errores son del tipo: sistema no responde o problemas de concurrencia, entonces tiene sentido volver a intentar.
•Pregúntese: ¿el tiempo de 1 minuto es suficiente para que el sistema se recupere?
Opciones:
•Use actividades asíncronas cuando programe reintentos.
•Piense si reintentar tiene sentido y cuánto tiempo tomará el error que hay que resolver para que el reintento tenga sentido.
Evite timeouts de más de 10 segundos
Las interfaces que necesitan timeouts de más de 10 segundos son interfaces complejas que deben tener un tratamiento diferente. Estas interfaces pueden bloquear la base de datos hasta que se reciba una respuesta afectando a todos los usuarios finales.
Las interfaces lentas generalmente son las que se conectan con sistemas de gestión de documentos. Es común ver en proyectos que utilizan 30 segundos o más en los timeouts, junto con 3 o 4 reintentos: lo que es 120 segundos de tablas esperando una respuesta y desacelera todo el sistema.
Cuando el sistema externo tarda mucho tiempo para responder, Bizagi bloquea las tablas involucradas hasta que se reciba una respuesta. Esto causa problemas de rendimiento para todos los usuarios finales, dañando la percepción de Bizagi, cuando lo que realmente está sucediendo es que un sistema externo no está respondiendo con rapidez; esto no es culpa de Bizagi.
Opciones:
Diseñar las interfaces que se encolan en el sistema externo y luego actualice Bizagi cuando se hayan ejecutado:
•Indique como respuesta si un elemento del caso ha sido 'encolado con éxito" o "no encolado ".
•El sistema externo debe manejar colas y ejecutar las instancias una por una.
•Cuando el servicio en el sistema externo haya terminado, el sistema externo debe establecer un evento en Bizagi para permitir que el proceso continúe.