Sigo avanzando sobre la infinidad de cosas que hay por hacer sobre una arquitectura SOA. Desde hace una semana aproximadamente, mi jefe me pidió que creara un nuevo servicio, un servicio con un nivel de complejidad tangible.
Definitivamente cuando me comentó el plan que tenía y lo que había propuesto (por que eso si... han de saber que a él se le ocurre algo, y lo considera "factible") después... depués toca base conmigo... su arquitecto jr. Jajajajaja!
Pero bueno la idea que tenía él es tomar un servicio, el cual por medio de un dato genérico haría una busqueda, regresando un conjunto de acerciones a esa búsqueda, de dicha congregación de iteraciones, se tenía que tomar el dato "llave" para poder solicitar nuevamente un servicio, y al recoletar la información poder agregarla a la primera respuesta.
Esto en servicios se conoce como "segregación" y se define bajo el patrón de facade.
Funciona de una manera simple, bajo el ambito de programación. En cuestión de servicios y manipulación de los mismos en el Enterprise Service Bus, pues también tiene relativa sencillez. Lo importante es la manipulación de los datos, fundamentando la formación de las respuestas, y con su obviedad de validaciones, ya que no valdrá la pena el hacer el desgaste y costo de ejecución de un método sin sentido o concientes de que con esos parámetros nos regresará una excepción.
Pues bien, dentro de mis planes para el post del día de hoy no estaba el detallar, cómo lo hice, pero por si en un momento dado, alguién más comienza a usar el famoso Oracle Service Bus o comienza a batallar con el tan apreciable XQuery. Pues que sirva de algo el dolor de cabeza que ya sufrí yo por éste día.
Lo principal para mi caso, sin fantasear es simplemente mi servicio final (o de negocio), el cual contiene los dos métodos (o tres o cuatro) que pudieran desencadenarse en cascada.
Mi servicio proxy, el cual simplemente contiene una administración de datos, pero no lógica de negocio sobre el contenido final.
Analisis correcto y manipulación de datos por medio de pasos simples en el servicio proxy.
En mi caso, hice uso de Delete, Assign e Insert.
La idea es esta.
- Hago una llamada al servicio, obteniendo los datos de los clientes, entre ellos la llave de búsqueda
- Valido el valor de dicha llave
- Copio la respuesta del servicio eliminando la sección que será re-escrita
- Recorro cada uno de los elementos generando un nuevo XML con ese dato (el cual será el request)
- Llamo en cada ocasión por dato al siguiente servicio, generando el nuevo pedazo de XML que será agregado a la primera respuesta
- Inserto eso en la primera respuesta
- Fin
Una vez que la validación sea correcta, entonces se procede con los pasos que describí sobre las actividades.
Y bueno de las partes más importantes para mi fue el poder detallar, qué tipo de inserción se haría sobre el nuevo XML como parte agregada dependiente del resultado del segundo servicio.
Se debe tomar en cuenta diferentes detalles, ya que el OSB en momentos podría parecer simple y fácil de entender, la realidad es que, no siempre es lo más sencillo.
Todo tiene su razón y su lógica y uno debe obedecer las recomendaciones que los expertos como Jeff Davids y su excelente blog y también su gran libro que en lo personal me ha dado muchas proyecciones de cómo poder realizar lo que en su momento he necesitado lograr!
En fin, cualquier recomendación que necesiten o incluso duda me pongo a sus ordenes!
Saludos y seguimos pensando en SOA y aplicando SOA.

No hay comentarios:
Publicar un comentario