Ejecución de pipelines

Introducción

La ejecución de pipelines puede suceder en cualquier elemento de la plataforma, ya sean procesos BPM, Reglas, Servicios ó cualquier clase Java, por tal motivo es importante entender para que de desarrollan pipelines. Generalmente en la industria del seguro los servicios tienen dos grandes sectores:

  • Parte estática.
  • Parte dinámica u orientada a reglas.

Por ejemplo si tomamos un servicio de cotización, sabemos que la parte estática estará compuesta por el recupero de todos los elementos necesarios para realizar la cotización, por ejemplo, tasas, zonas de riesgo, categorías de riesgo, etcétera. Ahora bien la parte dinámica es la cual cada aseguradora aplica su propio algoritmo de inferencia o cálculo con los elementos previamente recuperados. Por tal motivo esta última parte tiende a ser dinámica, cada aseguradora tiene su forma de calcularlo y es seguro que lo modificará repetidas veces en el tiempo. Dado esto úlitmo, para este tipo de servicios, que son innumerables en nuestra industria, es donde comienza a tener sentido la utilización de pipelines, que son scripts o reglas dinámicas, las cuales no necesitan elementos de compilación o deployment, esto los hace extremadamente ágiles y fáciles de cambiar para acompañar al cambiante negocio en su trayecto, reduciendo el time to market y mejorando el ROI de la implementación.

Ejecución de pipelines

Cada pipeline, como se mencionó previamente,posee un nombre o nomenclador que lo identifica unívocamente. El siguiente script describe una forma muy sencilla de invocar un pipeline:


public class TestService{

    @Autowired
    EngineService engineService;

    private String pipelineName;

    @Test
    public void quote() throws ISBException{
        new PipelineInvokerTemplateImpl(insurer,pipelineName,map)invoke(engineService);
    }
}

Donde:

  • "insurer" es el código de aseguradora que identifica al pipeline.
  • "name" es el nombre del pipeline que se está ejecutando.
  • "map" respresenta una implementación de java.util.Map donde se pasan todos los parámetros necesarios para la ejecución del pipeline.
  • "engineService" es el servicio de ejecución el cual previamente deberá estar inyectado en la clase del servicio.

Generalmente es una buena práctica poder tener desacoplado los pipelines y su configuración mediante el uso de la configuración de servicios, por ejemplo en el archivo isb-services.xml.

<bean class="com.sysone.isb.services.TestServiceImpl" id=testService" lazy-init="true">
   <property name="pipelineName" value="PIPELINE_NAME" />     
</bean>

results matching ""

    No results matching ""