Soa Y Bpel

4,971 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,971
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Soa Y Bpel

  1. 1. Introducción a Arquitecturas Orientada a Servicios y El Lenguaje de Ejecución de Procesos de Negocios (WS-BPEL) Carlos Rodríguez Fernández <carlosrodriguez@computer.org>
  2. 2. Agenda <ul><li>Introducción a SOA </li></ul><ul><li>Directivas de Análisis y Diseño para SOA </li></ul><ul><li>Estándares y Tecnologías </li></ul><ul><ul><li>Mensajería </li></ul></ul><ul><ul><li>Seguridad </li></ul></ul><ul><ul><li>Descripción </li></ul></ul><ul><ul><li>Transacciones </li></ul></ul><ul><ul><li>Composición </li></ul></ul>
  3. 3. Agenda <ul><li>Procesos de Negocio </li></ul><ul><li>WS-BPEL 2.0 </li></ul><ul><ul><li>El Lenguaje </li></ul></ul><ul><ul><li>Pros y Cons de WS-BPEL 2.0 </li></ul></ul><ul><li>Proceso: Reserva de Viajes </li></ul>
  4. 4. Introducción a SOA <ul><li>Servicio (ámbito del Software): </li></ul><ul><ul><li>Función o prestación desempeñada por un Software para cuidar los intereses o satisfacer necesidades de Clientes que son Usuarios. </li></ul></ul><ul><ul><li>Implica un Contrato que describe: </li></ul></ul><ul><ul><ul><li>Semántica (Funciones y sus significados, formas de uso de las mismas). </li></ul></ul></ul><ul><ul><ul><li>Garantías de Calidad (Tiempos de Respuesta, Disponibilidad, etc...). </li></ul></ul></ul><ul><ul><ul><li>Permisos y Obligaciones (Políticas de Seguridad). </li></ul></ul></ul>
  5. 5. Introducción a SOA <ul><li>Arquitectura Orientada a Servicio (SOA): </li></ul><ul><ul><li>Aspectos técnicos que dirigen el diseño de la arquitectura de sistemas distribuidos que dan servicios. </li></ul></ul><ul><ul><li>Qué queremos: Desarrollar un Software que se venderá como un servicio, cuya arquitectura interna ha de ser distribuida. </li></ul></ul><ul><ul><li>Qué nos dan: Literatura SOA, Plataformas de Soporte a SOA (de desarrollo y ejecución). </li></ul></ul>
  6. 6. Introducción a SOA <ul><li>Servicio: </li></ul><ul><ul><li>Es un recurso computacional con un conjunto abstracto de operaciones. </li></ul></ul><ul><ul><li>Esta operaciones son implementadas por un agente software “proveedor” y son accesibles mediante el intercambio de mensajes. </li></ul></ul><ul><ul><li>En todo servicio hay un agente software “proveedor” y otro “cliente”. </li></ul></ul><ul><ul><li>Tiene una semántica. </li></ul></ul><ul><ul><li>Tiene una descripción que rige el uso. </li></ul></ul>
  7. 7. Introducción a SOA <ul><li>Mensajes: </li></ul><ul><ul><li>Tienen: Cuerpo , Cabecera , Envoltorio . </li></ul></ul><ul><ul><li>Hay una dirección de Origen y otra de Destino . </li></ul></ul><ul><ul><li>Hay un mecanismo de Transporte de Mensajes que lo hace llegar a su Destino (entiende el formato de las direcciones) </li></ul></ul><ul><ul><li>Hay un mecanismo de Correlación de mensajes que son de la misma Conversación . </li></ul></ul>
  8. 8. Introducción a SOA <ul><li>Mensajes: </li></ul><ul><ul><li>Mensaje es una Unidad Independiente de Comunicación. </li></ul></ul><ul><ul><li>Los mensajes deben ser auto-contenidos. Un mensaje tiene en si mismo toda la información de como debe ser interpretado y por tanto, procesado. Esto se describe en la Cabecera del mensaje. </li></ul></ul>
  9. 9. Introducción a SOA <ul><li>Descripción de Servicio: </li></ul><ul><ul><li>Documento procesable por software. </li></ul></ul><ul><ul><li>Describe: </li></ul></ul><ul><ul><ul><li>Conjunto de operaciones disponibles (interfaz). </li></ul></ul></ul><ul><ul><ul><li>Intercambio de mensajes para acceder a dichas operaciones. </li></ul></ul></ul><ul><ul><ul><li>Políticas de Seguridad (Permisos y Obligaciones de los clientes) </li></ul></ul></ul><ul><ul><ul><li>Transporte de Mensajes: Tecnologías, Direcciones. </li></ul></ul></ul><ul><ul><ul><li>*Descripción semántica de las operaciones. Garantía de QoS. Información para Contratación. </li></ul></ul></ul>
  10. 10. Introducción a SOA
  11. 11. Directivas para SOA <ul><li>Identificación de Servicios. </li></ul><ul><ul><li>Servicios Agnósticos </li></ul></ul><ul><ul><li>Servicios Centrados en Entidades </li></ul></ul><ul><ul><li>Servicios Centrados en Tareas </li></ul></ul><ul><ul><li>Servicios de Orquestación </li></ul></ul>
  12. 12. Directivas para SOA <ul><li>Servicios Agnósticos </li></ul><ul><ul><li>e.g. FileManagerService, QueueService, SystemLogService, FormatTransformerService </li></ul></ul><ul><ul><li>Son altamente reutilizable en distintos dominios. </li></ul></ul><ul><ul><li>No deben manejar conceptos del dominio especifico </li></ul></ul>
  13. 13. Directivas para SOA <ul><li>Servicios Centrados en Entidades </li></ul><ul><ul><li>e.g. CustomerManagerService, TechnicianManagerService, ProductManagerService </li></ul></ul><ul><ul><li>Por cada entidad del dominio se podría crear un servicio que la gestiona. </li></ul></ul><ul><ul><li>Las operaciones serían: </li></ul></ul><ul><ul><ul><li>AddEntidad, RemoveEntidad, UpdateEntidad, GetEntidad, GetBy... </li></ul></ul></ul>
  14. 14. Directivas de SOA <ul><li>Servicios Centrados en Tareas </li></ul><ul><ul><li>e.g. OrderProcessingService (ValidateOrder), CommentsProcessingService (ModerateComment, EvaluateRelevanceOfComment). </li></ul></ul><ul><ul><li>Suelen ser agrupaciones de “step's” interpretados como tareas de procesos. </li></ul></ul>
  15. 15. Directivas para SOA <ul><li>Servicios de Orquestación </li></ul><ul><ul><li>e.g. TravelBookingService, OrderSubmissionService. </li></ul></ul><ul><ul><li>Procesos del dominio donde las operaciones del servicio son los eventos del proceso. </li></ul></ul><ul><ul><li>O pueden ser simplemente composiciones. </li></ul></ul>
  16. 16. Directivas para SOA <ul><li>Los servicios debe ser sin estado. </li></ul><ul><ul><li>En el documento de entrada debe estar todo lo necesario para reconstruir el “estado” de alguna base de datos si es que lo hay. </li></ul></ul><ul><ul><li>El estado de los procesos de larga duración debe ser persistente. Y se aplica lo anterior. </li></ul></ul><ul><ul><li>Usar patrón TransferObject, BusinessObject y DomainStore de J2EE para diseñar Servicios Centrados en Entidades y algunos Servicios Centrados en Tareas </li></ul></ul>
  17. 17. Directivas para SOA <ul><li>Servicios de Orquestación </li></ul><ul><ul><li>Usar servicios compuesto cuando se usen servicios de terceros en vez de usar adaptadores. </li></ul></ul><ul><ul><li>Tenga en cuenta la eficiencia. Muchos procesos son simplemente gestores de estados de una entidad. Ante tal caso use un Servicio Centrado en Tareas o un híbrido entre Centrado en Tareas y Entidades. (e.g. Estados de un documento propuesto) </li></ul></ul>
  18. 18. Estándares y Tecnologías <ul><li>Transporte: HTTP, SMTP, JMS, Jabber, etc... </li></ul><ul><li>Formato: XML </li></ul><ul><li>Mensajería: SOAP, WS-Addressing </li></ul><ul><li>Seguridad: WS-Security </li></ul><ul><li>Descripción: WSDL, WS-Policy </li></ul><ul><li>Transacciones: WS-AtomicTransaction </li></ul><ul><li>Composición: WS-BPEL, WS-CDL </li></ul>
  19. 19. Estándares y Tecnologías <ul><li>La idea es no implementarse el estándar. Sino entender que hacen y usar herramientas e infraestructuras que lo implementen. </li></ul>
  20. 20. Mensajería <ul><li>Patrones de intercambio de mensajes: </li></ul><ul><ul><li>Request-Response </li></ul></ul><ul><ul><li>Fire-and-forget </li></ul></ul><ul><li>Una invocación a una operación corresponde a un intercambio de mensajes. </li></ul>
  21. 21. Mensajería <ul><li>SOAP: Simple Object Access Protocol. Estándar de la W3C </li></ul><ul><li><soap:Envelop> </li></ul><ul><li><soap:Header> </li></ul><ul><li><!-- Cabecera del mensaje --> </li></ul><ul><li></soap:Header> </li></ul><ul><li><soap:Body> </li></ul><ul><li><!-- Cuerpo del mensaje --> </li></ul><ul><li></soap:Body> </li></ul><ul><li></soap:Envelop> </li></ul>
  22. 22. Mensajería <ul><li>WS-Addressing añade la siguiente información a la cabecera del mensaje: </li></ul><ul><ul><li>Destino del mensaje: a quien va dirigido </li></ul></ul><ul><ul><li>Dirección de origen: de donde proviene </li></ul></ul><ul><ul><li>Dirección de respuesta: “responder a” </li></ul></ul><ul><ul><li>Dirección en caso de fallo: “en caso de fallo enviárselo a” </li></ul></ul><ul><ul><li>Acción: información de la semántica del mensaje </li></ul></ul><ul><ul><li>Identificador único del mensaje </li></ul></ul><ul><ul><li>Relación con mensajes previos </li></ul></ul>
  23. 23. Mensajería <ul><ul><li><S:Envelope xmlns:S=&quot;http://www.w3.org/2003/05/soap-envelope&quot; </li></ul></ul><ul><ul><li>xmlns:wsa=&quot;http://www.w3.org/2004/12/addressing&quot;> </li></ul></ul><ul><ul><li><S:Header> </li></ul></ul><ul><ul><li><wsa:MessageID> </li></ul></ul><ul><ul><li>http://example.com/SomeUniqueMessageIdString </li></ul></ul><ul><ul><li></wsa:MessageID> </li></ul></ul><ul><ul><li><wsa:ReplyTo> </li></ul></ul><ul><ul><li><wsa:Address> http://myClient.example/someClientUser </wsa:Address> </li></ul></ul><ul><ul><li></wsa:ReplyTo> </li></ul></ul><ul><ul><li><wsa:FaultTo> </li></ul></ul><ul><ul><li><wsa:Address> http://myserver.example/DemoErrorHandler </wsa:Address> </li></ul></ul><ul><ul><li></wsa:FaultTo> </li></ul></ul><ul><ul><li><wsa:To> http://myserver.example/DemoServiceURI </wsa:To> </li></ul></ul><ul><ul><li><wsa:Action> http://myserver.example/DoSomething </wsa:Action> </li></ul></ul><ul><ul><li></S:Header> </li></ul></ul><ul><ul><li><S:Body> </li></ul></ul><ul><ul><li><!-- The message body of the SOAP request appears here --> </li></ul></ul><ul><ul><li></S:Body> </li></ul></ul><ul><ul><li></S:Envelope> </li></ul></ul>
  24. 24. Seguridad <ul><li>Hay distintos tipos niveles de seguridad en Web Services: </li></ul><ul><ul><li>A nivel del Transporte: HTTPS (SSL) </li></ul></ul><ul><ul><li>A nivel de Mensajes: WS-Security </li></ul></ul><ul><li>WS-Security es el estándar de OASIS que recoge todo lo referente a seguridad en los mensajes SOAP. </li></ul><ul><li>Recoge como incluir información de autenticación, confidencialidad e identificación en los mensajes SOAP </li></ul>
  25. 25. Seguridad <ul><li>Cómo poner una firma digital del contenido del mensaje </li></ul><ul><li>Cómo encriptar el cuerpo del mensaje </li></ul><ul><li>Cómo incluir información de identificación como Username/Password o SAML tokens, u otra clase de estos. </li></ul>
  26. 26. Seguridad <ul><ul><li><wsse:Security> </li></ul></ul><ul><ul><li><wsse:BinarySecurityToken </li></ul></ul><ul><ul><li>ValueType=&quot;wsse:X509v3&quot; </li></ul></ul><ul><ul><li>EncodingType=&quot;wsse:Base64Binary&quot; </li></ul></ul><ul><ul><li>wsu:Id=&quot;MyTourOperatorCertificate&quot;> </li></ul></ul><ul><ul><li>LKSAJDFLKASJDlkjlkj243kj;lkjLKJ... </li></ul></ul><ul><ul><li></wsse:BinarySecurityToken> </li></ul></ul><ul><ul><li><ds:Signature> </li></ul></ul><ul><ul><li><ds:SignedInfo> </li></ul></ul><ul><ul><li><ds:CanonicalizationMethod </li></ul></ul><ul><ul><li>Algorithm=&quot;http://www.w3.org/2001/10/xml -exc-c14n# &quot;/> </li></ul></ul><ul><ul><li><ds:SignatureMethod </li></ul></ul><ul><ul><li>Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&quot;/> </li></ul></ul><ul><ul><li><ds:Reference URI=&quot;#myDiscountRequestBody&quot;> </li></ul></ul><ul><ul><li><ds:Transforms> </li></ul></ul><ul><ul><li><ds:Transform </li></ul></ul><ul><ul><li>Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/> </li></ul></ul><ul><ul><li></ds:Transforms> </li></ul></ul><ul><ul><li><ds:DigestMethod </li></ul></ul><ul><ul><li>Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#sha1&quot;/> </li></ul></ul><ul><ul><li><ds:DigestValue>BSDFHJYK21f...</ds:DigestValue> </li></ul></ul><ul><ul><li></ds:Reference> </li></ul></ul><ul><ul><li></ds:SignedInfo> </li></ul></ul><ul><ul><li><ds:SignatureValue> </li></ul></ul><ul><ul><li>GKLKAJFLASKJ52kjKJKLJ345KKKJ... </li></ul></ul><ul><ul><li></ds:SignatureValue> </li></ul></ul><ul><ul><li><ds:KeyInfo> </li></ul></ul><ul><ul><li><wsse:SecurityTokenReference> </li></ul></ul><ul><ul><li><wsse:Reference URI=&quot;#MyTourOperatorCertificate&quot;/> </li></ul></ul><ul><ul><li></wsse:SecurityTokenReference> </li></ul></ul><ul><ul><li></ds:KeyInfo> </li></ul></ul><ul><ul><li></ds:Signature> </li></ul></ul><ul><ul><li></wsse:Security> </li></ul></ul>
  27. 27. Descripción <ul><li>La forma en que se describe los servicios es a través del estándar Web Services Description Language (WSDL) de W3C </li></ul><ul><li>Con WSDL se puede describir: </li></ul><ul><ul><li>Interfaces </li></ul></ul><ul><ul><li>Implementación </li></ul></ul><ul><ul><li>Políticas (Obligaciones y Permisos) </li></ul></ul>
  28. 28. Descripción <ul><li>La interfaz que el servicio implementa, es decir, las operaciones que ofrece se describen de la siguiente manera: </li></ul><ul><ul><ul><li>Se definen las estructuras de los documentos mediante XSD. </li></ul></ul></ul><ul><ul><ul><li>Se describen los mensajes indicando cual es el documento que contienen. </li></ul></ul></ul><ul><ul><ul><li>Se describen las operaciones indicando cual es el mensaje request y el mensaje response, o si es el caso, cual es el mensaje de fire-and-forget. </li></ul></ul></ul>
  29. 29. Descripción <ul><li>El Documento: </li></ul><ul><ul><li><types> </li></ul></ul><ul><ul><li><schema targetNamespace=&quot;http://example.com/stockquote.xsd&quot; </li></ul></ul><ul><ul><li>xmlns=&quot;http://www.w3.org/2000/10/XMLSchema&quot;> </li></ul></ul><ul><ul><li><element name=&quot;TradePriceRequest&quot;> </li></ul></ul><ul><ul><li><complexType> </li></ul></ul><ul><ul><li><all> </li></ul></ul><ul><ul><li><element name=&quot;tickerSymbol&quot; type=&quot;string&quot;/> </li></ul></ul><ul><ul><li></all> </li></ul></ul><ul><ul><li></complexType> </li></ul></ul><ul><ul><li></element> </li></ul></ul><ul><ul><li><element name=&quot;TradePrice&quot;> </li></ul></ul><ul><ul><li><complexType> </li></ul></ul><ul><ul><li><all> </li></ul></ul><ul><ul><li><element name=&quot;price&quot; type=&quot;float&quot;/> </li></ul></ul><ul><ul><li></all> </li></ul></ul><ul><ul><li></complexType> </li></ul></ul><ul><ul><li></element> </li></ul></ul><ul><ul><li></schema> </li></ul></ul><ul><ul><li></types> </li></ul></ul>
  30. 30. Descripción <ul><li>Los mensajes: </li></ul><ul><ul><li><message name=&quot;GetLastTradePriceInput&quot;> </li></ul></ul><ul><ul><li><part name=&quot;body&quot; element=&quot;xsd1:TradePriceRequest&quot;/> </li></ul></ul><ul><ul><li></message> </li></ul></ul><ul><ul><li><message name=&quot;GetLastTradePriceOutput&quot;> </li></ul></ul><ul><ul><li><part name=&quot;body&quot; element=&quot;xsd1:TradePrice&quot;/> </li></ul></ul><ul><ul><li></message> </li></ul></ul>
  31. 31. Descripción <ul><li>Las operaciones: </li></ul><ul><ul><li><portType name=&quot;StockQuotePortType&quot;> </li></ul></ul><ul><ul><li><operation name=&quot;GetLastTradePrice&quot;> </li></ul></ul><ul><ul><li><input message=&quot;tns:GetLastTradePriceInput&quot;/> </li></ul></ul><ul><ul><li><output message=&quot;tns:GetLastTradePriceOutput&quot;/> </li></ul></ul><ul><ul><li></operation> </li></ul></ul><ul><ul><li></portType> </li></ul></ul>
  32. 32. Descripción <ul><li>La implementación se define primeramente indicando un vínculo con una tecnología concreta y un punto de acceso al servicio: </li></ul><ul><ul><li><binding name=&quot;StockQuoteSoapBinding&quot; type=&quot;tns:StockQuotePortType&quot;> </li></ul></ul><ul><ul><li><soap:binding style=&quot;document&quot; transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/> </li></ul></ul><ul><ul><li><operation name=&quot;GetLastTradePrice&quot;> </li></ul></ul><ul><ul><li><soap:operation soapAction=&quot;http://example.com/GetLastTradePrice&quot;/> </li></ul></ul><ul><ul><li><input> </li></ul></ul><ul><ul><li><soap:body use=&quot;literal&quot;/> </li></ul></ul><ul><ul><li></input> </li></ul></ul><ul><ul><li><output> </li></ul></ul><ul><ul><li><soap:body use=&quot;literal&quot;/> </li></ul></ul><ul><ul><li></output> </li></ul></ul><ul><ul><li></operation> </li></ul></ul><ul><ul><li></binding> </li></ul></ul><ul><ul><li><service name=&quot;StockQuoteService&quot;> </li></ul></ul><ul><ul><li><documentation>My first service</documentation> </li></ul></ul><ul><ul><li><port name=&quot;StockQuotePort&quot; binding=&quot;tns:StockQuoteBinding&quot;> </li></ul></ul><ul><ul><li><soap:address location=&quot;http://example.com/stockquote&quot;/> </li></ul></ul><ul><ul><li></port> </li></ul></ul><ul><ul><li></service> </li></ul></ul>
  33. 33. Descripción <ul><li>Las políticas describen las obligaciones y los permisos de los clientes. El estándar que recoge como describirlas es el WS-Policy de W3C </li></ul><ul><li>Ejemplo de políticas concretas: </li></ul><ul><ul><li>El cliente debe enviar los mensajes firmados y/o con la información encriptada. </li></ul></ul><ul><ul><li>El cliente debe incluir en los mensajes información de direccionamiento </li></ul></ul><ul><ul><li>El cliente puede soportar de manera opcional la fiabilidad en los mensajes. </li></ul></ul>
  34. 34. Descripción <ul><ul><li><wsp:Policy </li></ul></ul><ul><ul><li>xmlns:sp=&quot;http://schemas.xmlsoap.org/ws/2005/07/securitypolicy&quot; </li></ul></ul><ul><ul><li>xmlns:wsp=&quot;http://schemas.xmlsoap.org/ws/2004/09/policy&quot; > </li></ul></ul><ul><ul><li><wsp:ExactlyOne> </li></ul></ul><ul><ul><li><wsp:All> </li></ul></ul><ul><ul><li> <sp:RequireDerivedKeys /> </li></ul></ul><ul><ul><li></wsp:All> </li></ul></ul><ul><ul><li></wsp:ExactlyOne> </li></ul></ul><ul><ul><li><wsp:ExactlyOne> </li></ul></ul><ul><ul><li><wsp:All> </li></ul></ul><ul><ul><li><sp:WssUsernameToken10 /> </li></ul></ul><ul><ul><li></wsp:All> </li></ul></ul><ul><ul><li><wsp:All> </li></ul></ul><ul><ul><li><sp:WssUsernameToken11 /> </li></ul></ul><ul><ul><li></wsp:All> </li></ul></ul><ul><ul><li></wsp:ExactlyOne> </li></ul></ul><ul><ul><li></wsp:Policy> </li></ul></ul>
  35. 35. Descripción <ul><li><description …> </li></ul><ul><li><types> … </types> </li></ul><ul><li><message>…</message> * </li></ul><ul><li><portType>…</portType> * </li></ul><ul><li><binding>…</binding> * </li></ul><ul><li><service> … </service> * </li></ul><ul><li><wsp:Policy>… </wsp:Policy> * </li></ul><ul><li></description> </li></ul>
  36. 36. Transacciones <ul><li>Algoritmos de Transacciones en Web Services son heredados de Computación Distribuida. </li></ul><ul><ul><li>WS-Coordination define como coordinar participantes en un protocolo. </li></ul></ul><ul><ul><li>WS-Transaction define la estructura de los mensajes. </li></ul></ul><ul><ul><li>WS-AtomicTransaction define los protocolos para Transacciones ACID, usando WS-Coord. para coordinar, y WS-Tx. para los mensajes. </li></ul></ul>
  37. 37. Transacciones <ul><li>Algoritmo que define WS-ATx. </li></ul><ul><ul><li>Two-Phase Commit. </li></ul></ul><ul><li>Fases de una transacción WS. </li></ul><ul><ul><li>1) Creación del Contexto e intercambio de mensajes con el Contexto en la Cabecera </li></ul></ul><ul><ul><li>2) Registro de los participantes y Coordinadores. </li></ul></ul><ul><ul><li>3) Ejecución del Protocolo Two-Phase Commit entre los Coordinadores. </li></ul></ul>
  38. 38. Composición <ul><li>Orquestación </li></ul><ul><ul><li>Un servicio actúa como controlador de un proceso. </li></ul></ul><ul><ul><li>WS-BPEL </li></ul></ul><ul><li>Coreografía </li></ul><ul><ul><li>Varios servicios participan en un proceso que no es controlado por un servicio especifico. </li></ul></ul><ul><ul><li>WS-CDL </li></ul></ul>
  39. 39. Composición
  40. 40. Composición
  41. 41. Procesos de Negocio <ul><li>Los procesos de negocios suelen definirse en los casos de usos de los sistemas. </li></ul><ul><li>Es un control lógico abstracto de ejecución de tareas con un objetivo de negocio. </li></ul><ul><li>Se suelen modelar haciendo uso de formalismos gráficos de UML 2 como son Diagramas de Actividad, Diagramas de Estados o BPMN (como extensión de UML 2). </li></ul>
  42. 42. Procesos de Negocio <ul><li>BPMN: Formalismo gráfico para el modelado de Procesos de Negocios en forma de Flujos de Trabajos (workflow). </li></ul><ul><li>De la OMG, versión actual 1.0. </li></ul><ul><li>Objetivo: </li></ul><ul><ul><li>Dar una notación fácilmente comprensible por las personas que se dedican a modelar procesos de negocio que no son ingenieros IT. </li></ul></ul><ul><ul><li>Facilitar la transformación a WS-BPEL de los modelos </li></ul></ul>
  43. 43. Procesos de Negocio <ul><li>Elementos de BPMN </li></ul><ul><ul><li>Objetos de flujo: Eventos, Actividades, Gateways </li></ul></ul><ul><ul><li>Objetos de conexión: Flujo de secuencia, Flujo de mensaje, Asociación </li></ul></ul><ul><ul><li>Artefactos: Objeto de Datos, Anotaciones, Grupos </li></ul></ul><ul><ul><li>Swimlanes: Pool y Lane </li></ul></ul>
  44. 44. Procesos de Negocio
  45. 45. Procesos de Negocio <ul><li>Herramientas: </li></ul><ul><ul><li>Eclipse 3.4 BPMN Modeler en el Soa Tool Platform (STP Update Site) </li></ul></ul><ul><ul><li>ActiveVOS Designer </li></ul></ul><ul><ul><li>Enterprise Architecture SPARX Systems </li></ul></ul>
  46. 46. WS-BPEL 2.0 <ul><li>Lenguaje basado en XML, estandarizado por el organismo OASIS. </li></ul><ul><li>Lenguaje Imperativo. </li></ul><ul><li>Primitivas que soportan el paralelismo. </li></ul>
  47. 47. WS-BPEL 2.0 <ul><li><process> </li></ul><ul><ul><li>Elemento principal de una definición WS-BPEL </li></ul></ul><ul><ul><li>Atributo “name”: Nombre del proceso </li></ul></ul><ul><ul><li>Atributo “targetNamespace” y demás: Espacios de nombres relacionados con la definición. </li></ul></ul><ul><ul><li><partnerLinks> </li></ul></ul><ul><ul><li><variables> </li></ul></ul><ul><ul><li><sequence> </li></ul></ul><ul><ul><li>... </li></ul></ul>
  48. 48. WS-BPEL 2.0 <ul><li><partnerLinks> {<partnerLink>}* </li></ul><ul><ul><li>Define los PortType's de los servicios que participarán durante la ejecución del proceso. </li></ul></ul><ul><ul><li>Representa la comunicación entre dos “partner”. Uno es el proceso y otro es un servicio o un cliente. </li></ul></ul><ul><ul><li>Atributo “myRole”: Usado cuando el proceso es el que recibe los mensajes como proveedor del servicio. </li></ul></ul><ul><ul><li>Atributo “partnerRole”: Usado cuando el proceso es el cliente de un proveedor del servicio. </li></ul></ul>
  49. 49. WS-BPEL 2.0 <ul><li><partnerLinks> </li></ul><ul><li><partnerLink name=”Employee” </li></ul><ul><li>partnerLinkType=”emp:EmployeeType” </li></ul><ul><li>partnerRole=”EmployeeServiceProvider” </li></ul><ul><li>/> </li></ul><ul><li><partnerLink name=”client” </li></ul><ul><li>partnerLinkType=”tns:TimesheetSubmissionType” </li></ul><ul><li>myRole=”TimesheetSubmissionServiceProvider” </li></ul><ul><li>/> </li></ul><ul><li></partnerLinks> </li></ul>
  50. 50. WS-BPEL 2.0 <ul><li><partnerLinkType> </li></ul><ul><ul><li>Es definido dentro del WSDL. </li></ul></ul><ul><ul><li>Referencia dentro del “partnerLink” al PortType del servicio. </li></ul></ul><definitions ... > ... <plnk:partnerLinkType name=”EmployeeServiceType” xmlns=”....”> <plnk:role name=”EmployeeServiceProvider”> <portType name=”emp:EmployeeInterface”/> </plnk:role> </plnk:partnerLinkType> </definitions
  51. 51. WS-BPEL 2.0 <ul><li><variables> {<variable>}* </li></ul><ul><ul><li>Para definir variables dentro del proceso. </li></ul></ul><variables> <variable name=”EmployeeHoursRequest” messageType=”emp:getWeeklyHoursRequestMessage”/> <variable name=”EmployeeHoursResponse” messageType=”emp:getWeeklyHoursResponseMessage”/> </variables>
  52. 52. WS-BPEL 2.0 <ul><li><sequence> </li></ul><ul><ul><li>Permite organizar una lista de actividades que se ejecutarán secuencialmente. </li></ul></ul><ul><li><switch>{<case condition=””>}*{<otherwise>} </li></ul><ul><ul><li>Permite agregar control condicional lógico dentro del proceso </li></ul></ul>
  53. 53. WS-BPEL 2.0 <ul><li><assign> {<copy>{ <from> <to>}}+ </li></ul><ul><ul><li>Permite copiar valores entre variables. </li></ul></ul><assign> <copy> <from variable=”TimesheetSubmissionFailedMessage”/> <to variable=”EmployeeNotificationMessage”/> </copy> </assign>
  54. 54. WS-BPEL 2.0 <ul><li><faultHandlers> {{<catch>}*<catchAll>} </li></ul><ul><ul><li>Cada “catch” puede contener actividades para el tratamiento de alguna excepción. </li></ul></ul><ul><ul><li>Las excepciones pueden ser “Faults” de las invocaciones o las lanzadas por el mismo proceso usando la actividad “throw” </li></ul></ul><faultHandlers> <catch faultName=”SomethingBadHappened” faultVariable=”TimesheetFault”> ... </catch> </faultHandlers>
  55. 55. WS-BPEL 2.0 <ul><li><empty>: Actividad “NoOp” </li></ul><ul><li><exit>: Terminar instancia </li></ul><ul><li><flow>: Ejecución de todas las actividades que contiene en paralelo. No devuelve el control hasta que terminen todas. </li></ul><ul><li><pick>: Para responder a eventos que tiene suspendido el proceso. De tiempo o de llegada de mensajes. (e.g. Esperar respuestas con TimeOut) </li></ul><ul><li><eventHandlers>: Para responder a eventos en general de tiempo o de llegada de mensajes (e.g. Cancelaciones) </li></ul><ul><li><scope>: Delimitar ámbitos. </li></ul><ul><li><while>: Bucle </li></ul><ul><li><wait>: Dormir la instancia por un tiempo. </li></ul>
  56. 56. Pros y Con WS-BPEL 2.0 <ul><li>Pros </li></ul><ul><ul><li>Programación Visual de Procesos. </li></ul></ul><ul><ul><li>Mecanismos de Correlación de mensajes, persistencia de procesos, etc... implementados ya de serie en la plataforma. </li></ul></ul><ul><ul><li>Mecanismos de control asíncronos, temporizadores, paralelismos fáciles de usar en el desarrollo. </li></ul></ul><ul><li>Contras </li></ul><ul><ul><li>Pobre integración con el resto de estándares. </li></ul></ul><ul><ul><li>Poca eficiencia. </li></ul></ul><ul><ul><li>Herramientas de calidad muy caras. </li></ul></ul><ul><ul><li>Muchas extensiones necesarias aportadas por plataformas pero no estandarizadas </li></ul></ul>
  57. 57. Proceso: Reserva de Viajes
  58. 58. Proceso: Reserva de Viajes
  59. 59. Preguntas ¡Gracias!
  60. 60. Entorno Lab <ul><li>ActiveVOS Designer </li></ul><ul><li>Apache Tomcat 5.5 con ActiveBPEL Open Source Engine </li></ul><ul><li>Apache Tomcat 6.0 con los Servicios del Tutorial que usará el proceso BPEL </li></ul><ul><li>SoapUI como cliente del Servicio Reserva de Viajes. </li></ul>

×