Descripción

La tarea Return Address Setter se encarga de establecer una dirección de respuesta para que pueda ser usada por un puerto de tipo respuesta.


Funcionamiento

La tarea copia en la cabecera del mensaje de entrada (entrada superior de la tarea) la dirección de retorno contenida en el mensaje de contexto (entrada inferior de la tarea). La dirección de retorno sirve para devolver la respuesta a una aplicación externa desde un puerto de respuesta.



TmQoYNCKD8lwKPbKbOa9XBG8AfUirfvi8g.pngDirección de retorno en la cabecera del mensaje: Todos los mensajes de i2factory mantienen una cabecera con información extra adicional a los elementos del mensaje XML, lo que se denominan metadatos, como podrían ser el propio identificador del mensaje (de tipo UUID), la fecha de creación y un mapa de pares clave-valor con otra información extra, siendo una de las claves precisamente la dirección de retorno. Toda esta información no es visible ni accesible por el usuario estándar de i2factory.
ReturnAddressSetter es una excepción o una manera de salvar esa limitación, ya que permite al usuario "acceder" a la dirección de retorno para copiarla en otro mensaje distinto. Realmente el usuario no ve ese valor ni puede manipularlo, pero puede evitar que se pierda esta información importante. De hecho es la única manera de poder responder correctamente a un servicio externo que esté a la espera.
Esta dirección de retorno es un campo cuyo valor es establecido por todos los puertos de tipo respuesta que insertan un mensaje entrante en la solución de integración. Como el puerto de respuesta requiere de un mensaje de salida (la propia respuesta) para cada mensaje entrante, este valor le ayuda a corresponder cada mensaje de salida con la dirección correspondiente de respuesta.


y5Bw1U3u1o-S0IvDp5H6vkQZYCQEiK4ecQ.png¿Cuándo debo usar Return Address Setter? El uso de esta tarea es muy excepcional y esporádico dado que por norma general los datos de la cabecera de un mensaje (incluido el campo return address) son mantenidos siempre por i2factory en los mensajes, incluso cuando pasan por otras tareas o por un puerto de solicitud, por lo que la información del puerto de respuesta ya va incluida.
Entonces, será necesario el uso de esta tarea solo cuando se quiera responder con un mensaje que proviene de un flujo totalmente independiente del camino por el que viaja el mensaje introducido por el puerto de respuesta.
Por ejemplo, imagina una solución de integración en la que el puerto de respuesta introduce el mensaje en el proceso y escribe en un recurso externo fichero por un lado (FLUJO 1). Por otro lado, un puerto de entrada lee desde otro recurso externo y devuelve la respuesta (FLUJO 2). Como estos dos flujos no se cruzan, los mensajes de FLUJO 2 no llevan incorporada la dirección de respuesta (que los mensaje del FLUJO 1 sí llevan). De este modo, se hace necesario "cruzar" ambos flujos mediante la tarea Return Address Setter y añadir a los mensajes del FLUJO 2 la dirección de retorno obtenida de un mensaje del FLUJO 1.