viernes, 17 de abril de 2009

Java Business Integration, JBI. (2)

Modelo de Componentes.

BPEL Service Engine (SE).
Acerca de BPEL SE.
El BPEL SE proporciona servicios en tiempo de ejecución para el despliegue de procesos BPEL. El BPEL SE, se usa para ejecutar WS-BPEL 2.0 (o simplemente BPEL) compatible con los procesos de negocios. WS-BPEL 2.0 (Web Service Business Process Execution Language) es un lenguaje basado en XML usado para desarrollar Procesos de Negocio.
Los procesos de negocios típicamente implican el intercambio, o la orquestación, de mensajes entre los procesos y otros servicios conocidos como Partner Service (Proveedor de Servicio). El contrato entre un proceso de negocio y un proveedor de servicio se describe utilizando WSDL 1.1. El intercambio de mensajes entre un proceso de negocio y un proveedor de servicios es envuelto en los mensajes de un WSDL 1.1, tal como lo define un la especificación JBI, y el enrutamiento vía el NMR (Normalized Message Router) de JBI. El NMR interactua con servicios web externos, no residentes en la JVM local, vinculados por intermedio del Binding Components (BC). El BC es el responsable de encapsular los detalles específicos del protocolo utilizado. Las transacciones entre el BPEL SE, se colocan como un EJB o un componente Web que se manejan atreves del Java EE SE.
EL WS-BPEL 2.0 utiliza las especificaciones XML: WSDL 1.1, XML Schema 1.0, XPath 1.0 y XSLT 1.0. Hay que tener en cuenta que la especificación JBI está destinada a WSDL 2.0 y WSDL 1.1 quedara asumida por esta nueva versión. El BPEL SE soporta operaciones one-way, request-response (como se define en el WSDL 1.1), dentro de estado, de larga duración que involucran la interacción de dos o más partes. Asincrónico request-response se realiza mediante dos operaciones one-way, uno aplicado por un proveedor de servicio (Partner), el otro aplicado por el proceso de negocio utilizando una correlación.

JMS BC.
Acerca de JMS BC.
JBI es una arquitectura flexible y extensible que permite que los componentes JMS Binding Component utilicen el modelo de mensajería que separa los consumidores de servicios de proveedores de servicios. Este modelo de mensajería define el uso de WSDL, para describir las operaciones expuestas por el Binding Component. El WSDL se utiliza también para definir el nivel de transporte de los Binding para obtener las operaciones de los servicios en tiempo de diseño, se configura un JMS Binding Component para utilizar los elementos JMS extensibles en el WSDL.
La especificación JBI incluye un modelo que describe un intercambio de mensajes entre los mensajes de consumidores y mensajes de proveedores.
En un flujo de mensaje outbound, el JMS BC actúa como un proveedor de servicios. El JMS BC recibe un mensaje normalizado desde el Normalized Message Router (NMR), que convierte este mensaje a un mensaje JMS y luego envía el mensaje a un destino JMS.
En un flujo de mensaje inbound, el JMS BC actúa como un proxy de los consumidores, el JMS BC convierte el JMS mensaje este recibido desde un servicio JMS a un mensaje normalizado, y luego envía el mensaje normalizado como parte del intercambio de mensaje a otro componente quien haya solicitado el servicio.
El siguiente diagrama ilustra la relación entre el JMS Binding Componet y el JBI runtime enviroment, el tiempo de diseño (Netbeans) y otros componentes de JBI System Management.



Características de JMS BC.
Las características del JMS BC incluyen:
• Envíos de inbound y outbund de mensajes JMS (texto, binarios, xml).
• Recibo automático tipo acknowledgement de mensajes JMS inbound.
• Recepción batch de mensajes JMS inbound.
• Recepción inbound de mensajes JMS a través de un filtro de selección.
• Mapeo inbound de las propiedades JMS para las partes del mensaje normalizado NMR.
• Mapeo de las partes del mensaje NMR a mensajes JMS outbound.
• Normalización y des normalización de mensajes JMS y de las partes del mensaje en el WSDL.
• Invoca a operaciones request-response.
• Búsquedas JNDI a conection factories.
• Sincronización y concurrencia en modo CC.

No hay comentarios: