Relaciones estáticas y dinámicas en WebSphere Process Server y WebSphere ESB V7

Utilizar el servicio de relaciones en WebSphere ESB sin la codificación personalizada

Aprenda a construir los flujos de mediación que contengan relaciones estáticas y dinámicas utilizando IBM® WebSphere® Integration Developer sin la necesidad de utilizar ningún código personalizado de Java™y a continuación despliéguelos y ejecútelos desde el entorno de prueba de la unidad.

Brian Venn, Software developer, IBM

Brian Venn es System Verification Test Team Lead for WebSphere Process Server and Enterprise Service Bus on z/OS, trabaja en IBM en Hursley, Reino Unido, desde octubre de 2000. Tiene 15 años de experiencia en la industria de software. Es Diseñador Certificado de Soluciones de IBM para SOA Solutions, un Profesional Certificado en Despliegues de IBM, y ha participado en la autoría de cuatro exámenes de WebSphere Process Server y Enterprise Service Bus. Brian posee una licenciatura en Astrofísica de la Southampton University, Reino Unido.



21-01-2011

Introducción

El servicio de relación es una parte integrada tanto de IBM WebSphere Process Server (de aquí en más llamado Process Server) como de IBM WebSphere Enterprise Service Bus (ESB). El servicio les permite a los desarrolladores asociar los datos empresariales con diferentes valores en diferentes sistemas, pero representan la misma información. La figura 1 muestra un ejemplo en donde el sistema está trabajando con tres Enterprise Information Systems diferentes. El mismo cliente existe en cada sistema, pero los datos de la ciudad en donde vive el cliente están almacenados de un modo diferente en cada uno de los sistemas.

Figura 1. Escenario del ejemplo
Escenario del ejemplo

El servicio de relaciones tiene dos tipos de diferentes de relaciones: la estática y la dinámica. Las relaciones estáticas son utilizadas para realizar correlacinones entre los valores claves que no sean principales, donde los datos no cambian con frecuencia (por ejemplo códigos postales). Las relaciones dinámicas son utilizadas para definir las correlaciones en los atributos claves que identifican excepcionalmente los objetos empresariales.

El utilizar el servicio de relaciones en un flujo de mediación ESB a través de un primitivo de Business Object Mapper Mediation le permite a usted hacer uso del servicio sin la necesidad de un código personalizado.


Guía del desarrollo de las relaciones estáticas de WebSphere ESB

En este escenario existen dos sistemas empresariales, cada uno con su propia representación de datos que necesitan ser asociados a través del servicio de relaciones.

Por razones de simplicidad, este escenario se compone de una única relación de búsqueda entre un sistema DB2® que utiliza representaciones de tres letras de nombres de ciudades y una aplicación del Process Server que necesita el nombre completo de la ciudad. La solución utiliza el servicio de relaciones para correlacionar, en forma continua, los datos entre los sistemas.

  1. Inicie el Start WebSphere Integration Developer (de aquí en más llamado Integration Developer) y cree un espacio nuevo de trabajo.
  2. Elija File > New Mediation Module.
  3. Nombre el módulo como RelationshipServiceExample.

A continuación, cree los objetos empresariales que serán utilizados para representar cada uno de los sistemas. En este ejemplo existen dos objetos empresariales, uno para la representación externa de DB2 y uno para el sistema Process Server. Los detalles para cada sistema se muestran en la Tabla 1.

Tabla 1. Detalles del Objeto empresarial
SystemNamespaceBOName
DB2 http://www.ibm.com/bo/db2 DB2Customer
WPS http://www.ibm.com/bo/wps WPSCustomer
  1. En Integration Developer, seleccione DataTypes > New > Business Object.
  2. Ingrese los detalles para el Namespace y el Name como lo indica la Figura 2.
    Figura 2. Panel New Business Object
    Panel New Business Object
  3. Haga clic en Finish.
  4. Se abre el editor Business Object. Para DB2Customer Business Object añada cuatro campos string llamados:
    • fName
    • lName
    • Town
    • id
  5. Haga clic en File > Save.
  6. Repita los pasos 1 a 5, esta vez utilizando los detalles para el sistema Process Server de la Tabla 1.

