Para poder empezar a desarrollar los primeros servicios web es necesario el conocimiento previo de ciertas nociones básicas que nos permitan programar en Mule ESB. Así que hoy toca un poco de teoría aburrida, qué es elemental 🙂
Elementos básicos en Mule ESB
Lo primero de todo y más básico es conocer cómo se estructura el código de los programas escritos en Mule. Al igual que en otros lenguajes de programación existen funciones, métodos o procedimientos para agrupar el código, en Mule existen los siguientes elementos:
- flow. Es el flujo donde comienzan las ejecuciones de los servicios/programas que desarrollemos. Los flujos deben tener un conector de entrada, es decir, el punto donde se inicia la ejecución, y podrán definir capturadores de excepciones. En la siguiente imagen se muestra su representación gráfica en Anypoint Studio.
- subflow. El subflujo es una agrupación de código que no puede iniciarse desde el exterior, sólo puede utilizarse si se hace referencia a éste desde otro flujo o subflujo. Además no pueden definirse manejadores de excepciones para los subflujos (a veces esto se vuelve algo tedioso 😕 ) así que cuando se produce una excepción, esta es capturada por el manejador del flujo que llame a este subflujo. A continuación veis la representación de un subflujo.
- private flow. No existe un elemento definido tal cual en Anypoint Studio pero es como la comunidad se refiere a estos flujos. Está a medio camino entre el flujo y el subflujo, tiene todas las características de un flujo salvo que no tiene un elemento de entrada desde el exterior, al igual que el subflujo. La representación gráfica es exactamente la misma que la de un flujo, con la salvedad de que no tiene un conector de entrada:
Variables en Mule ESB
Además Mule tiene ciertas variables que es necesario conocer a la hora de hacer un programa. Todas las variables importantes para la ejecución de los flujos están contenidas en un objeto llamado message el cual agrupa toda esa información. Los elementos más importantes de éste son:
- payload. Contiene la carga útil del mensaje que se está procesando. El payload es muy importante porque es donde se reflejan el resultado de llamadas a servicios web, resultado de transformaciones, etc. Por ejemplo, si hacemos una petición a un web service externo, el body de la petición que hemos realizado se quedará almacenada en el payload.
- flowVars. Variables de flujo. Son variables cuyo ciclo de vida es lo que dura la ejecución del flujo donde se encuentra. Estas variables son débilmente tipadas, así que podemos asignarle valores sin importar su tipo, ya que aunque tienen tipo puede cambiar a lo largo de su ciclo de vida.
- sessionVars. Variables de sesión. Son variables globales, es decir, se puede acceder a ellas desde cualquier flujo en cualquier momento. Igual que las flowVars son débilmente tipadas.
- exception. Se trata del objeto que contiene las excepciones que se producen en el flujo y solo están accesibles cuando se haya producido una excepción, el resto del tiempo estarán vacías.
- inbound properties. Se trata de información que viene contenida en la petición (request), pero que no es el payload. Suena un poco raro pero con un ejemplo se entiende bien: el contenido de una cabecera de un mensaje HTTP se encontrará en las inbound properties. Estas propiedades son inmutables, no pueden cambiar a lo largo de la ejecución del flujo y son un mapa (par de clave y valor), así que podremos encontrar el valor de una cabecera conociendo la clave de la misma.
- outbound properties. Son exactamente igual que las inbound properties pero en este caso son elementos que se añaden cuando hacemos una request a un sistema externo. Por ejemplo, si quisiéramos mandar una cabecera a un servicio web podríamos añadirlo al mapa de outbound properties, indicando la clave y el valor.
Utilizando las distintas variables y los flujos tenemos los conocimientos más elementales para poder empezar a hacer nuestras cosillas. Pero claro no hemos escrito ni una línea de código… no os preocupéis que tenéis el siguiente tutorial, donde vemos más a fondo cómo se hace un programa en Mule, condiciones, bucles, etc. ¡A mover cajitas!
Como siempre, esperamos que os haya ayudado y para cualquier duda contactarnos.