jueves, 21 de enero de 2016

Pipeline Template en Oracle SOA Suite 12c

¿Alguna vez han sentido que ya construyeron eso antes? Seguramente es un Déjà vu, aunque es probable que sí hayan escrito ese código con anterioridad.

Si se escribe el mismo código más de una vez, es conveniente asegurarnos que no tenemos un problema de diseño. Cuando no es posible evitar escribir ese código que ya se había hecho antes, lo mejor es pensar cómo ahorrar tiempo para no hacerlo una y otra vez.

Es posible también que existan partes del código en las que sea necesario alinearse a algunos lineamientos en particular. Por ejemplo: cuando se presenta un error, debemos reportarlo a través de una alerta. O bien, el primer paso del flujo debe ser validar el mensaje de entrada. Otro ejemplo puede ser que antes de que nuestro flujo devuelva una respuesta, debamos enviar la salida a un reporte. Estos y muchos otros lineamientos pueden aplicarse como estándares para todos los desarrollos al interior de la organización.

Ahora bien, ¿es necesario escribir este código todo el tiempo? La respuesta es no. Con Oracle SOA Suite, es posible crear plantillas reutilizables.

En este caso nos centraremos en la creación de una plantilla para un pipeline de Oracle Service Bus (y de paso nos aseguramos que TODO el equipo de desarrollo incluya ciertos estándares dentro de un tipo de servicio en particular).

Lo que debemos tener es una aplicación de tipo Service Bus:

 
Posteriormente, un proyecto de tipo Service Bus:

Ahora, vamos a crear una plantilla de pipeline a partir del proyecto recién creado:


Colocamos el nombre de nuestra plantilla:


Elegimos el tipo de servicio. Escogí Any XML para no tener que generar un WSDL:


En el navegador de aplicaciones, debemos ver la plantilla recién creada:




Al centro de la pantalla podemos observar que la plantilla está lista para ser editada:




Es momento de empezar a personalizar la plantilla. Aquí es posible agregar todos los componentes deseados (nodos, enrutamiento, control del flujo, procesamiento de mensajes, reportes). Vamos a hacer un ejemplo simple en donde colocamos un pipeline pair y un error handler. En el pipeline de entrada colocamos un stage donde deseamos que se realice la validación del mensaje de entrada. Posteriormente un placeholder para que el desarrollador pueda colocar los stages que necesite. En el pipeline de salida tenemos un stage para reportar el mensaje de salida, adicional a los stages que el desarrollador deseé colocar para algún funcionamiento particular. Finalmente en el error handler colocamos dos actividades: una para reportar el error y otra para generar una alerta. De tal forma que nuestra plantilla queda configurada de la siguiente forma:


Guardamos y hasta aquí, tendremos lista la plantilla para que pueda ser usada por nuestro equipo de desarrollo. La plantilla nos enviará algunos mensajes de error y se colocarán unas banderas de color rojo. Esto indica que algunas actividades no están completas. Justo lo que deseamos es que estas actividades sean personalizadas por cada desarrollador. En el caso de la actividad validate, el desarrollador que use la plantilla es el responsable de completar la configuración de la actividad, de acuerdo al mensaje que se requiera validar.

Ahora, ¿cómo usamos la plantilla? Hagamos de cuenta que esta plantilla nos ha sido entregada por el equipo de estandarización de código y que debemos usarla para todos nuestros desarrollos que tengan esta forma de flujo:

 

Colocamos el nombre a nuestro pipeline:

Elegimos el tipo de servicio (Any XML):


¿Observan esa mezcla de colores gris y blanco?


Esto es debido a que nuestro pipeline nos indica que ha sido creado a partir de una plantilla. Las partes grises son las que indican las secciones que NO pueden ser alteradas. Las partes blancas son las secciones que pueden ser personalizadas por el desarrollador (¿se acuerdan de los placeholders que usamos cuando creamos la plantilla?). Justo en esas secciones de color blanco es donde agregaremos stages que contengan las necesidades particulares de cada flujo. Las secciones grises son aquellas generales que contendrán todos los flujos basados en esta plantilla.

Eliminemos las banderas rojas: seleccionamos la acción validate y configuramos lo necesario para que la actividad esté completa. JDeveloper incluso nos marca en rojo lo que hace falta por configurar:




Creamos una alerta para configurar dentro del error handler:



Configuramos el destino de la alerta hacia la recién creada y nuestro flujo estará casi terminado.

Finalmente, agregamos los stages necesarios (los que le tocan al desarrollador) para concluir con la construcción de nuestro flujo:


Nuestro flujo es completamente válido y puede ser desplegado y probado.


Con esto, podemos ahorrar tiempo en la construcción de algunas partes de nuestros servicios, que son comunes a todo el equipo de desarrollo. Con la creación y uso de una plantilla, podemos asegurar que todas esas partes generales se agregarán de la misma forma (y con el mismo estándar) a todos los servicios que se requiera.

3 comentarios:

  1. AL desplegar un pipeline que esta atado a una platilla siempre se genera un warning en la consola del bus.. Por casualidad sabrías a que se debe esto?

    ResponderBorrar
    Respuestas
    1. Hola, perdón por la demora en la respuesta. ¿Podrías copiar/pegar el mensaje del warning? Igual una pantalla podría ser útil para poder diagnosticar lo que está sucediendo.

      Gracias.

      Borrar
  2. AL desplegar un pipeline que esta atado a una platilla siempre se genera un warning en la consola del bus.. Por casualidad sabrías a que se debe esto?

    ResponderBorrar