A continuación cree un campo empresarial para cada objeto empresarial:

  1. En Project Explorer, haga clic en la tecla derecha del mouse en DB2Customer Business Object y del menú seleccione Create Business Graph.
  2. Repita este paso para WPSCustomer Business Object.

Una vez completado, usted tiene cuatro ítems listados en Datatypes, uno en Project Explorer, otro en DB2Customer, otro en el objeto empresarial WPSCustomer y el cuarto en sus respectivos gráficos empresariales.

Crear las interfaces

  1. Regrese al diagrama de montaje.
  2. Haga clic en la mediación RelationshipServiceSampley luego en Add interface.
  3. En el cuadro de diálogo “Add interface”, seleccione New.
  4. En el cuadro de diálogo “New interface”, ingrese un espacio de nombres (namespace) de http://www.ibm.com/interfaces/db2 y un nombre de DB2Event como lo indica la Figura 3.
    Figura 3. Editor New Interface
    Editor New Interface
  5. Haga clic en Finish.
  6. El editor de la interfaz se abre. Haga clic en el ícono Add One Way Operation
  7. Defina el nombre de la operación como incomingMessage, el nombre de entrada, como customerIn, y el tipo, como DB2CustomerBG.
  8. Seleccione File > Save.

Agregar la referencia

  1. Regrese al diagrama de montaje.
  2. Haga clic en la mediación de RelationshipServiceSampley luego en Add reference.
  3. En el cuadro de diálogo de referencia Add, seleccione New.
  4. En el cuadro de diálogo de interfaz New, ingrese el espacio de nombres de http://www.ibm.com/interfaces/wps y un nombre de WPSEvent.
  5. El editor Interface se abre. Hacer clic en el ícono Add One Way Operation
  6. Defina el nombre de la operación como receiveMessage, el nombre de entrada, como customerOut, y el tipo, como WPSCustomerBG.
  7. Seleccione File > Save.

Agregar el mapa

  1. Regrese al diagrama de montaje y haga doble clic en RelationshipServiceSample.
  2. Se desplegará un mensaje que indica que el componente seleccionado no está implementado. Haga clic en Yes.
  3. En el cuadro de diálogo “Generate Implementation”, haga clic en OK.
  4. La Visión General de las operaciones está ahora presentada. Hacer clic en incomingMessage Operation debajo de DB2Event.
  5. Un cuadro de diálogo aparece ahora pidiendo que seleccione una Mediation Flow Template (Plantilla del Flujo de Mediación). Seleccione Operation Map.
  6. En el cuadro de diálogo “Select Reference Operation”, haga clic en OK.
  7. El editor l del Mediation Flow se abre ahora. Un primitivo de transformación XSLT por omisión denominado “input_map” es generado. Seleccione este primitivo y elimínelo.
  8. Desde los paneles de los primitivos, seleccione Transformations > Business Object Map y arrastre el primitivo hacia el flujo.
  9. Conecte las terminales del mapa Business Object con las terminales de input y callout como lo indica la Figura 4.
    Figura 4. Flugo de Mediación del editor
    Flugo de Mediación del editor
  10. Agegue un primitivo de falla al flujo. Conecte la terminal de falla del primitivo BOMapper a la terminal de falla.
  11. Haga un doble clic en el primitivo Business Object Map
  12. En el diálogo “New Business Object Map”, ingrese un espacio de nombres de http://www.ibm.com/bo/customerMap y un nombre de customerMapper.
  13. Haga clic en Finish.

Crear el Business Object Map

  1. Ahora el editor Business Object Map se abre.
  2. Haga clic en los + símbolos para ampliar ambos objetos empresariales.
  3. Arrastre una conexión entre customerIn DB2CustomerBG y customerOut WPSCustomerBG.
  4. Este mapa tiene un valor por omisión de “Submap”. Seleccione submap y en el Properties Pane seleccione la etiqueta Details.
  5. En la etiqueta Details del Business Object Map seleccione New.
  6. En el diálogo “New Business Object Map” ingrese un nuevo espacio de nombres de http://www.ibm.com/bo/customerMap y un nombre de RelationshipMapper y haga clic en Finish.
  7. Haga clic en los + símbolos para ampliar ambos objetos empresariales.
  8. Arrastre una conexión desde el campo Name en el objeto empresarial de la izquierda hasta el campo fName que se encuentra a la derecha del objeto empresarial. Repita esto para el campo lName.
  9. Realice esto una vez más en el campo para la ciudad. Una vez completado, haga clic en la operación Move que se muestra actualmente como la operación entre los campos para la ciudad (como se puede ver en la Figura 7). Una ventana diálogo es exhibida con las distintas operaciones de transformación disponibles. De la lista seleccione Relationship Lookup.
    Figura 5. Planificar las relaciones
    Planificar las relaciones
  10. Haga clic en la transformación Relationship Lookup y seleccione Show in Properties.
  11. En la etiqueta Properties seleccione Details.
  12. Para la definición de búsqueda de Relationship haga clic en New.

