BPEL: Construindo um padrão Business Processo baseado em Web Services

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Sistemas Distribuídos Web Services
Advertisements

Web Services aplicado à Computação em Grade
Sistemas Distribuídos Baseados na Web
(Unified Modeling Language)
Sistemas Distribuídos Web Services
Sistemas Distribuídos
Maurício Edgar Stivanello
Teste em Esquemas de Dados Maria Cláudia Figueiredo Pereira Emer Universidade Federal do Paraná Departamento de Informática Seminário.
RUP Rational Unified Process (Processo Unificado de Desenvolvimento da Rational) 1.
Introdução aos Serviços Web
Web Services Erika Hmeljevski Estefania Borm Leonardo Malagoli
Definition of a business model An architecture for the product, service and information flows, including a description of the various business actors and.
Bruno Tardiole Kuehne Orientador: Prof. Dr. Marcos José Santana
SOA e Web Services Aluno: Thiago Caproni Tavares
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Área de Desenvolvimento de Sistemas
DAS Sistemas Distribuídos para Automação Industrial
Aplicações para Web.
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Sistemas Distribuídos
SOA - Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a serviços
Tópicos de Sistemas de Informação A
Middleware e Sistemas Distribuídos
Arquiteturas de Referência
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
iColabora Solução web para gestão de processos de negócios
CORBA e Desenvolvimento Baseado em Componentes
Professor: Márcio Amador
FIPA THE FOUNDATION FOR INTELLIGENT PHYSICAL AGENTS
Arquitetura SOA e Oracle SOA SUITE
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Da Introdução à Prática
Engenharia de Software
Processos.
Transações Concorrentes
RPC and Web Service André Pereira.
FERRAMENTAS DE GERENCIAMENTO Aula 01
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
Workflow Integração de Sistemas Empresariais Pedro António, M5157 Fevereiro 2004.
METODOLOGIA, MÉTODOS E FERRAMENTAS
SOA Elucidado: Princípios da Arquitetura Orientada a Serviços
Gerenciamento baseado na Web
Web Services Equipe: Cláudia Brito Lyra Nunes da Silva
Integração de Ferramentas CASE
Abr-17 Projetar Processos Projetar distribuição.
Web Services: Conceitos e Transações
Universidade Federal de Alagoas Instituto de Computação - IC Redes de Computadores 2 Serviços Web Felipe Santos José Oswaldo.
Desenvolvimento de Aplicações para WEB Para inserir o logotipo da empresa neste slide No menu 'Inserir' Selecione 'Figura' Localize o arquivo com o logotipo.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI.
Infra-Estrutura para Computação Distribuída
Shark: um engine de workflow estensível baseado na especificação WfMC.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Web Services Uma Introdução Jacques P. Sauvé DSC/UFCG 2003.
Análise e Projeto de Sistemas
Pesquisa sobre o uso de Web Service Alunos:Felipe Silveira Israel Andreis Programação Distribuída e Paralela Prof. Dr. Cláudio F. R. Geyer.
Desenvolvimento Empresarial Aula 5 – Business Process Modeling Notation – Parte 2 Prof.: Guilherme Amorim Data: 26/03/2014.
III – Aplicações – Serviços Virtuais – Web Services Escola Politécnica da USP MBA EPUSP em Gestão e Engenharia do Produto EP018 O Produto Internet e suas.
WebPTM Web Project and Time Manager Autor: Daniel Nicoletti Orientador: Prof. Dr. Carlos Miguel Tobar Toledo Co-Orientador: Murilo Woigt Miranda PONTIFÍCIA.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
/ de Julho de UFPE - Universidade Federal de Pernambuco CIn - Centro de Informática Pós-Graduação em Ciência da Computação Tópicos Avançados.
SOA SOA – Arquitetura Orientada a Serviços Conceitos e Aplicações
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
YOUR LOGO Tópicos Avançados em Internet Prof. Lincoln Ferreira Dantas Sistemas de Informação UNIESP – Presidente Epitácio.
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
Transcrição da apresentação:

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 BPEL e Java technology Open issues of BPEL

O que é BPEL?

