Pipeline

Un pipeline en ingeniería de software consiste en una cadena de ejecución de elementos, generalmente nombrados como stages, cada salida de un stage sirve como entrada del otro dentro de la cadena. El método de ejecución de este patrón es lineal y en un solo sentido. El patrón de pipeline sirve para dividir un problema funcional o servicio, en pequeños componentes reusables. Este es un patrón estructural simple pero muy poderoso para organizar lógica compleja de negocios en pequeños componentes reusables, los cuales pueden ser modificados, editados y removidos independientemente.

Fortalezas de este patrón en la industria de seguros

  • Disminución de la complejidad de la lógica de negocios, sobre todo en aquellos casos donde se realizan cálculos actuariales, cotizaciones o emisiones de diferentes pólizas.
  • Simplicidad y facilidad de lectura de la lógica de negocios sobre todo cuando la misma es compleja.
  • La lógica de negocios puede ser dividida en pequeñas partes (stages).
  • Los módulos generados son potencialmente reutilizables para diferentes casos de uso.

Descripción del patrón

Un stage es la mínima unidad de trabajo de un pipeline. Un stage puede ser reutilizado en muchos pipelines, al mismo tiempo cada stage puede colaborar con otro compartiendo información utilizando un contexto.

Un pipeline agrupa una colección de stages para ser ejecutados. Un pipeline cosiste en stages “normales”, de “error” o “finales”. Los patrones “normales” son ejecutados cuando un pipeline es invocado. En caso de detectar una excepción durante la ejecución, el pipeline dispara la secuencia de stages de error. Por último se ejecutan todos los stages finales.

Al mismo tiempo cada tipo de stage puede ser:

  • Condicional.
  • De ejecución asincrónica.

El contexto actúa como contenedor de elementos y objetos para compartir entre los diferentes stages. Por supuesto un servicio cliente es aquel que contiene inyectado un pipeline, lo inicia mediante un contexto y tiene la posibilidad de ejecutar el mismo.

Ejemplo gráfico de un pipeline

grafico pipeline

Usabilidad

El objetivo del ISB Engine no es solamente poder generar secuencias de ejecuciones de cálculo sino que los mismos puedan ser creados por usuarios finales tales como técnicos de seguros y actuarios mediante la implementación de lenguajes mas simples de scripting o validación de reglas.

¿Motor de Reglas o Motor de Script para seguros?

La pregunta que generalmente surge es que es mejor para nuestra industria. El pensamiento incial que se podría inferir es que los usuarios relacionados con el negocio deberían poder rápidamente adaptar y crear cambios a la lógica, los motores de reglas proveen esto de manera sencilla para rápidamente poder realizar estos cambios. Lo complejo en nuestra industria es que las sentencias simple de if →then→else se transforman en complejas rutinas de cálculo actuarial, bloques y funciones las cuales luego deben ser reutilizadas a lo largo de muchos procedimientos, entonce de pronto un nuevo set de lenguajes emrge y ya no está al alcance de un usuario de negocios poder escribirlas. Dada esta situación ISB Engine provee una plataforma para poder ejecutar dentro de cada stage diversos tipos de componentes:

  • Reglas simples, generalmente expresadas en formato XML
  • Tablas de decisión las cuales son creadas en Excel
  • Scripts mas complejos los cuales pueden estar escritos en diversos lenguajes tales como beanshell, Perl, Groovy, Python

¿Qué es un stage?

Un “stage” como se mencionó anteriormente es la mínima unidad de trabajo que puede existir dentro de un pipeline, este contiene un objeto “ejecutable”, el objeto ejecutable puede ser cualquier elemento que implemente la interfaz ISBEngineExecutable. Cada objeto ejecutable a su vez contiene un recurso donde se encuentra el código ejecutable, dicho código como se describió anteriormente puede ser un script, una regla o una tabla de decisión en Excel entre otros. Esto será descripto en detalle en capítulos posteriores.

Cada stage, puede tener características:

  • Stage condicionales: Aquellos que serán ejecutados si se cumplen condiciones establecidas.
  • Stage asincrónicos: Aquellos que serán ejecutados en forma desatendida, en un thread separado.

Stage condicionales

Los stages condicionales, son todos aquellos stages que para su ejecución previamente se deberá analizar un conjunto de expresiones. Si todas las expresiones son ejecutadas y el resultado de ellas es positivo el stage será ejecutado. Cada expresión deberá retornar un valor true para que el stage sea elegible para su ejecución. Las condiciones se deben expresar en el lenguaje ISB Engine Expression Language el cual es detallado en capítulos posteriores.

Stage asincrónicos

Los stages asincrónicos, son aquellos que pueden ser ejecutados en forma desatendida, generalmente no se necesita una respuesta de los mismos o la respuesta puede ser evaluada desde otro contexto. Generalmente los mismos son muy útiles para:

  • Registro de eventos de auditoría.
  • Envío de correos electrónicos.
  • Llamados a servicios los cuales no tienen respuesta (void).

results matching ""

    No results matching ""