Crear la relación

  1. En el cuadro “New Relationship Dialog” ingrese un espacio de nombres de http://www.ibm.com/relationships/customerTown y un nombre de customerTown.
  2. Haga clic en Next. Seleccione Static Relationship y haga clic en Next.
  3. Seleccione la relación Identity y haga clic en Finish.
  4. Ahora se abre el editor de relaciones. Haga clic en el ícono Add Role.
  5. En el cuadro de diálogo, seleccione DB2Customer y haga clic en OK.
  6. Repita esto para WPSCustomer.
  7. Seleccione DB2 Customer y haga clic en el ícono Add Key Attribute
  8. En el diálogo “Select Key Attributes” seleccione town y haga clic en OK.
  9. Repita esto para WPS Customer.
  10. A continuación haga clic en el ícono CustomerTown relationship (ubicado justo arriba del ícono Add Role), y seleccione la vista Show in properties
  11. En la vista Properties, seleccione la etiqueta Instance Data (Figura 6).
  12. Ahora ya puede completar la relación con los datos que el servicio utilizará para correlacionar los mismos. En este escenario, usted estará correlacionando entre un sistema DB2 que utiliza una versiones de tres letras de nombres de ciudades, con un sistema Process Server que utiliza el nombre completo de las ciudades. Algunos datos ejemplo se pueden ver en la Tabla 2.
Tabla 2. Datos ejemplo de la relación estática
Valor de DB2Valor de WPS
SOU Southampton
POR Portsmouth
CAR Cardiff
ABR Abertillery
  1. Utilice el botón Add para ingresar a los datos de ejemplo en la relación. Nota: Tenga cuidado de no dejar filas en blanco ya que esto provoca un error en el Integration Developer.
    Figura 6. Ingresar a los datos de de ejemplo de la relación
    Ingresar a los datos de de ejemplo de la relación
  2. Regresar al "mapper" del los clientes, como lo indica la Figura 7. En la vista Properties seleccione customerTown_DB2Customer como nombre del rol de entrada y customerTown_WPSCustomer como nombre del rol de salida.
    Figura 7. Business Object Editor con los detalles de las relaciones
    Business Object Editor con los detalles de las relaciones
  3. Seleccione File > Guarde todo. Todos los problemas y las cruces rojas han desaparecido.

Usted puede desplegar el flujo al sistema y probarlo:

  1. Regrese al diagrama Assembly.
  2. Haga clic en mediation y seleccione Test Component.
  3. En Test Client, ingrese algunos datos en los campos (Figura 8). En el campom de las ciudades, ingrese uno de los nombres de las ciudades de tres letras que habían sido ingresados anteriormente en los datos ejemplo de la relación.
    Figura 8. Test Client con los datos ejemplo
    Test Client con los datos ejemplo
  4. Haga clic en Continue.
  5. Después de unos segundos se ejecutará el flujo. Haga clic en receiveMessage: WPSEventPartner en la salida del cliente de prueba para ver el contenido del mensaje.
  6. En cuanto al contenido del mensaje en la ventana de la derecha, usted puede ver que el campo ciudad del objeto empresarial ahora contiene el valor completo del nombre de la ciudad, lo que indica que la relación ha sido invocada y ha realizado la correlación del valor en forma correcta.
  7. Trate de repetir el caso de prueba para el valor de una ciudad que no esté en el servicio de relación, tal como “XXX”. Usted verá que esto hace que el flujo de mediación se dirija a la terminal de falla que indica que ningún dato de la relación se encuentra disponible para esos datos. Puede utilizar esto para implementar el manejo de los errores en los datos de las relaciones en sus flujos de mediación.