Web Services encontra Business Process Within companies, business applications have to interoperate and integrate - so they have between companies. Integrating different applications has always been a difficult task for various functional and technology related reasons. The most recent answer to the integration challenge is the Service Oriented Architecture (SOA) and the web services technologies. The bottom-up view of the SOA sees different business applications exposing their functionalities through web services. Thus we can now access different functionalities of different legacy and new developed applications in a standard way (through web services). Such access to functionalities is important because typical companies have a large number of existing applications which have to be integrated. Developing the web services and exposing the functionalities is not sufficient. We also need a way to compose these functionalities in the right order – a way to define business processes which will make use of the exposed functionalities. We would obviously prefer a relatively simple and straightforward way to define such processes, particularly because we know that business processes change often, therefore we would like to modify them easily. This is where the BPEL (Business Process Execution Language for Web Services, also WS-BPEL or BPEL4WS) becomes important. BPEL allows composition of web services and is thus the top-down approach to SOA – the process oriented approach to SOA. 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 Credit Service PO Service Client Inventory Service Credit Check Credit Response Credit Service Consolidate Results Invoice Purchase Order PO Service Reserve Inventory Client Inventory Response 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 (Intallio et al) BPSS (ebXML) WSCI (Sun et al) WS-Choreography (W3C) 2000/05 2001/03 2001/05 2001/06 2002/03 2002/06 2002/08 2003/01 2003/04 WSFL (IBM) XLang (Microsoft) WSCL (HP) BPEL4WS 1.0 (IBM, Microsoft) BPEL4WS 1.1 (OASIS) 2004/12 WS-CDL

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/about- bpel) 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 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 É 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. CDL4WS Before we have a more in-depth look at BPEL, let us discuss how web services can be composed. There are two ways: orchestration and choreography. In orchestration, a central process takes control over the involved web services and coordinates the execution of different operations on the web services involved in the operation. This is done as per the requirements of the orchestration. The involved web services do not know (and do not need to know) that they are involved into a composition and that they are a part of a higher business process. Only the central coordinator of the orchestration knows this, so the orchestration is centralized with explicit definitions of operations and the order of invocation of web services. Choreography on the other hand does not rely on a central coordinator. Rather, each web service involved in the choreography knows exactly when to execute its operations and whom to interact with. Choreography is a collaborative effort focused on exchange of messages. All participants of the choreography need to be aware of the business process, operations to execute, messages to exchange, and the timing of message exchanges.

Exemplo Business Process: Ordem de Compra Exemplo de Ordem de Compra Requisição de Ordem de Compra Business “A” Business “B” Reconhecimento da ordem de compra Resposta de Ordem de Compra

Perspectiva da Coreografia Public Process Business A Business B Send PO Receive PO Ack Receive PO Response Receive PO Send PO Ack Send PO Response Requisição da Ordem de Compra Reconhecimento da Ordem de Compra Resposta da Ordem de Compra Coreografia – Observação pública da troca de mensagem

Perspectiva da Orquestração Private Process Business A BPEL Workflow Transform Send PO From ERP Requisição da ordem de compra Receive PO Ack Reconhecimento da ordem de compra To ERP Receive PO Response Transform Resposta da ordem de compra Orquestração – A execução do processo de negócio

Orquestração e Coreografia Juntas Business B Business Analyst Tool Business A Generate BPEL Template Generate BPEL Template Business A BPEL Workflow Business B BPEL Workflow Transform Send PO Receive PO Transform PO Request Receive PO Ack Send PO Ack PO Acknowledgement Transform Receive PO Response Receive PO Response Transform PO Response Dois fluxo de trabalho (workflow) refletindo um tratado de negócio

BPEL - Padrões Choreography Business Processes Orchestration – WS-BPEL Management Transactions Quality of Service Coordination WS-Reliability WS-Security Context UDDI Discovery WSDL Description Description SOAP Message XML HTTP,IIOP, JMS, SMTP Transport

BPEL Depende de WSDL e Extensões Service Implementation Definition Service Port Service Interface Definition Binding Port types define Operations Message Type

BPEL Vocabulário: Activities

BPEL Estrutura do Documento <process> <!– Definition and roles of process participants --> <partnerLinks> ... </partnerLinks> <!- Data/state used within the process --> <variables> ... </variables> <!- Properties that enable conversations --> <correlationSets> ... </correlationSets> <!- Exception handling --> <faultHandlers> ... </faultHandlers> <!- Error recovery – undoing actions --> <compensationHandlers> ... </compensationHandlers> <!- Concurrent events with process itself --> <eventHandlers> ... </eventHandlers> <!- 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> A BPEL process consists of steps. Each step is called an activity. BPEL supports primitive and structure activities. Primitive activities represent basic constructs and are used for common tasks, such as those listed below: * Invoking other web services, using <invoke> * Waiting for the client to invoke the business process through sending a message, using <receive> (receiving a request) * Generating a response for synchronous operations, using <reply> * Manipulating data variables, using <assign> * Indicating faults and exceptions, using <throw> * Waiting for some time, using <wait> * Terminating the entire process, using <terminate>, etc. We can then combine these and other primitive activities and define complex algorithms, which exactly specify the steps of business processes. To combine primitive activities BPEL supports several structured activities. The most important are: * Sequence ( <sequence>), which allows us to define a set of activities that will be invoked in an ordered sequence * Flow ( <flow>) for defining a set of activities that will be invoked in parallel * Case-switch construct ( <switch>) for implementing branches * While ( <while>) for defining loops * The ability to select one of a number of alternative paths, using <pick>

