f26f587067b5a07319a68d4a3acae1b9.ppt
- Количество слайдов: 72
BPEL: Construindo um padrão Business Processo baseado em Web Services
Agenda O que é BPEL? Orquestração x Coreografia Vocabulário BPEL – – Activities Partners Variables Flow, Link, Correlation Escopo BPEL e Java technology Open issues of BPEL
O que é BPEL?
Web Services encontra Business Process Web Service 1 Web Service 4 Web Service 2 Web Service 5 Web Service 3 Web Service n
Necessidade de composição de Web Services Aplicações de negócio têm que interoperar e integrar; A resposta moderna para o desafio de integração, é a Arquitetura Orientado à Serviço e a tecnologia orientada à serviço. Diferentes aplicações de negócio expondo suas funcionalidades através de serviços web. Desenvolver os serviços web e expor as funcionalidades não é suficiente. Necessita-se um meio de compor estas funcionalidade na ordem correta (Business Process)
Examplo Problema dit Cre ck Che dit Cre onse p Res Purchase Invoice Order Client Credit Service Consolidate Results PO Service Res Inv erve ent or y Inv Res entor pon y se Inventory Service
Desafio Business Process Coordenar comunicação assíncrona entre os serviços Correlacionar troca de mensagens entre as partes Implementar ativdades de processamento em paralelo Implementar lógica de compensação (Undo operations) . . . Manipulação/transforma ção de dados entre parceiros de interações Suporte para atividades de transações de negócios de longa duração Manipular exceções Necessidade de modelo universal de troca Necessidade de troca de mensagem . . .
História Recente Business Process Standards BPML XLang WSCI WS-Choreography (Intallio et al) 2000/05 BPSS (eb. XML) (Sun et al) (W 3 C) 2001/03 2001/05 WSFL (IBM) (Microsoft) 2004/12 WS-CDL 2001/06 2002/03 WSCL (HP) 2002/06 2002/08 BPEL 4 WS 1. 0 (IBM, Microsoft) 2003/01 2003/04 BPEL 4 WS 1. 1 (OASIS)
O que é BPEL?
Serviço Web (WS) Linguagem de Execução de Processos de Negócio (BPEL) • Versão 1. 0 liberado ple IBM, Microsoft e BEA ago/02 – WS-Coordination, WS-Transaction • Versão 1. 1 submetido para OASIS abr/03 (http: //www. oasis-open. org) – Organization for the Advancement of Structured Information Standards • Versão 2. 0 aprovado abr/2007 (http: //bpel. xml. org/aboutbpel) • Linguagem XML para descrever processos de negócio baseado em serviço WEB. • Convergência de XLANG (Microsoft) e WSFL (IBM) • Consenso de Indústria • IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel …
BPEL “Concerta” WSDL: conjunto de operações desordenadas • Operação é a troca de mensagens Necessita de regras para ordenar
BPEL é um Web Service Sequencing Language Processos definem um fluxograma de “coversação” • Conversação consiste na descrição de troca de mensagens WSDL. A instância de um processo é um fluxograma em particular • Sistema de execução pode suportar múltiplos conversações concorrentes.
BPEL é um linguagem orientada a Gráficos A natureza baseada em XML dos processos XML permite que a lógica dos processos seja editada por ferramentas visuais. Nós Atividades (Activity Nodes) • Representa a troca de mensagens, operações internas, pontos de decisão Arcos (Arcs) • • Ordem de execução Restrições em processos concorrentes Gráfico direto acíclico (Directed acyclic graph) Parecido com Java Separa erros e manipulação de compensação •
Exemplo Fonte: Collaxa BPEL Designer
BPEL é um Web Service Composition Language Consome serviços (invoke) Cria serviços (receive/reply) Agrega serviços densos (fine-grained services) Cria serviços simples (coarser-grained service)
Proposta do WS-BPEL Processos de negócios portável – Construir uma infraestrutura interoperável de Serviços Web. Linguagem abrangente de indústria para os processos de negócio – Conjunto de habilidades comuns e linguagens para os desenvolvedores Mecanismo de escolha de processos – Padrões permitem uma oferta competitiva
Uso do BPEL Dentro da Corporação (Intranet) Padronizar integração das aplicações corporativas e estender a integração de sistemas isolados Entre as corporações (Internet) Possibilitar integração fácil e eficiente entre os parceiros
BPEL Extensão Web Services BPEL é uma tecnologia chave em ambientes onde as funcionalidades já estão ou serão disponibilizados como serviços web. Com o aumento do uso de serviços web a importância do BPEL crescerá.
BPEL Process como Web Service
Orquestração x Coreografia
Orquestração x Coreografia Orquestração É um processo de negócio executável descrevendo um fluxo do ponto de vista de controle (Workflow) BPEL manipula Orquestração Coreografia (WSDL) A troca de mensagem pública e observável Regras de interação Agregação entre dois ou mais processos de negócio WSDL manipula coreografia. CDL 4 WS
Exemplo Business Process: Ordem de Compra Exemplo de Ordem de Compra Requisição de Ordem de Compra Business “A” Reconhecimento da ordem de compra Resposta de Ordem de Compra Business “B”
Perspectiva da Coreografia Public Process Business A Send PO Receive PO Ack Receive PO Response Business B Requisição da Ordem de Compra Reconhecimento da Ordem de Compra Resposta da Ordem de Compra Receive PO Send PO Ack Send PO Response Coreografia – Observação pública da troca de mensagem
Perspectiva da Orquestração Private Process Business A BPEL Workflow Transform From ERP Send PO Receive PO Ack To ERP Transform Receive PO Response Requisição da ordem de compra Reconhecimento da ordem de compra Resposta da ordem de compra Orquestração – A execução do processo de negócio
Orquestração e Coreografia Juntas Business Analyst Tool Business A Generate BPEL Template Business B BPEL Workflow Business A BPEL Workflow Transform Send PO Receive PO Ack Transform Receive PO Response Generate BPEL Template PO Request Receive PO Transform Send PO Acknowledgement PO Response Receive PO Response Transform Dois fluxo de trabalho (workflow) refletindo um tratado de negócio
BPEL - Padrões Choreography Orchestration – WS-BPEL Business Processes Management Transactions WS-Reliability WS-Security Coordination Quality of Service Context UDDI Discovery WSDL Description SOAP XML HTTP, IIOP, JMS, SMTP Message Transport
BPEL Depende de WSDL e Extensões Service Implementation Definition Service Port Binding Service Interface Definition Port types define Operations Message Type
BPEL Vocabulário: Activities
BPEL Estrutura do Documento <process> <!– Definition and roles of process participants --> <partner. Links>. . . </partner. Links> <!- Data/state used within the process --> <variables>. . . </variables> <!- Properties that enable conversations --> <correlation. Sets>. . . </correlation. Sets> <!- Exception handling --> <fault. Handlers>. . . </fault. Handlers> <!- Error recovery – undoing actions --> <compensation. Handlers>. . . </compensation. Handlers> <!- Concurrent events with process itself --> <event. Handlers>. . . </event. Handlers> <!- Business process flow --> (activities)* </process>
BPEL Activities Um processo BPEL consiste em: Cada passo é chamado de atividade (activity) Existem 2 tipos de atividades BPEL Atividades Básicas Atividades Estruturadas
BPEL Activities Basic Activities <invoke> <receive> <reply> <assign> <throw> <wait> <empty> Structured Activities <sequence> <while> <pick> <flow> <scope> <compensate> <switch> <link>
Basic Activities Invoke Permite que os processos ativem uma operação unidirecional ou de request/response em um port. Type oferecido por um parceiro. Receive Permite que os processos executem um bloqueio de esperando uma mensagem chegar. Pode ser um instanciador de um processo. Reply Permite que os processos enviem uma mensagem em resposta a mensagem que é recebido através de um <receive> A combinação de <receive> e um <reply> forma uma operação request-response em um WSDL port. Type para o processo.
Basic Activities Assign Pode ser utilizada para atualizar valores de variáveis com novos valores Throw Gerar um erro/falta em um processo Wait Permite esperar por um período ou até passar um tempo Empty Permite inserir uma operação vazia em um processo. É útil para sincronizar atividades concorrentes.
Structured Activities Sequence Permite definir uma coleção de atividades para serem executados seqüencialmente em uma ordem léxica. While Permite indicar que uma atividade seja repetida até que um critério seja alcançado. Pick Permite bloquear e esperar uma mensagem chegar ou disparar um alarme para avisar Quando algum gatilho for ativado, a atividade associada é executada e o pick completa.
Structured Activities Flow Permite especificar um ou mais atividades para executar concorrentemente. Ligações podem ser utilizadas em atividades concorrentes para definir estruturas de controles arbitrárias. Scope Permite definir uma atividade aninhada com uma variável associada, manipulador de erros, exceções e compensações. Compensate Utilizada para chamar compensação dentro do escopo que foi completada normalmente. Esta construção pode ser chamada somente dentro de um manipulador de exceções ou outro compensation handler
Structured Activities Switch Permite um comportamento condicional em um padrão que acontece com freqüência. A atividade consiste em uma lista ordenada de um ou mais condições definida com elementos case, seguido por um otherwise. While Permite repetir uma interação de activity. Allows
Basic Activities combinado com Structured Activities Receive <PO> Invoke <Inventory. Service> Invoke <Credit. Service> Reply <Invoice> <sequence> <flow> </sequence>
Exemplo Activities in BPEL <sequence> <receive partner. Link=“customer” port. Type=“lns: purchase. Order. PT" operation=“send. Purchase. Order” variable=“PO” create. Instance="yes" /> <flow> <invoke partner. Link=“inventory. Checker” port. Type=“lns: inventory. PT” operation="check. INV" input. Variable="inventory. Request" output. Variable="inventory. Response" /> <invoke partner. Link="credit. Checker" port. Type=“lns: credit. PT" operation="check. CRED" input. Variable="credit. Request" output. Variable="credit. Response" /> </flow>. . . <reply partner. Link=“customer” port. Type=“lns: purchase. Order. PT” operation=“send. Purchase. Order” variable=“invoice"/> </sequence>
Wait <wait standard-attributes> standard-elements ( <for expression. Language="any. URI"? >duration-expr</for> | <until expression. Language="any. URI"? >deadline-expr</until> ) </wait>
Switch <switch standard-attributes> standard-elements <case>+ <condition expression. Language="any. URI"? >. . . bool-expr. . . </condition> activity </case> <otherwise>? activity </otherwise> </switch>
While <while standard-attributes> standard-elements <condition expression. Language="any. URI"? >. . . bool-expr. . . </condition> activity </while>
Switch <switch standard-attributes> standard-elements <case>+ <condition expression. Language="any. URI"? >. . . bool-expr. . . </condition> activity </case> <otherwise>? activity </otherwise> </switch>
BPEL Vobulário: Partner Links
Duas formas para BPEL Process interagir com Web Services externos O processo BPEL chama operações de outros serviços WEB Representados por um partner. Link O processo BPEL recebe chamadas de clientes Representados por um cliente partner. Link Estes clientes de processos BPEL parecem outros serviços web. Quando se define um processo BPEL define-se um novo serviço web que é uma composição de serviços existentes.
BPEL as a Web Service
Exemplo dit Cre ck s on esp Chee R Purchase Invoice Order Client Credit Service Consoli date Results PO Service Inv e R nto Res ese ry Inv o rve pe n e nts r o y Inventory Service
Partner Links Os serviços com os quais um processo interage são modelados como um partner link. Cada partner link é caracterizado por um partner. Link. Type As regras do processo é indicado por um atributo my. Role e a regra (ROLE) do parceiro é indicado pelo atributo partner. Role. Partner 1 (the process) Purchase Service Partner 2 Credit Service Partner 3 Inventory Service
Partner Link <partner. Links> <partner. Link name="ncname" partner. Link. Type="qname" my. Role="ncname"? partner. Role="ncname"? >+ </partner. Link> </partner. Links>
Partner Link <? xml version="1. 0" encoding="utf-8"? > <process name="insurance. Selection. Process" target. Namespace="http: //packtpub. com/bpel/example/" xmlns="http: //schemas. xmlsoap. org/ws/2003/03/business-process/" xmlns: ins="http: //packtpub. com/bpel/insurance/" xmlns: com="http: //packtpub. com/bpel/company/" > <partner. Links> <partner. Link name="client" partner. Link. Type="com: selection. LT" my. Role="insurance. Selection. Service"/> <partner. Link name="insurance. A" partner. Link. Type="ins: insurance. LT" my. Role="insurance. Requester" partner. Role="insurance. Service"/> <partner. Link name="insurance. B" partner. Link. Type="ins: insurance. LT" my. Role="insurance. Requester" partner. Role="insurance. Service"/>. . . </partner. Links>
Partner Link Type <partner. Link. Type name="Buyer. Seller. Link" xmlns="http: //schemas. xmlsoap. org/ws/2004/03/partner-link/"> <role name="Buyer" port. Type="buy: Buyer. Port. Type"/> <role name="Seller" port. Type="sell: Seller. Port. Type"/> </partner. Link. Type>
BPEL Vocabulary: Variables
Variables Mensagens enviadas e recebidas de parceiros Definido em tipos e mensagens WSDL Process Customer Service <variable> <activity> <variable> <A> Persist/ Retrieve <B> Persist/ Retrieve Customer Service Persist/ Retrieve
Variables in BPEL: <variables> <variable name=“PO” message. Type=“lns: POMessage”/> <variable name=“Invoice” message. Type=“lns: Inv. Message”/> <variable name=“POFault” message. Type=“lns: order. Fault. Type”/> </variables> Purchase Process WSDL: <message name=“POMessage”> <part name=“customer. Info” type=“sns: customer. Info”/> <part name=“purchase. Order” type=“sns: purchase. Order”/> </message> <message name="Inv. Message"> <part name=“IVC” type=“sns: Invoice”/> </message> <message name=“order. Fault. Type”> <part name=“problem. Info” type=“xsd: string”/> </message>
Como acontece a manipulação de dados? Utilizando <assign> e <copy>, os dados podem ser copiados e manipulados entre variáveis; <copy> suporta consultas Xpath para selecionar um dado. <assign> <copy> <from variable="PO" part="customer. Info"/> <to variable=“credit. Request” part="customer. Info"/> </copy> </assign>
BPEL Vocabulary: Flow, Links, Corelation
Links – Control Flow <flow> <links> <link name="Xto. Y"/> <link name="Cto. D"/> </links> <sequence name="X"> <source link. Name="Xto. Y"/> <invoke name="A". . . /> <invoke name="B". . . /> </sequence> <sequence name"Y"> <target link. Name="Xto. Y"/> <receive name="C"/> <source link. Name="Cto. D"/> </receive> <invoke name="E". . . /> </sequence> <invoke partner. Link="D"> <target link. Name="Cto. D"/> </invoke> </flow> <X> <A> <B> <link Xto. Y> <C> <link Cto. D> <E> <D> </flow>
Correlation / Correlação PO initiate=yes Correlation: <PO_Cust. Id = 10> <PO_Ord. Id = 100> Customer initiate=yes Seller • Send. Purchase • Asynch. Purchase • Process. Purchase. Response initiate=no initiate=yes POResponse Correlations: <PO_Cust. Id = 10> <PO_Ord. Id = 100> <Inv_Vend. Id = 20> <Inv_Inv. Id = 200> • Asynch. Purchase. Response initiate=no pattern=out initiate=yes pattern=out
Correlação in BPEL <correlation. Sets> <correlation. Set name="POCorr" properties="cor: cust. Id cor: ord. Id"/> <correlation. Set name="Invoice. Corr" properties="cor: vend. Id cor: inv. Id"/> </correlation. Sets>. . . <receive partner. Link=“Customer” port. Type="SP: Purchase. Order. PT" operation="Asynch. Purchase" variable="PO"> <correlations> <correlation set="POCorr" initiate="yes"> </correlations> </receive>. . . <invoke partner. Link=“Customer” port. Type="SP: Customer. PT" operation=“Process. Purchase. Response" input. Variable="POResponse"> <correlations> <correlation set="POCorr" initiate="no" pattern="out"> <correlation set="Invoice. Corr" initiate="yes" pattern="out"> </correlations> </invoke>. . .
Escopo do BPEL
Escopo em BPEL Provê um contexto compartilhado para um conjunto de atividades Pode conter <scope variable. Access. Serializable="yes|no“. . . > <variables> </variables> <correlation. Sets>? . . . </correlation. Sets> Manipuladores de Erros <fault. Handlers> Manipuladores de </fault. Handlers> Eventos <compensation. Handler>? Variáveis de </compensation. Handler> manipulação de <event. Handlers> compensação </event. Handlers> (activities)* Conjunto de correlações </scope> Pode serializar variáveis de acesso concorrente . . .
Transações de Longa Duração e Compensação (UNDO) <scope> Charge Hold Fee Undo Credit. Service • Check. Credit • Charge. Hold. Fee • Cancel. Hold. Fee Inventory. Service Reserve Inventory Undo </scope> • Reserve. Inventory • Cancel. Reserve. Inv
Manipulação de Compensação BPEL <scope> <compensation. Handler> <invoke partner. Link="Seller" port. Type="SP: Purchasing" operation="Cancel. Purchase" input. Variable="get. Response" output. Variable="get. Confirmation"> <correlations> <correlation set="Purchase. Order" pattern="out"/> </correlations> </invoke> </compensation. Handler> <invoke partner. Link="Seller" port. Type="SP: Purchasing" operation="Sync. Purchase" input. Variable="send. PO" output. Variable="get. Response"> <correlations> <correlation set="Purchase. Order" initiate=“yes” pattern="out"/> </correlations> </invoke> </scope>
Exception Handling in BPEL <fault. Handlers> catch exception – Based on WSDL port defining fault <fault. Handlers> can perform activities upon invocation <fault. Handlers> <catch fault. Name="lns: cannot. Complete. Order" fault. Variable="POFault"> <reply partner. Link="customer" port. Type="lns: purchase. Order. PT" operation="send. Purchase. Order" variable="POFault" fault. Name="cannot. Complete. Order"/> </catch> </fault. Handlers>
Como isso ocorre? Process WSDL Partner WSDL 1 . . . Partner WSDL n BPEL Scenario <process> <partners> <variables> <sequence> <flow> </sequence> </process> 1. 2. 3. Compile Package Deploy Compiled BPEL Scenario BPEL Runtime Application Server
BPEL and Java Technology
BPEL e Java BPEL é uma linguagem de programação genérica como Java, mas não é tão poderosa como Java. Ordem exata como os participantes dos serviços web devem ser chamados; Comportamento condicional, Laços, Variáveis. . . É simples e adapta-se melhor para definição de processos de negócio; BPEL não veio para tomar o lugar de Java, mas como um complemento para Java.
O que aconteceu com Java? JSR 207 – Processo de Definição de Linguagem para Java Fazer com que os processos de negócio sejam natural para os programadores Java. Process Definition for Java Servlet Transactions EJB Messaging Security Naming Application Server Pooling
O que aconteceu com J 2 EE? JSR 208 – Java Business Integration Fazer com os processos de negócio sejam cidadãos de primeira classe nos containers J 2 EE JSR 208 BPEL Engine Transform Engine Routing Engine Machine SPI . . . Normalized Message Bus Binding Framework EDI JCA Based on JSR 208 Session at Java. One 2003 Web Services JMS . . . JSR 208 Binding SPI
Ferramentas Necessárias IDE – construir seus Web services WSDL authoring – modelar sua interface Schema authoring – modelar mensagens Process modeling – modelar orquestração Empacotamento e implantação Debugging Monitoramento Análise
Considerações BPEL
Algumas soluções W 3 C: WS-Choreography Spec: WS-Transaction Spec: WS-Coordination Spec: WS-Composite Application Framework OASIS: WS-Reliability Spec: Reliable. Messaging Spec: WS-Addressing OASIS: WS-Security …
Alguns pensamentos Portabilidade de processos de negócio? Java / J 2 EE é portável através de servidores de aplicação BPEL é portável independente de Java Linguagem de programação em XML? Fornecedores de todos os tamanhos estão ocupados projetando modelos
f26f587067b5a07319a68d4a3acae1b9.ppt