Crear la relación dinámica

El flujo de la mediación contiene la relación estática. La etapa siguiente consiste en agregar un relación dinámica al mapa Business Object.

  1. Abra nuevamente el mapa de datos del mapper del cliente.
  2. En el editor del mapa, trace una línea entre customerIn DB2Customer y customerOut WPSCustomer.
  3. El valor por omisión de esta transformación será “Submap”. Haga clic aquí y de la lista seleccione relationship. El editor del mapa ahora se parece al de la Figura 9.
  4. En el panel Properties, haga clic en la etiqueta Details
  5. Para la definición de Relationship, seleccione New.
  6. El cuadro “Create relationship dialog” aparece ahora. Ingrese el el espacio de nombres de http://www.ibm.com/relationships/customerId y un nombre de DynamicCustomerId.
  7. Haga clic en Next.
  8. Seleccione Relationship Type como una Relación Dinámica y haga clic en Next.
  9. Seleccione una Identity Relationship y haga clic en Finish.
  10. El editor Relationship está abierto ahora. Haga clic en Add Role y seleccione DB2Customer del cuadro de diálogo.
  11. Repita y agregue WPS Customer.
  12. Seleccione un rol y haga clic en Add Key Attribute.
  13. En el cuadro de diálogo “Select Key Attribute”, seleccione id, y haga clic en OK.
  14. Repita esto para el otro rol.
  15. Seleccione el rol DynamicCustomerId_WPSCustomer y haga clic en la etiqueta Details en el cuadro Properties.
  16. Asegúrese de que el cuadro administrada sea el seleccionado.
  17. Guarde y cierre el editor de relaciones.
  18. Haga clic en el mapa de relaciones creado en el Paso 2 y luego en Details en la etiqueta Properties.
  19. Seleccione DynamicCustomerId_DB2Customer como el nombre del rol.
    Figura 9. Agregar la relación dinámica
    Agregar la relación dinámica
  20. Seleccione File > Guarde todo. Todas las cruces rojas han desaparecido.

La mediación actualizada que contiene tanto la relación estática como la dinámica está lista para ser desplegada y ejecutada.

  1. Regrese al diagrama Assembly.
  2. Haga clic en la mediación y seleccione Test Component.

En el Test Client ingrese algunos datos en los campos (Figura 10). En el campo correspondiente a las ciudades ingrese uno de los nombres de tres letras que fueron ingresados anteriormente en los datos ejemplo de las relaciones. En este momento también ingrese algún valor arbirario en el campo Id.

Figura 10. Datos ejemplo del Test Client
Datos ejemplo del Test Client

Esta vez tanto la relación estática como la dinámica son invocadas (Figura 11).

Figura 11. Test Client con una invocación exitosa de las relaciones estática y dinámica
Test Client con una invocación exitosa de las relaciones estática y dinámica

Cuando el mapa del flujo de mediación es invocado con el gráfico del objeto empresarial DB2Customer, se realiza un llamado al primitivo del mapa Business Object en el flujo, el que contiene el sub mapa. El sub mapa llama a la relación con el rol DynamicCustomerId_WPSCustomer. Debido a que el verbo en el Business Graph tiene el valor de “create”, la invocación hace que el servicio relaciones genere una ID única para el rol WPSCustomer. En el ejemplo anterior, la ID es "3". El servicio de relaciones ahora guarda la información de DB2Customer con una ID de “12345” que corresponde a WPSCustomer con una ID de “3”.

Usted también puede invocar la operación recuperar, actualizar o cualquier otra de las operaciones permitidas cambiando el parámetro del verbo en el cliente de prueba. Intente cambiar el verbo en el cliente de prueba y realice una operación de recuperación, actualización o eliminación de una relación dinámica.


Conclusión

Este artículo muestra cómo crear y llamar tanto a la ralación estática como a la dinámica desde el flujo de mediación WebSphere ESB, sin la necesidad de realizar ninguna codificación personalizada de Java.


Descargar

DescripciónNombretamaño
Project interchange fileRelationshipServiceWESBExample.zip30KB

Recursos

Aprender

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=WebSphere
ArticleID=619397
ArticleTitle=Relaciones estáticas y dinámicas en WebSphere Process Server y WebSphere ESB V7
publish-date=01212011