Basic Activities Invoke Receive Reply Permite que os processos ativem uma operação unidirecional ou de request/response em um portType oferecido por um parceiro. Receive Permite que os processos executem um bloqueio de espera 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 portType para o processo.

Basic Activities Assign Throw Wait Empty 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 activityAllows

Basic Activities combinado com Structured Activities <sequence> Receive <PO> <flow> Invoke <InventoryService> Invoke <CreditService> Reply <Invoice> </sequence>

Exemplo Activities in BPEL <sequence> <receive partnerLink=“customer” portType=“lns:purchaseOrderPT" operation=“sendPurchaseOrder” variable=“PO” createInstance="yes" /> <flow> <invoke partnerLink=“inventoryChecker” portType=“lns:inventoryPT” operation="checkINV" inputVariable="inventoryRequest" outputVariable="inventoryResponse" /> <invoke partnerLink="creditChecker" portType=“lns:creditPT" operation="checkCRED" inputVariable="creditRequest" outputVariable="creditResponse" /> </flow> ... <reply partnerLink=“customer” portType=“lns:purchaseOrderPT” operation=“sendPurchaseOrder” variable=“invoice"/> </sequence>

Wait <wait standard-attributes> standard-elements ( <for expressionLanguage="anyURI"?>duration-expr</for> | <until expressionLanguage="anyURI"?>deadline-expr</until> ) </wait>

Switch <switch standard-attributes> standard-elements <case>+ <condition expressionLanguage="anyURI"?> ... bool-expr ... </condition> activity </case> <otherwise>? </otherwise> </switch>

While <while standard-attributes> standard-elements <condition expressionLanguage="anyURI"?> ... bool-expr ... </condition> activity </while>

Switch <switch standard-attributes> standard-elements <case>+ <condition expressionLanguage="anyURI"?> ... bool-expr ... </condition> activity </case> <otherwise>? </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 partnerLink O processo BPEL recebe chamadas de clientes Representados por um cliente partnerLink 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 Credit Service PO Service Client Inventory Service Consolidate Credit Response Credit Check Credit Service Consolidate Results Invoice Purchase Order Inventory Response PO Service Reserve Inventory Client 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 partnerLinkType As regras do processo é indicado por um atributo myRole e a regra (ROLE) do parceiro é indicado pelo atributo partnerRole. Partner 3 Partner 1 (the process) Partner 2 Purchase Service Inventory Service Credit Service

Partner Link <partnerLinks> <partnerLink name="ncname" partnerLinkType="qname" myRole="ncname"? partnerRole="ncname"?>+ </partnerLink> </partnerLinks>

Partner Link <?xml version="1.0" encoding="utf-8"?> <process name="insuranceSelectionProcess" targetNamespace="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/" > <partnerLinks> <partnerLink name="client" partnerLinkType="com:selectionLT" myRole="insuranceSelectionService"/> <partnerLink name="insuranceA" partnerLinkType="ins:insuranceLT" myRole="insuranceRequester" partnerRole="insuranceService"/> <partnerLink name="insuranceB" </partnerLinks> ...

Partner Link Type <partnerLinkType name="BuyerSellerLink" xmlns="http://schemas.xmlsoap.org/ws/2004/03/partner-link/"> <role name="Buyer" portType="buy:BuyerPortType"/> <role name="Seller" portType="sell:SellerPortType"/> </partnerLinkType>

BPEL Vocabulary: Variables

Variables Mensagens enviadas e recebidas de parceiros Definido em tipos e mensagens WSDL Process Customer Service <variable> <activity> <activity> <variable> Customer Service <A> <B> Persist/ Retrieve Persist/ Retrieve Persist/ Retrieve Persist

Purchase Process WSDL: Variables in BPEL BPEL: <variables> <variable name=“PO” messageType=“lns:POMessage”/> <variable name=“Invoice” messageType=“lns:InvMessage”/> <variable name=“POFault” messageType=“lns:orderFaultType”/> </variables> Purchase Process WSDL: <message name=“POMessage”> <part name=“customerInfo” type=“sns:customerInfo”/> <part name=“purchaseOrder” type=“sns:purchaseOrder”/> </message> <message name="InvMessage"> <part name=“IVC” type=“sns:Invoice”/> <message name=“orderFaultType”> <part name=“problemInfo” type=“xsd:string”/>

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="customerInfo"/> <to variable=“creditRequest” part="customerInfo"/> </copy> </assign>

