bpel y open esb
DESCRIPTION
http://programadorphp.orgLa 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.TRANSCRIPT
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
Programador PHP .org presenta…
● ESB
Índice
● JBI (composite Applications, Service Engines...) ● OpenESB ● BPEL (Ventajas, Desventajas, Vocabulario y ejemplos)
Web 2-0: Arquitectura Orientada a Servicios en Java
2
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
W
e
b
2
-
0
:
A
r
q
u
i
t
e
c
t
u
r
a
Programador PHP .org presenta…
Enterprise Service Bus (II)
Aplicaciones personalizadas
Portales
Orquestación de servicios
interfaz
Mensajería confiable, segura y asíncrona
de
servicio Motor de consultas
distribuido
Fuentes de datos
Adaptadores
Aplicaciones
Empresariales
Web Services
Aplicaciones
WebSphere, .Net...
JMS/J2EE
Aplicaciones
Java
Soporte
multi-plataforma
Gateway MQ
4
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
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
W
e
b
2
-
0
:
A
r
q
u
i
t
e
c
t
u
r
a
Programador PHP .org presenta…
JBI (II)
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.
W
e
b
2
-
0
:
A
r
q
u
i
t
e
c
t
u
r
a
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
W
e
b
2
-
0
:
A
r
q
u
i
t
e
c
t
u
r
a
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
W
e
b
2
-
0
:
A
r
q
u
i
t
e
c
t
u
r
a
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).
W
e
b
2
-
0
:
A
r
q
u
i
t
e
c
t
u
r
a
Programador PHP .org presenta…
Arquitectura de OpenESB
W
e
b
2
-
0
:
Programador PHP .org presenta…
Arquitectura de OpenESB (II)
W
e
b
2
-
0
:
A
r
q
u
i
t
e
c
t
u
r
a
Programador PHP .org presenta…
Componentes JBI en Glassfish
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
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
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
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
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
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
Programador PHP .org presenta…
Un ejemplo
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
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
Programador PHP .org presenta…
Ejemplo
Herramienta de Análisis de Negocio (EA)
Generar
Plantilla
BPEL
Negocio A
Negocio B
Generar
Plantilla BPEL
Workflow del Negocio A
Transformar Enviar Solicitud
Workflow del Negocio B
Transformar
Recibir Ack
Recibir Datos
Solicitud
Ack
Datos
Recibir Solicitud
Enviar Ack
Enviar Datos
Transformar
Transformar
Programador PHP .org presenta…
Building Blocks de BPEL
Coreografía – CDL4WS (W3C)
WS-Security
Orquestación – WS-BPEL (OASIS)
Transacciones
Calidad
Administración
WS-Reliability WS-Security
UDDI
WSDL
SOAP
XML
HTTP, IIOP, JMS, SMTP
Coordinación
Contexto
de servicio
Descubrimiento
Descripción
Contexto
Transporte
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>
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
Programador PHP .org presenta…
En el ejemplo
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
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
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
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
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.
P
a
r
t
n
e
r
s
L
Programador PHP .org presenta…
Partner Links Del Ejemplo
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.
Programador PHP .org presenta…
Ejemplo de asignación
<assign name="Assign3"> <copy>
<from>$DiHolaOut.parameters/return</from> <to variable="HablarmeOut" part="respuesta"/> </copy> </assign>
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
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
Programador PHP .org presenta…
¿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
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
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