Bpel y Open Esb

10,835 views

Published on

http://programadorphp.org
La siguiente presentación de la mano de Pablo García Sánchez nos da las nociones básicas de ESB y JBI, para la integración empresarial de aplicaciones compuestas que generan un flujo de trabajo dinámico, además de dar algunas ventajas, vocabulario, y ejemplos de BPEL.

Published in: Education
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total views
10,835
On SlideShare
0
From Embeds
0
Number of Embeds
3,991
Actions
Shares
0
Downloads
281
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Bpel y Open Esb

  1. 1. Programador PHP .org presenta… Introducción a BPEL y OpenESB Juan Belón presenta a : Pablo García Sánchez del Departamento de Arquitectura y Tecnologia de Computadores Web 2.0 Arquitectura Orientada a Servicios en Java
  2. 2. Programador PHP .org presenta… Índice ● ESB ● JBI (composite Applications, Service Engines...) ● OpenESB ● BPEL (Ventajas, Desventajas, Vocabulario y ejemplos) Web 2-0: Arquitectura Orientada a Servicios en Java 2
  3. 3. Programador PHP .org presenta… Enterprise Service Bus (ESB) Un Bus de Servicios Empresariales facilita la integración y la reutilización flexible de componentes empresariales mediante una arquitectura basada en estándares y orientada a servicios (SOA). Dr. Gaius Baltar. Experto tecnólogo
  4. 4. Programador PHP .org presenta… Enterprise Service Bus (II) Aplicaciones Portales Orquestación personalizadas de servicios Mensajería confiable, segura y asíncrona interfaz de Motor de consultas Adaptadores Web JMS/J2EE Gateway MQ servicio distribuido Services Aplicaciones Aplicaciones WebSphere, .Net... Java Aplicaciones Soporte Fuentes de datos Empresariales multi-plataforma 4
  5. 5. Programador PHP .org presenta… Ventajas de usar ESB – Cualquier aplicación que entienda XML puede ser emisora/receptora de mensajes dentro del bus. – Permite una enorme flexbilidad a la hora de diseñar la arquitectura de nuestro sistema, ya que se puede utilizar desde una arquitectura cliente/ servidor hasta una arquitectura orientada a eventos. – Los componentes son "enchufables", esto da la flexibilidad de añadir funcionalidad a un sistema en producción sin tener que pararlo, y además por su naturaleza desacoplada sin comprometer el funcionamiento de otros componentes del sistema. Web 2-0: Arquitectura Orientada a Servicios en Java 5
  6. 6. Programador PHP .org presenta… Java Business Integration (JBI) Framework estándar de integración de aplicaciones ● Es un “meta-contenedor” para integrar “contenedores de servicio” ● Cada contenedor puede hospedar muchos servicios (service units) ● Los servicios pueden encontrarse localmente o remotamente Arquitectura de plug-ins: ● Service Engines (SE): Sirven para consumir o exponer servicios locales (ejemplo: BPEL Service Engine) ● Binding Components: Sirven para comunicarse con servicios remotos o que accedan a los nuestros
  7. 7. Programador PHP .org presenta… JBI (II)
  8. 8. Programador PHP .org presenta… Composite Applications Desarrollo tradicional de aplicaciones Por ejemplo: EJB, Spring, Hibernate, JSF, Servlets, Struts... se unen mediante “pegamento” programado por los desarrolladores que requiere un gran gasto de tiempo y esfuerzo que además es inflexible.
  9. 9. Programador PHP .org presenta… Composite Applications (II) Las Composite Applications son una forma de componer aplicaciones utilizando partes reusables empleando principios SOA: ● Características expuestas como Web Services ● Interacción entre servicios basados en estándares ● Ellas mismas son componibles
  10. 10. Programador PHP .org presenta… Composite Applications (III) Vale, muy bonito, pero ¿qué podemos hacer nosotros con las Composite Applications? ● Crear una aplicación que use muchos tipos de proyecto (BPEL, XSLT, SQL...) ● Configurar cómo se accede a esa aplicación (SOAP, JMS, SMTP u otros...) ● Construir un fichero con todo eso ● Desplegar ese fichero en un servidor JBI ● Monitorizar el estatus de las aplicaciones
  11. 11. Programador PHP .org presenta… OpenESB El Proyecto OpenESB de Sun implementa un Enterprise Service Bus utilizando JBI (hay otros ESBs que no son JBI,como el de Oracle). Proporciona varias herramientas de desrrollo, despliegue y administración de Composite Applications (el NetBeans, mismamente).
  12. 12. Programador PHP .org presenta… Arquitectura de OpenESB
  13. 13. Programador PHP .org presenta… Arquitectura de OpenESB (II)
  14. 14. Programador PHP .org presenta… Componentes JBI en Glassfish
  15. 15. Programador PHP .org presenta… Retos de los procesos de Negocio Coordinación asíncrona entre servicios ● ● Correlacionar intercambios de mensajes entre las partes ● Implementar procesamiento paralelo de actividades ● Implementar logica de compensación (operación “undo”) ● Manipular/transformar datos entre interacciones ● Soporte para transacciones y actividades largas (incluso de días!) ● Manejar excepciones 15
  16. 16. Programador PHP .org presenta… Introducción a BPEL Tres servicios en PHP en un servidor externo, siete de Amazon S3, nueve en un servidor de aplicaciones local y uno en un dispositivo móvil. Hace falta un proceso para encontrarlos a todos, para gobernarlos a todos y para orquestarlos a todos. Web 2-0: Arquitectura Orientada a Servicios en Java 16
  17. 17. Programador PHP .org presenta… ¿Quién lo hace? BPEL! BPEL : Business Process Execution Language (Lenguaje de Ejecución de Procesos de Negocio) es un lenguaje basado en XML diseñado para el control centralizado de la invocación de diferentes servicios Web, con cierta lógica de negocio añadida que ayudan a la programación en gran escala (programming in the large). Web 2-0: Arquitectura Orientada a Servicios en Java 17
  18. 18. Programador PHP .org presenta… Objetivos de BPEL (I) ● Definir procesos de negocio que interactúen con entidades externas mediante operaciones de un servicio Web definidas usando WSDL y que se manifiestan a si mismas como un servicio Web. ● Definir procesos de negocio utilizando un lenguaje basado en XML. No definir una interpretación gráfica de procesos o proveer de una metodología de diseño en particular. ● Definir una serie de conceptos de orquestación de servicios Web que pretenden ser usados por vistas internas o externas de un proceso de negocio. Web 2-0: Arquitectura Orientada a Servicios en Java 18
  19. 19. Programador PHP .org presenta… Objetivos de BPEL (II) ● Proveer de sistemas de control jerárquicos y estilo gráfico que permitan que su uso sea fusionado lo más ininterrumpido posible. Esto reduciría la fragmentación del espacio del modelado de procesos. ● Proveer de funciones de manipulación de datos simples requeridas para definir datos de procesos y flujos de control. ● Soportar un método de identificación de instancias de procesos que permita la definición deidentificadores de instancias a nivel de mensajes de aplicación. ● Usar servicios Web como la técnica para descomponer y ensamblar modelos. Web 2-0: Arquitectura Orientada a Servicios en Java 19
  20. 20. Programador PHP .org presenta… Historia de BPEL ● Versión 1.0 liberada por IBM, Microsoft y BEA en 2002. ● Versión 1.1 creada por OASIS en 2003 ● Versión 2.0 disponible desde 2007 Consenso sin precedentes entre empresas: IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel... Web 2-0: Arquitectura Orientada a Servicios en Java 20
  21. 21. Programador PHP .org presenta… Un ejemplo
  22. 22. Programador PHP .org presenta… BPEL compone servicios ● Consume servicios (invoke) ● Crea servicios (receive/reply) ● Agrega servicios de grano fino ● Crea servicios de grano grueso ● Dentro de una empresa (intranet): Estandarizar la integración de aplicaciones empresariales y extender la integración a sistemas que estaban aislados ● Entre empresas (Internet) Permite integración más efectiva entre los socios de negocio 22
  23. 23. Programador PHP .org presenta… Orquestación Vs. Coreografía Orquestación: Un proceso de negocio ejecutable que describe el flujo desde la perspectiva y control de un solo punto de negocio (a esto se le denomina workflow) Coreografía: Intercambio público de mensajes, reglas de interacción y acuerdos entre dos o más puntos de negocio Web 2-0: Arquitectura Orientada a Servicios en Java 23
  24. 24. Programador PHP .org presenta… Ejemplo Herramienta de Análisis de Negocio (EA) Negocio A Negocio B Generar Generar Plantilla Plantilla BPEL BPEL Workflow del Negocio A Transformar Enviar Solicitud Workflow del Negocio B Solicitud Recibir Solicitud Transformar Recibir Ack Enviar Ack Ack Transformar Recibir Datos Enviar Datos Transformar Datos
  25. 25. Programador PHP .org presenta… Building Blocks de BPEL Coreografía – CDL4WS (W3C) WS-Security Orquestación – WS-BPEL (OASIS) Transacciones Calidad WS-Reliability WS-Security Coordinación de servicio Contexto Administración UDDI Descubrimiento WSDL Descripción SOAP Contexto XML HTTP, IIOP, JMS, SMTP Transporte
  26. 26. Programador PHP .org presenta… Vocabulario BPEL: Estructura <process> <!- Definición de roles de los participantes del proceso--> <partnerLinks>...</partnerLinks> <!- Datos/estados utilizados dentro del proceso--> <variables>...</variables> <!- Propiedades que permiten conversaciones --> <correlationSets>...</correlationSets> <!- Manejo de excepciones --> <faultHandlers>...</faultHandlers> <!- Recuperación de errores – deshacer acciones--> <compensationHandlers>...</compensationHandlers> <!- Eventos concurrentes --> <!- Flujo del proceso de negocio --> (actividades)* </process>
  27. 27. Programador PHP .org presenta… Vocabulario: Actividades (I) Invoke: Permite al proceso de negocio ● invocar una operación (solicitud/respuesta o sin respuesta) de un portType que ofrece un socio. ● Receive: Permite al proceso de negocio hacer una espera hasta recibir un mensaje que coincida. También permite iniciar el proceso BPEL ● Reply: Permite al proceso de negocio enviar un mensaje de respuesta que ha sido recibido mediante el <receive>. La combinación de <receive> y <reply> crea la operación solicitud- respuesta del portType del WSDL del proceso
  28. 28. Programador PHP .org presenta… En el ejemplo
  29. 29. Programador PHP .org presenta… Vocabulario: Actividades (II) ● Assign: Puede usarse para actualizar los valores de las variables con nuevos datos. ● Throw: Genera una falta (excepción) desde dentro del proceso ● Wait: Permite esperar hasta un tiempo concreto o durante un tiempo concreto. ● Empty: Operaciones no-op, útil para sincronizar actividades concurrentes, por ejemplo. Web 2-0: Arquitectura Orientada a Servicios en Java 29
  30. 30. Programador PHP .org presenta… Vocabulario: Actividades (III) ● Sequence: Permite definir una colección de actividades para ser ejecutadas secuencialmente ● While: Sirve para indicar que una actividad tiene que repetirse hasta que cumpla un criterio establecido ● Pick: Permite bloquear y esperar un mensaje específico o a una alarma de tiempo. Cuando una de estas dos acciones ocurre ejecuta su actividad asociada Web 2-0: Arquitectura Orientada a Servicios en Java 30
  31. 31. Programador PHP .org presenta… Vocabulario: Actividades (IV) ● Flow: Especifica una o más actividades que pueden realizarse concurrentemente. Pueden utilizarse enlaces como estructuras de control ● Scope: sirve definir actividades anidadas con sus propias variables asociadas (ej: int i=0), manejadores de faltas o de compensación. ● Compensate: Utilizados para iniciar compensaciones de un scope interno que se ha completado normalmente. Es llamado desde un manejador de faltas. 31
  32. 32. Programador PHP .org presenta… Vocabulario: Actividades (V) Las siguientes son de sobra conocidas ;) y permiten ejecutar una actividad iterativamente y definir una actividad anidada con sus propias variables, manejadores de faltas y de compensación ● If ● While ● RepeatUntil ● ForEach 32
  33. 33. Programador PHP .org presenta… Vocabulario: Partner Link El proceso BPEL puede: ● Invocar operaciones de otros servicios->invoked partner link ● Recibir invocaciones de los clientes->client partner link Para sus clientes un proceso BPEL es como cualquier otro WS normal. Todos los servicios dentro de un proceso de negocio son modelados con Partner Links. El rol del proceso de negocio se indica en el atributo myRole y el rol del socio en el de partnerRole.
  34. 34. Programador PHP .org presenta… Partner Links Del Ejemplo
  35. 35. Programador PHP .org presenta… Vocabulario: Variables Mensajes enviados y recibidos por los socios Pueden almacenarse en interacciones de días! Definidas como tipos de los WSDLs Usa <assign> y <copy> para manipularlas.
  36. 36. Programador PHP .org presenta… Ejemplo de asignación <assign name="Assign3"> <copy> <from>$DiHolaOut.parameters/return</from> <to variable="HablarmeOut" part="respuesta"/> </copy> </assign>
  37. 37. Programador PHP .org presenta… ¿Cómo se crea un proceso BPEL? 1) Crear proyecto BPEL 1.1 Crear operaciones de su WSDL 1.2 Orquestar otros WS 2) Crear una aplicación compuesta 2.1 Meter dentro el proceso BPEL 3) Desplegar la aplicación compuesta en el servidor 4) Testear Web 2-0: Arquitectura Orientada a Servicios en Java
  38. 38. Programador PHP .org presenta… Problemas de BPEL  No hay transformación de datos  No hay traducción de datos (EDI, binary formats...)  No hay workflow humano  No hay contratos de los socios (como ebXML)  No hay interacciones si no hay WS Web 2-0: Arquitectura Orientada a Servicios en Java
  39. 39. Programador PHP .org presenta… 40 ¿Qué se propone? ● W3C: WS-Choreography ● WS-Transaction ● WS-Coordination ● WS-Composite Application Framework ● WS-Reliability ● ReliableMessaging ● WS-Addressing ● WS-Security ● BPEL4Humans Web 2-0: Arquitectura Orientada a Servicios en Java
  40. 40. Programador PHP .org presenta… ¿Qué hemos aprendido? Java Business Integration (JBI) define cómo se crean y usan: ● Composite Applications ● Service Engines (motor BPEL...) ● Binding Components (HTTP, JMS...) OpenESB es un ESB basado en JBI BPEL permite orquestar servicios ● Usa actividades (if, invoke, reply, assign...) ● Usa PartnerLinks para distinguir a quién llama y cuándo le llaman
  41. 41. Programador PHP .org presenta… Referencias ●Shin, S. SOA course. javapassion.com ●MacVittie, L. Make Way For The ESB, Network Computing, 41, pp. 41-58 ●Papazoglou, M.P. et al.: Service Oriented Architectures: approaches, technologies and research issues, VLDB Journal, 16, pp. 389-415 ●García-Sánchez P. et al. Plataforma de integración de servicios para la administración basada en BPEL y SOA. Actas de las “III Jornadas en Servicios Web y SOA (JSWEB), 2007 http://programadorphp.org

×