BPEL Vocabulary: Flow, Links, Corelation

Links – Control Flow <flow> <X> <A> <B> <link name="XtoY"/> <link name="CtoD"/> </links> <sequence name="X"> <source linkName="XtoY"/> <invoke name="A" .../> <invoke name="B" .../> </sequence> <sequence name"Y"> <target linkName="XtoY"/> <receive name="C"/> <source linkName="CtoD"/> </receive> <invoke name="E" .../> <invoke partnerLink="D"> <target linkName="CtoD"/> </invoke> </flow> <flow> <X> <A> <link XtoY> <B> <Y> <link CtoD> <C> <E> <D> </flow>

Correlation / Correlação PO Correlation: <PO_CustId = 10> <PO_OrdId = 100> initiate=yes initiate=yes Customer Seller SendPurchase ProcessPurchaseResponse AsynchPurchase AsynchPurchaseResponse POResponse Correlations: <PO_CustId = 10> <PO_OrdId = 100> <Inv_VendId = 20> <Inv_InvId = 200> initiate=no initiate=no pattern=out initiate=yes initiate=yes pattern=out

Correlação in BPEL <correlationSets> <correlationSet name="POCorr" properties="cor:custId cor:ordId"/> <correlationSet name="InvoiceCorr" properties="cor:vendId cor:invId"/> </correlationSets> ... <receive partnerLink=“Customer” portType="SP:PurchaseOrderPT" operation="AsynchPurchase" variable="PO"> <correlations> <correlation set="POCorr" initiate="yes"> </correlations> </receive> ... <invoke partnerLink=“Customer” portType="SP:CustomerPT" operation=“ProcessPurchaseResponse" inputVariable="POResponse"> <correlation set="POCorr" initiate="no" pattern="out"> <correlation set="InvoiceCorr" initiate="yes" pattern="out"> </invoke> ...

Escopo do BPEL

Escopo em BPEL Provê um contexto compartilhado para um conjunto de atividades Pode conter Manipuladores de Erros Manipuladores de Eventos Variáveis de manipulação de compensação Conjunto de correlações Pode serializar variáveis de acesso concorrente <scope variableAccessSerializable="yes|no“ ...> <variables> </variables> <correlationSets>? ... </correlationSets> <faultHandlers> </faultHandlers> <compensationHandler>? ... </compensationHandler> <eventHandlers> </eventHandlers> (activities)* </scope>

Transações de Longa Duração e Compensação (UNDO) <scope> CreditService Undo Charge Hold Fee CheckCredit ChargeHoldFee CancelHoldFee InventoryService Reserve Inventory Undo ReserveInventory CancelReserveInv </scope>

Manipulação de Compensação BPEL <scope> <compensationHandler> <invoke partnerLink="Seller" portType="SP:Purchasing" operation="CancelPurchase" inputVariable="getResponse" outputVariable="getConfirmation"> <correlations> <correlation set="PurchaseOrder" pattern="out"/> </correlations> </invoke> </compensationHandler> operation="SyncPurchase" inputVariable="sendPO" outputVariable="getResponse"> <correlation set="PurchaseOrder" initiate=“yes” pattern="out"/> </scope>

Exception Handling in BPEL <faultHandlers> catch exception Based on WSDL port defining fault <faultHandlers> can perform activities upon invocation <faultHandlers> <catch faultName="lns:cannotCompleteOrder" faultVariable="POFault"> <reply partnerLink="customer" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="POFault" faultName="cannotCompleteOrder"/> </catch> </faultHandlers>

Compiled BPEL Scenario Como isso ocorre? Process WSDL BPEL Scenario <process> <partners> <variables> <sequence> <flow> </sequence> </process> Application Server BPEL Runtime Compiled BPEL Scenario Compile Package Deploy Partner WSDL 1 . . . Partner WSDL n

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 EJB Messaging Transactions Pooling Naming Security Application Server

Based on JSR 208 Session at JavaOne 2003 O que aconteceu com J2EE? JSR 208 – Java Business Integration Fazer com os processos de negócio sejam cidadãos de primeira classe nos containers J2EE JSR 208 Machine SPI BPEL Engine Transform Engine Routing Engine . . . Normalized Message Bus Binding Framework JSR 208 Binding SPI EDI JCA Web Services JMS . . . Based on JSR 208 Session at JavaOne 2003

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 W3C: WS-Choreography Spec: WS-Transaction Spec: WS-Coordination Spec: WS-Composite Application Framework OASIS: WS-Reliability Spec: ReliableMessaging Spec: WS-Addressing OASIS: WS-Security …

Alguns pensamentos Portabilidade de processos de negócio? Java / J2EE é 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