965-7286-1-pb_estudo oracle service bus petrobras

Upload: evertonrubens

Post on 19-Oct-2015

170 views

Category:

Documents


4 download

TRANSCRIPT

  • UNIVERSIDADE FEDERAL DO ESTADO DO RIO DE JANEIRO

    CENTRO DE CINCIAS EXATAS E TECNOLOGIA

    Relatrios Tcnicos do Departamento de Informtica Aplicada

    da UNIRIO

    n 0020/2010

    Estudos de Enterprise Service Bus e Oracle

    Service Bus

    Henrique Prado Sousa

    Leonardo Guerreiro Azevedo

    Flvia Santoro

    Fernanda Baio

    Departamento de Informtica Aplicada

    UNIVERSIDADE FEDERAL DO ESTADO DO RIO DE JANEIRO

    Av. Pasteur, 458, Urca - CEP 22290-240

    RIO DE JANEIRO BRASIL

  • ii

    Projeto de Pesquisa

    Grupo de Pesquisa Participante

    Patrocnio

  • iii

    Relatrios Tcnicos do DIA/UNIRIO, No. 0020/2010 Editor: Prof. Sean W. M. Siqueira Dezembro, 2010

    Estudos de Enterprise Service Bus e Oracle Service

    Bus*

    Henrique Prado Sousa, Leonardo Guerreiro Azevedo, Flvia Santoro, Fernanda Baio

    Ncleo de Pesquisa e Prtica em Tecnologia (NP2Tec) Departamento de Informtica Aplicada (DIA) Universidade Federal do Estado do Rio de

    Janeiro (UNIRIO)

    {henrique.sousa, azevedo, flavia.santoro, fernanda.baiao}@uniriotec.br

    Abstract. Enterprise Service Bus (ESB) is the main infra-structure in SOA. It is responsible to make available, in a standard way, services from different platforms, implemented in different programming languages, and available from providers in a distributed environment. Despite of several patterns for SOA, there is no pattern for ESB. Vendors agree what are the responsibilities of ESB. However, each vendor has its own implementation of ESB. This work presents the main characteristics of ESB, and analises in practice the ESB implementation of Oracle, called as Oracle Service Bus.

    Keywords: SOA, ESB, OSB.

    Resumo. Enterprise Service Bus (ESB) corresponde a principal infra-estrutura de SOA. Ela utilizada para disponibilizar de uma forma padronizada servios de diferentes plataformas, implementados em diferentes linguagens de programao e disponveis a partir de provedores em um ambiente distribudo. Apesar de existirem vrios pa-dres para SOA, este no a regra para ESB. Existe um concenso entre fornecedores quais so as funcionalidades que um ESB deve prover. No entanto, cada fornecedor possui sua implementao de ESB. Este trabalho apresenta as principais caractersticas de um ESB, e analisa de forma prtica a implementao de ESB da Oracle, chamada de Oracle Service Bus.

    Palavras-chave: SOA, ESB, OSB. ___________________

    * Trabalho patrocinado pela Petrobras.

  • iv

    Sumrio

    1 Introduo 5

    1.1 Estrutura do relatrio 6

    2 Enterprise Service Bus 6

    2.1 Responsabilidades do ESB 8

    2.2 Benefcios do ESB 11

    2.3 JBI 12

    2.4 ESBs comerciais e de cdigo aberto 13

    3 Arquitetura do Oracle Service Bus 15

    3.1 Sute de produtos do OSB 15

    3.2 Componentes da arquitetura do OSB 17

    3.3 Fluxo de mensagens via servios de proxy 20

    3.4 WSDL efetivos e WSDL gerado 25

    3.5 Web services com atributo style igual a SOAP document RPC 26

    3.6 Padres de troca de mensagens 29

    3.7 Broker de mensagens 29

    3.8 Transformao e processamento de mensagens 30

    3.9 Disponibilizao de EJB como servio 30

    3.10 Console de teste 31

    3.11 Gesto de recursos 31

    3.12 OSB e UDDI 32

    3.13 Tratamento de erros 32

    3.14 Versionamento 32

    3.15 Monitoramento 32

    3.16 Disponibilizao do OSB em servidores 32

    3.17 Outros conceitos importantes 34

    4 Anlise prtica do Oracle Service Bus 34

    4.1 Publicao do servio no OSB 34

    4.2 Alterao dos parmetros do servio sem alterar o cliente 40

    4.3 Definio de fluxos em servios de Proxy 45

    4.4 Validao de tipos de dados utilizando servio de proxy 63

    4.5 Versionamento de servios utilizando o OSB 78

    4.6 Monitoramento de servios 85

    4.7 Concluso 114

    5 Concluso 114

    6 Referncias 115

    Apndice 1 - Diferenas entre OSB e ALSB 116

    Apndice 2 - Elementos de um WSDL 117

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 5

    1 Introduo

    ESB a infra-estrutura que permite alta interoperabilidade entre sistemas distribudos via servios. Processos disponibilizados via servios distribudos em mltiplos siste-mas usando diferentes plataformas e tecnologias podem ser executados de uma ma-neira mais simples utilizando o ESB.

    O ESB um barramento de mensagens, projetado para possibilitar a implementa-o, desenvolvimento e gerenciamento de solues baseadas em SOA com o foco no empacotamento, desenvolvimento e gesto de servios distribudos [Papazoglou et al., 2007]. responsabilidade do ESB permitir que consumidores (clientes) invoquem os servios oferecidos por provedores de servios, o que envolve vrias tarefas, tais como: prover conectividade; transformao de dados; roteamento de mensagens baseado em contedo; tratar segurana; tratar confiabilidade; gerncia de servios; monitoramento e log de servios; balanceamento de carga etc. Estas tarefas devem ser consideradas para diferentes plataformas de software e hardware para diferentes middleware e pro-tocolos (Figura 1).

    Figura 1 Enterprise Service Bus [OSB, 2008a]

    Uma sute robusta de um ESB em SOA deve oferecer [OSB, 2008a]:

    Adaptadores: os quais possibilitam conectividade em aplicaes empacotadas e sistemas legados;

    Motor de consulta distribuda: que permite a criao de servios de dados para fontes de dados heterogneas;

    Motor de orquestrao de servios para tratar tanto processos de longa durao (stateful) como processos de curta durao (stateless);

    Ferramenta de desenvolvimento de aplicaes que permitem a rpida criao de aplicaes para o usurio;

    Servios de apresentao: permitem a criao de portais personalizados que agregam servios de mltiplas fontes.

    Hewitt [2009] apresenta que os padres (API Java, tecnologias XML, BPEL, WS*) publicados em conjunto por OASIS-Open, W3C, OAGI, Sun permite que as organiza-es implementem as especificaes ou recomendaes de forma que muitas partes das tecnologias que seguem estes padres sejam portveis atravs de diferentes im-

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 6

    plementaes. Por exemplo, um web service JAX-WS funcionar praticamente da mesma forma em qualquer container que implementa JAX-WS.

    Por outro lado, no existe uma especificao para ESB. No existe nenhum padro que suporta ESB e nenhuma definio precisa para ESB. Apesar dos fornecedores con-cordarem em quais caractersticas um ESB deve ter, os produtos variam muito entre si. As funcionalidades existentes em um produto podem no existir em outro ou serem realizadas de maneira completamente diferente. Existem suites, como as propostas pela Oracle, Software AG, IBM e TIBCO, que incluem uma coleo de produtos tais como ESB, motor de orquestrao, registro/repositrio de servios, motor de execuo e de desenho BPEL, Business Activity Monitoring e outras ferramentas relacionadas. As caractersticas presentes nestes produtos no so consistentes. Por exemplo, pode-se ter um ESB de um fornecedor que trata transformaes de mensagens, enquanto que o ESB de outro fornecedor delega as transformaes para o motor de orquestra-o.

    O objetivo deste relatrio apresentar as principais caractersticas que devem estar presentes em um ESB (Enterprise Service Bus) e realizar uma anlise do OSB (Oracle Service Bus) no atendimento a estas caractersticas.

    Este relatrio foi produzido pelo Projeto de Pesquisa em SOA como parte das inici-ativas dentro do contexto do Projeto de Pesquisa do Termo de Cooperao entre NP2Tec/UNIRIO e a Petrobras/TIC-E&P/GDIEP.

    1.1 Estrutura do relatrio

    Esse relatrio est organizado em 5 captulos, sendo o captulo 1 a presente introduo.

    No captulo 2, so apresentadas as principais caractersticas do Enterprise Service Bus, principal infra-estrutura que apia uma abordagem SOA.

    No captulo 3, apresentada, em detalhes, a arquitetura do Oracle Service Bus (OSB), que o ESB da Oracle.

    No captulo 4, apresentados estudos prticos do OSB.

    Nos captulos 5 e 6, so apresentadas as concluses do trabalho e referncias bibliogrficas, respectivamente.

    2 Enterprise Service Bus

    Enterprise Service Bus (ESB) a principal infra-estrutura que apia uma arquitetura orientada a servios (SOA). Hewitt [2009] aponta que muitos arquitetos vem o ESB como um conjunto de padres, e no como um produto. Outros argumentam que no necessrio adquirir um ESB, o qual pode ser substitudo pela implementao de pa-dres bsicos de roteamento como os propostos por Hohpe e Woolf [2004]. Os padres de barramento de mensagens, roteamento baseado em contedo, filtros e pipes, cone-xo ponto a ponto, normalizador, modelo de dados cannicos formam a base para os ESB modernos que, alm disso, implementam padres chave de EAI (Enterprise Ap-plication Integration). Estes padres no so simples de implementar, como os pa-dres de projeto propostos em [Gamma et al., 1994]. Logo, os problemas que existem nesta abordagem so o custo de desenvolvimento e que o resultado poder ser a repli-

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 7

    cao de muitas caractersticas j disponveis no mercado, as quais j foram testadas e automatizadas, e podem ser colocadas em execuo rapidamente.

    Um ESB capaz de conectar diferentes sistemas que se comunicam via mensagens sem forar a criao de conexes ponto-a-ponto que so visveis para aplicaes clien-te. Clientes se conectam ao barramento que serve como uma camada de mediao que protege os clientes de diferentes formatos e protocolo de mensagens usados em siste-mas backend1.

    Um ESB tipicamente independente de plataforma no sentido de que executa em diferentes sistemas operacionais e neutro em relao a servidor de aplicao e lin-guagem de programao. O barramento permite conectar aplicaes Java, aplicaes .Net, brokers que requisitam objetos, alm de sistemas legados. A Figura 2, apresenta-da em [Papazoglou et al., 2007], descreve uma arquitetura simplificada de um ESB que integra uma aplicao J2EE usando JMS (Java Message Services), uma aplicao .NET em um cliente C#, uma aplicao MQ (Message Queue) que tem interface com aplica-es legadas, aplicaes externas e fontes de dados sendo acessadas via Servios Web em um mdulo de consultas distribudas. O ESB prov uma integrao mais eficiente entre diferentes componentes de aplicaes. Isso possvel, pois o ESB posiciona os componentes atravs de uma fachada orientada a servio, utilizando, por exemplo, web services. Na Figura 2, o mdulo de consultas distribudas usado para abstrair a complexidade de fontes de dados heterogneas. Todos os pontos finais apresentados na figura provem abstrao de destino fsico e informaes de conexo. Um portal um ponto de interface com o usurio que agrega variados recursos representados co-mo servios, por exemplo, vendas, funcionalidades departamentais, recursos huma-nos, alm de portais de parceiros do negcio.

    Figura 2 Exemplo de Enterprise Service Bus [Papazoglou et al., 2007]

    Assim como Papazoglou [2007], Hewitt [2009] apresenta o papel do ESB, ilustrado na Figura 3, caracterizando que o barramento coreografa interaes via mensagens uti-lizando diferentes tecnologias, tais como motor de regras (externo ou embutido), mo-

    1 Backend qualquer sistema responsvel por um grupo especfico de dados e funcionalidades, por

    exemplo: um banco de dados em um SGBD, mainframe, SAP, grupo de servidores JEEE, uma co-nexo com outra empresa. Do ponto de vista do negcio, um backend um sistema que tem um papel especfico e mantido por um grupo especfico. [Josuttis, 2007]

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 8

    tor de orquestrao (utilizando BPEL ou XPDL), adaptadores para sistemas legados ou aplicaes empacotadas, e mecanismos de roteamento e transformao internos. Isto permite que todos os ns do barramento interajam sem ter que criar rotas especficas para cada aplicao, dessa forma reduzindo o custo de manuteno. Dado que o bar-ramento abstrai e realiza mediao entre os ns conectados, alguma flexibilidade al-canada; se for observada a necessidade de substituir uma aplicao por outra, pode-se fazer esta substituio com o mnimo de comprometimento com os clientes desta aplicao [Hewitt, 2009]. Basta manter as interfaces das conexes disponibilizadas no ESB.

    Figura 3 O papel do ESB em SOA [Hewitt, 2009]

    O ESB suporta a invocao de web services e outros ns de aplicaes preparadas para se comunicar atravs da rede. O ESB disponibiliza adaptadores para conectar com aplicaes empacotadas ou aplicaes legadas, oferecem roteamento robusto de mensagens, permitem orquestrao e transformao do contedo da mensagem, dentre outras funcionalidades.

    2.1 Responsabilidades do ESB

    As principais responsabilidades de um ESB apresentadas por Hewitt [2009] so descritas a seguir.

    2.1.1 Suporte a web services

    O ESB tem a capacidade de invocar web services baseados em WSDL2 e SOAP3, bem como servios POX4 (Plain Old XML) utilizando o protocolo http. POX correspondem a mensagens empacotadas apenas em XML, sem utilizar o protocolo SOAP.

    2 http://www.w3.org/TR/wsdl

    3 http://www.w3.org/TR/soap/

    4 http://msdn.microsoft.com/en-us/library/aa395208.aspx

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 9

    Em geral, criado um proxy WSDL para o servio que se quer expor no ESB. Os cli-entes, ao invs de se conectarem diretamente ao WSDL do servio, eles se conectam a um WSDL (proxy) exposto no barramento. Esta forma de conexo permite tratar lgica de roteamento e transformao dentro do barramento.

    Ferramentas tratam este mecanismo de conexo de forma diferente. GlassfishESB5 trata este mecanismo diretamente no BPEL, enquanto que Aqualogic Service Bus6 permite a criao de um servio de proxy.

    2.1.2 Adaptadores

    Adaptadores so utilizados para conectar aplicaes que no suportam a interface SOAP ou XML, tais como, aplicaes empacotadas (SAP, PeopleSoft, SAP R/3, Siebel), banco de dados, ferramentas ERP, interfaces via arquivo.

    Adaptadores podem ser utilizados tanto no caso da aplicao no fornecer integra-o via XML ou SOAP, como tambm nos casos em que se deseja um maior ganho de desempenho evitando o custo em tempo de execuo de traduzir para/de XML, se o sistema suporta diretamente serializao de objetos.

    Em muitos casos adaptadores so fornecidos como uma funcionalidade que deve ser paga a parte, alm do ESB.

    2.1.3 Invocao de servios

    Como uma caracterstica padro, ESB suporta chamadas sncronas e assncronas de servios, e algumas vezes callback. Um servio pode ser mapeado em outro servio. Alguns ESBs permitem negociao atravs de WS-MetadataExchange7, tratando segu-rana, por exemplo.

    A forma que servios se comunicam chamada de padres de troca de mensagens (ou MEP Message Exchange Pattern). Um MEP define a sequncia de mensagens em uma chamada de servio ou operao do servio, especificando a ordem, a direo e a cardinalidade das mensagens [Josuttis, 2007]. Existem diferentes tipos de MEP:

    One-way: A operao recebe uma mensagem, mas no ir retornar uma res-posta.

    Request-response: A operao recebe uma mensagem e ir retornar uma res-posta.

    Solicit-response: A operao envia uma requisio e ir esperar uma resposta.

    Notification: A operao envia uma mensagem, mas no ir esperar uma res-posta.

    O ESB deve apoiar estes padres de troca de mensagens. Por exemplo, no padro Request-Response, apresentado na Figura 4, o consumidor envia mensagem para o ESB que faz o roteamento para o provedor do servio. Aps o processar a requisio, o provedor envia a resposta para o ESB que repassa a resposta para o consumidor do servio. O consumidor fica parado esperando a resposta, da mesma forma que seria na invocao de um mtodo de um componente de forma sncrona. O ESB deve ter a ca-

    5 https://open-esb.dev.java.net/Downloads.html#

    6 http://download.oracle.com/docs/cd/E13171_01/alsb/docs20/index.html

    7http://specs.xmlsoap.org/ws/2004/09/mex/WS-MetadataExchange.pdf

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 10

    pacidade de encontrar o provedor do servio, bem como fazer o roteamento da respos-ta para o consumidor que invocou o servio. Exemplos de MEPs e responsabilidades do ESB so apresentados em [Josuttis, 2007].

    Figura 4 Exemplo de MEP Request-Response intermediado pelo ESB

    2.1.4 Mediao e independncia de protocolo

    Muitos barramentos permitem que diferentes protocolos de comunicao sejam utili-zados durante o caminho de uma mensagem, incluindo no apenas HTTP e JMS, mas tambm HTTPS, SMTP, XMPP, FTP dentre outros. Muitos barramentos tm a capaci-dade de conectar diferentes formatos de dados, por exemplo, Eletronic Data Inter-change (EDI), JDBC, COBOL copy books, e arquivos flat.

    2.1.5 Roteamento

    Barramentos disponibilizam diferentes formas de realizar roteamento de mensagens, por exemplo, a partir do contedo da mensagem (usando XPath para navegar na mensagem), roteamento baseado em um servio de regras e roteamento baseado em polticas.

    Alguns barramentos permitem o controle de fila de mensagens a fim de que uma mensagem, quando enviada, seja persistida e no seja perdida. Este o princpio dos mediadores orientados a mensagens (ou MOM Message Oriented Middleware), tais como MQ e JMS [Josuttis, 2007].

    2.1.6 Transformao

    Dados representados em XML podem ser transformados utilizando XSLT e consulta-dos utilizando XQuery e XPath. Estas tecnologias permitem preparar o dado para ser trafegado entre sistemas/servios. Se um modelo cannico est sendo utilizado, esta uma caracterstica importante de existir no ESB.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 11

    2.1.7 Orquestrao

    Muitos ESB realizam orquestrao atravs de um servio de proxy, o qual coordena a execuo de mltiplos servios. Alguns barramentos delegam a orquestrao para mo-tores BPEL ou XPDL.

    2.1.8 Segurana

    O barramento de servios prov funcionalidades para garantir o uso de polticas de segurana em conjunto com pontos de garantia de polticas, SSL e SAML8 (Security Assertion Markup Language).

    2.1.9 Gerncia de servios

    Servios executando no ESB podem ser monitorados, auditados, mantidos e reconfigu-rados. No ltimo caso, mudanas no processo podem ser feitas sem necessidade de reescrever servios ou aplicaes subjacentes, dependendo das modificaes necess-rias e dos servios existentes [Josuttis, 2007].

    2.1.10 Modelo cannico

    Dado que o ESB prov uma camada de abstrao, clientes podem se comunicar com o barramento, e no saberem a localizao do endpoint do servio com o qual realmente desejam se comunicar. Uma vez que a mensagem XML recebida no barramento, co-mo o ponto de integrao central, o barramento pode realizar as transformaes neces-srias para garantir, por exemplo, que um sistema legado de CRM integre facilmente com um novo sistema de uma empresa que foi adquirida. Esta transformao de da-dos deve ser feita a partir de um modelo que represente os dados de forma cannica, ou seja, como os dados devem ser estruturados conceitualmente de forma nica em relao s diferentes representaes existentes na organizao. Dessa forma, o barra-mento pode ser configurado para que sejam feitas transformaes das mensagens de solicitao (provenientes dos consumidores) para o modelo cannico, bem como a transformao da mensagem de resposta recebida proveniente dos provedores para o modelo cannico. Portanto, no barramento trafegam apenas informaes segundo o modelo cannico. Caso novos consumidores queiram se conectar ao provedor via bar-ramento, basta que seja implementada a transformao da mensagem do consumidor para o modelo cannico que ele conseguir se comunicar com o provedor. Este um exemplo de onde um modelo de dados cannico ganha real importncia, dado que o sistema cliente pode continuar se comunicando na forma que deseja, e o barramento serve para traduzir a mensagem para o formato esperado.

    2.2 Benefcios do ESB

    Hewitt [2009] aponta os seguintes benefcios em utilizar um ESB:

    Reduo do tempo de integrao de aplicaes novas e aplicaes existentes;

    Aumento de flexibilidade porque a dependncia entre servios reduzida;

    Gesto simultnea e centralizada do catlogo de servios, enquanto que os prprios servios executam de forma distribuda;

    8 http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 12

    A gesto centralizada permite coletar mtricas sobre servios, permitindo mo-nitorar SLA (Service Level Agreements), gerar relatrios para TI e negcio;

    Encoraja o uso de interfaces padro da indstria;

    Maior agilidade e tempo de resposta para mudanas;

    Obteno de informao atualizada e precisa sobre recursos da organizao via centralizao lgica da gesto de dados.

    2.3 JBI

    Hewitt [2009] apresenta que a especificao JBI (Java Business Integration), lanada pela SUN em 2005, foi uma proposta em direo a um ESB independente de fornece-dor. A arquitetura JBI suporta muito baixo acoplamento entre componentes. JBI define um metacontainer. Este metacontainer no executa nada por ele mesmo. Ele serve como um ponto de gesto de ciclo de vida para uma coleo de engines que so capazes de executar um tipo especfico de integrao, por exemplo, BPEL para orquestrao, co-nectores JDBC, conectores para arquivos etc. A idia que algum implementa uma especificao JBI e ento eles (ou outros fornecedores) podem implementar engines que so plugveis dentro do container.

    2.3.1 Arquitetura JBI

    JBI define o framework, as interfaces e o ciclo de vida abstrato que permite que compo-nentes conectados executem juntos e que sejam disponibilizados componentes escritos por desenvolvedores dentro deste ambiente. Para realizar este objetivo, JBI define qua-tro elementos principais (Figura 5): engine de servios (ou Service Engines SE), com-ponentes de ligao (ou Biding Component BC), roteador de mensagens normaliza-das (Normalized Message Router NMR) e ambiente de execuo (runtime eviron-ment).

    Figura 5 Arquitetura JBI em alto nvel, como demonstrado pela especificao 1.0 [He-witt, 2009]

    Engine de servios permitem conectar lgica, transformaes e processamento do negcio, por exemplo, SE para BPEL, SE para XLT. SE para SQL, agendamento etc.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 13

    Componentes de ligao oferecem independncia de protocolo. Eles provem pro-tocolos de transporte (e outro protocolos baseado em comunicao tais como protocolo para se comunicar com arquivos) para serem utilizados por servios externos. SE e BC criam um canal para o NMR. Eles agem como um proxy para servios publicados no componente de execuo JBI que precisam de um protocolo especfico. Existem BC pa-ra arquivo, LDAP, JMS, HTTP, JDBC, CICS, DCOM, CORBA, XMPP e outros.

    O roteador de mensagens normalizadas media a troca de mensagens entre SEs e BCs dentro de um ambiente. O roteamento da mensagem determinado pelo NMR, e a mensagem normalizada traduzida no formato para o BC especfico que est sendo invocado. SEs e BCs se comunicam com o NMR via um pipe chamado de canal de en-trega (delivery channel). Uma mensagem normalizada composta de duas partes: a mensagem XML abstrata e os metadados da mensagem, tambm chamado de dados de contexto da mensagem.

    O ambiente de execuo JBI engloba SE, BC e NMR, alm de um framework permi-tindo disponibilizao, gesto, monitoramento e instalao.

    2.3.2 Como JBI tratado na indstria

    Vrios fornecedores participaram da especificao JBI, tais como, membros da Apache Software Foundation, Borland, Fujitsu, JBoss, IONA, Oracle, SAP AG etc. Isto sugeri-ria que JBI o principal conceito para a implementao de um Enterprise Service Bus. No entanto, poucos fornecedores suportam JBI, devido a vrias razes: muitos forne-cedores perceberam que poderiam ter suas ferramentas SOA construdas pelo empa-cotamento de solues EAI previamente desenvolvidas; eles tinham suas prprias de-finies de um ESB; alm disso, a idia de suportar um SE ou um BC como um objeto capaz de conectar de um JBI para outro no estava completamente clara. Alm disso, existe uma limitao em JBI de que todos os contratos dos servios sejam especificados em WSDL. Isto no funciona para contratos WADL, que podem se tornar populares para POX/HTTP, ou Java puro. Outro problema levantado o container JBI especifi-car que a mensagem deve ser no formato XML, o que traz carga desnecessria para mensagens que no so baseadas em XML.

    Dessa forma, fornecedores trabalharam no desenvolvimento de suas prprias SEs e BCs para HTTP, FPT, JMS, arquivo, BPEL etc. Apesar disto, existem boas implementa-es de JBI. No entanto, estas implementaes no so os ESBs mais populares.

    JBI algo importante de conhecer. Ele pode ser uma boa estratgia para iniciar a construo de um SOA com ferramentas de cdigo fonte aberto durante o perodo de investigao e ento se formar para obter um ESB mais robusto, estvel e com maior desempenho.

    2.4 ESBs comerciais e de cdigo aberto

    Hewitt [2009] apresenta um estudo dos principais ESB dos fornecedores de mercado e aponta como lderes de mercado os seguintes ESB: IBM WebSphere ESB e DataPower; Sonic ESB; TIBCO BusinessWorks e ActiveMatrix Grid; Cape Clear. J como ESBs de cdigo aberto, ele destaca o OpenESB da Sun, Mule ESB da MuleSource, e Apache ServiceMix. Devido ao interesse do projeto na avaliao das ferramentas da Ora-cle/BEA, algumas das caractersticas do Oracle Service Bus so resumidas a seguir.

    No final de 2007, BEA lanou o AquaLogic Service Bus(ALSB). Aps a compra da BEA pela Oracle, nos meados de 2008, o barramento foi rebatizado como OSB (Oracle

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 14

    Service Bus) 10.3. O produto anterior da Oracle, chamado de Oracle Enterprise Service Bus, ser mantido, mas no ser mais promovido. Dentre as caractersticas do OSB, destacam-se:

    Ferramenta para desenvolvimento baseada no Eclipse, chamada Oracle Ser-vice Bus WorkSpace Studio;

    Tratamento de falhas na chamada de servios (tanto roteamento como poo-ling de mensagens);

    Otimizao de transporte de mensagens: permite que o container trate EJBs remotos que esto posicionados na mesma JVM com os consumidores invo-cando os servios como se fossem EJBs locais. Esta otimizao de desempe-nho evita chamadas RMI, as quais so mais custosas.

    Suporte a WS-ReliableMessaging: permite tanto o reenvio de mensagens das quais no se sabe se a resposta foi enviada, devido a falhas no meio de transporte, como tambm reenvio de mensagens aps falha do cliente ou do servidor.

    Os servios so divididos em dois tipos: servios de proxy e servios de ne-gcio. Um servio de proxy exposto ao cliente e serve como um wrapper para a implementao do servio, a qual prov transparncia de localizao e um oportunidade para injetar vrias funcionalidades como segurana, transformao etc. Um servio de negcio um conjunto de metadados para um servio que est externo ao barramento.

    SOAP usado como formato de mensagem cannica interno ao barramento, logo, mesmo que uma mensagem no SOAP enviada ao barramento, ela transformada em uma mensagem SOAP a fim de que seja possvel utilizar XQuery e XPath de forma padronizada atravs da interface.

    OSB permite definir SLA (Service Level Agreement) e aplic-los/monitor-los em tempo de execuo nos fluxos de mensagens que atravessam o barra-mento. Isto feito atravs de regras de alerta que indicam quando o barra-mento deve sinalizar por uma violao de uma SLA. O barramento j vem com um conjunto de alertas previamente cadastrados. Os alertas podem ser configurados no s para indicar falhas como tambm para indicar quando o sistema est comeando a alcanar limites de desempenho.

    Criao de relatrios a partir da situao das SLAs do barramento permitin-do realizar pesquisas sobre o mesmo.

    Permite segurana ao nvel de mensagem e de transporte. O barramento disponibilizado com um conjunto arquivos XML WS-Policy que facilita a aplicao de polticas de segurana nos servios

    Suporta as especificaes: WS-Policy, WS-RealiableMessaging, XACML, WS-Addressing, SCA, XPDL, SAML, PKI.

    O OSB no implementa JBI, BPEL4People ou WS-HumanTask. Se o objetivo for cri-ar processos de negcio que envolva automao de servios bem como tarefas huma-nas, ento melhor olhar a sute BPM.

    Um estudo das funcionalidades do ALSB apresentada em [Souza et al., 2009].

    Alm do Oracle Service Bus, Hewitt [2009] apresenta as principais caractersticas do Software AG/webMethods ESB, TIBCO ActiveMatrix e BusinessWorks.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 15

    3 Arquitetura do Oracle Service Bus

    O Oracle Service Bus (OSB) [OSB, 2009a] corresponde nova verso desenvolvida pela Oracle da ferramenta ALSB (AquaLogic Service Bus) que pertencia BEA e que foi descontinuada aps a compra da BEA pela Oracle. Maiores detalhes sobre o ALSB po-dem ser encontrados em [Souza et al., 2009].

    A instalao do OSB pode ser baixada a partir do link http://download.oracle.com/docs/cd/E13196_01/platform/suppconfigs/config_alsb.html, onde se encontram tambm os links para download das verses anteriores do ALSB.

    3.1 Sute de produtos do OSB

    A Oracle possui uma sute de produtos que pode ser compartilhada via Oracle Service Bus [OSB, 2008a] (Figura 6):

    Oracle User Interaction: permite a criao de solues contemplando infraes-trutura de servios, incluindo portais e aplicaes compostas.

    Oracle Business Process Management: inclui automatizao, execuo e mo-nitoramento do ciclo de vida de processos de negcio como um todo.

    Oracle Data Service Integrator: permite a criao de servios de dados que disponibilizam vises unificadas e em tempo real dos dados em diferentes fontes de dados espalhadas pela organizao

    Figura 6 Arquitetura de produtos compartilhados via OSB [OSB, 2008a]

    A Figura 7 apresenta os produtos da Oracle que tm relevncia em uma Arquitetu-ra Orientada a Servios. Dentre estes produtos destacam-se os produtos para desen-

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 16

    volvimento de portais (Oracle WebLogic Portal e Oracle WebCenter Interaction), para a camada de processos (Oracle WebLogic Integrator e Oracle Business Process Mana-gement), servios de segurana (Oracle Enterprise Security), servios de dados (Oracle Data Services Platform) e registro de servios (Oracle Service Registry).

    Figura 7 Produtos da Oracle separados em camadas

    Segundo [OSB, 2008a], o Oracle Service Bus atende ao estgio de execuo, em um ciclo de vida de desenvolvimento de servios, tratando as seguintes atividades:

    Publicao e proviso do servio;

    Gesto e monitoramento do fluxo de mensagens entre consumidores e prove-dores;

    Separao de usurios e processos das mudanas dos servios;

    Abstrao de servios e remoo de lgica de integrao;

    Transformaes, validao e roteamento;

    Visibilidade e gesto operacional do servio.

    Analisando a proposta de ciclo de vida de servios de Gu e Lago [2007], apresenta-do na Figura 8, podemos notar a aderncia das atividades propostas de serem realiza-das no OSB em relao a este ciclo de vida. Alm disso, o barramento tambm pode ser utilizado na fase de projeto em relao aos seguintes aspectos:

    Pesquisa por servios, utilizando o console do ESB;

    Implementao de servios de proxy;

    Implementaes de orquestraes de servios utilizando os fluxos definidos nos servios de proxy;

    Implementaes de transformaes para tornar a comunicao entre consumi-dor-provedor menos dependente;

    Definies de roteamento de servios;

    Realizao de testes de servios e orquestraes atravs do console de teste.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 17

    Provedorde servio

    Broker deservio

    Provedorde aplicao

    (Consumidorde servios)

    Mapeamentode mercado

    Engenhariade requisitos

    Modelagemde negcio

    Projeto deservio

    Desenvolvimentode servio

    Teste deservio

    Engenhariade requisitos

    Projeto daaplicao

    Implementaoda aplicao

    Teste demodulo

    Publicaode servio

    Provisode servio

    Monitoraode servio

    Gerenciamentode servio

    Descobertade servio

    Orquestrao/composio

    de servio

    Negociaode servio

    Invocaode servio

    Teste daaplicao

    Monitoraode servio

    Manutenoda aplicao

    Seleode registro

    Atualizaode registro

    Manutenode registro

    Projeto Execuo Mudana

    Figura 8 Ciclo de vida para servios [Gu e Lago, 2007]

    As principais caractersticas do OSB so:

    Integrao de servios: integrao de endpoints, broker de mensagens e medi-ao e exposio de servios para reuso.

    Segurana de servios: autenticao e autorizao, validao da identidade do usurio.

    Composio de servios: configurao da lgica de roteamento da mensa-gem, transformao de mensagens, configurao, validao e registro de servios.

    Gesto de servios: monitoramento e gesto das atividades e disponibilida-de dos servios.

    3.2 Componentes da arquitetura do OSB

    A arquitetura do OSB pode ser dividida em 4 camadas:

    Camada de transporte: permite integrar servios desenvolvidos utilizando diferentes protocolos. Os protocolos de comunicao que podem ser utiliza-dos no OSB so:

    o HTTP/SOAP

    o WS-I, WS-Security, WS-Policy, WS-Addressing

    o SOAP v1.1 e v1.2: o OSB aceita mensagens de entrada em SOAP v1.1 e ele transforma a mensagem para SOAP v1.2 se for necessrio, por exemplo, para se conectar com um servio que se comunica via SO-AP v1.2.

    o EJB/RMI no WebSphere

    o Permite a criao e a customizao de protocolos especficos da or-ganizao, bem como usar protocolos nativos do Oracle, por exem-plo, Oracle Data Service Integrator.

    Camada de segurana (Figura 9): permite os seguintes nveis de segurana:

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 18

    o Segurana no transporte da mensagem: SSL/Basic Auth

    o Segurana na mensagem: WS-Policy/WS-Security, SAML, UserID/Password, X509, Signing & Encryption, e Custom security credentials

    o Segurana de console: suporta Web Single-Sign-On e acesso baseado em perfis

    o Polticas: WS-Security e WS-Policy

    Figura 9 Camada de segurana

    Camada para composio de servios (Figura 10): esta camada inclui a mo-delagem do fluxo de servios, alm de atividades de descoberta de servios em UDDI, validao, transformao, testes da orquestrao, alm da especi-ficao de service callout. Service callout corresponde a uma ao que invoca um determinado servio de acordo com o contedo da mensagem.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 19

    Figura 10 Camada de composio

    Camada para monitoramento de servios (Figura 11): permite realizar go-vernana sobre as mensagens que trafegam pelo barramento disponibili-zando: dashboard, monitoramento, definio de alertas, relatrios, verifica-o de SLA etc.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 20

    Figura 11 Camada de gesto

    3.3 Fluxo de mensagens via servios de proxy

    O OSB um intermedirio que processa mensagens de entrada para requisio de ser-vios, determina a lgica de roteamento, e transforma estas mensagens para compati-bilidade com outros consumidores de servios. Ele recebe mensagens atravs de pro-tocolos de transporte, tais como HTTP(S), JMS, Arquivos e FTP, e envia mensagens atravs do mesmo protocolo ou de protocolos diferentes. A mensagem de resposta do servio segue um caminho inverso. O processamento de mensagens pelo OSB direci-onado a metadados, especificados na definio do fluxo de mensagens de um servio de proxy. Servio de proxy o conceito fundamental na arquitetura do OSB. Eles cor-respondem interface que consumidores utilizam para se comunicar com servios de back-end gerenciados.

    A Figura 12 ilustra em alto nvel o fluxo de mensagens atravs do OSB, a partir de um endpoint de entrada (para um servio de proxy) para um endpoint de sada (URL de outro servio um servio de negcio ou um servio de proxy).

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 21

    Figura 12 Processamento de mensagens

    Trs camadas esto envolvidas no fluxo de mensagens (Figura 13):

    Camada de transporte (transport layer):

    o Recebe o stream de dados da requisio do cliente (ou consumidor);

    o Envia o stream de dados da requisio para o provedor;

    o Recebe o stream de dados da resposta do provedor;

    o Envia o stream de dados da resposta para o cliente (ou consumidor).

    Camada de ligao (binding layer):

    o Desserializa e serializa mensagens, quando necessrio;

    o Trata questes de segurana da mensagem;

    o Manipula mensagens para iniciar fluxo de mensagens (requisio e resposta)

    Servio de proxy (proxy service)

    o Servios de proxy so definies de web services intermedirios que o OSB implementa localmente

    o O OSB permite a definio de servios de proxy pela definio de sua interface via WSDL (Web Services Description Language) e o ti-po de transporte que ele utiliza.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 22

    o A lgica de processamento da mensagem especificada na definio do fluxo da mensagem quando um servio de proxy definido.

    o O contexto de um servio de proxy um conjunto de variveis XML que so compartilhadas ao longo do fluxo do servio.

    Variveis podem conter informaes a respeito de:

    Mensagem

    Cabealhos de transporte

    Princpios de segurana

    Metadados para o servio de proxy

    Metadados para roteamento primrio

    Servios invocados pelo servio de proxy

    O contexto pode ser lido ou modificado por expresses XQuery e atualizado por transformaes e aes de atualiza-o

    As variveis principais do context so: $header (SOAP), $bo-dy (SOAP) e $attachments (MIME - Multipurpose Internet Mail Extensions)

    O contexto d a impresso de que todas as mensagens so SOAP. Mensagens no-SOAP so traduzidas para este para-digma.

    Como um servio de proxy pode rotear mensagens para ml-tiplos servios de negcio, um servio de proxy pode ser con-figurado com uma interface que independente do servio de negcio ao qual ele se comunica.

    Figura 13 Camadas do fluxo de mensagens

    A maior parte da lgica de processamento em um fluxo de mensagem tratada em pipelines. Um pipeline uma sequncia nomeada de estgios representando um cami-nho de processamento em uma nica direo sem ramificaes. Um estgio um pas-so de processamento configurado pelo usurio. Mensagens de entrada para pipelines so acompanhadas de um conjunto de variveis de contexto da mensagem que con-tm contedos da mensagem. Elas podem ser acessadas ou modificadas por aes dentro do estgio do pipeline.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 23

    Pipelines pertencem a uma das seguintes categorias:

    Pipeline de requisio processa o caminho de requisio do fluxo da mensa-gem;

    Pipeline de resposta processa o caminho de resposta do fluxo de mensagem;

    Pipeline de erro trata erros para estgios e ns em um fluxo de mensagem to bem como erros no nvel do fluxo da mensagem (servio).

    Os seguintes elementos so utilizados para construir um fluxo de mensagens:

    N inicial: Toda mensagem comea com um n inicial. Todas as mensagens en-tram no fluxo de mensagem atravs do n incial, e todas as mensagens de res-postas so retornada para o cliente atravs do n inicial. No existe nada para ser configurado no n inicial.

    Par pipeline: um n par pipeline combina um pipeline de requisio e um pipeline de resposa em elemento de alto nvel. Um n par pipeline pode ter apenas um descendente direto no fluxo da mensagem. Durante processamento de requisi-o, apenas o pipeline de requisio executado quando o OSB procesa o n par pipeline. O caminho de execuo o inverso quando o OSB processa o pipeline de resposta. Consistem de sequncia de estgios que especificam aes a serem realizadas durante o processamento de request e response.

    Estgios: pipelines de requisio, pipelines de resposta, e tratadores de erros po-dem conter estgios, onde podem ser configuradas aes para manipular men-sagens passando atravs do pipeline.

    Tratamento de erro: Um tratamento de erro pode ser includo em qualquer n ou estgio para tratar erros potenciais naquele local.

    N de diviso: permite a diviso do fluxo de acordo com partes da mensagem, contexto da mensagem, ou baseado na operao invocada. Um nico caminho escolhido dentre diferentes caminhos.

    N de roteamento: um n de roteamento realiza comunicao de requisi-o/resposta com outro servio. Ele representa o limite entre o processamento da requisio e resposta para o servio de proxy. Quando o n de roteamento dispara uma mensagem de requisio, o processamento de requisio consi-derado completo. Quando o n recebe uma mensagem de resposta, o proces-samento da resposta comea. O n de roteamento suporta roteamento condici-onal bem como transformaes de requisio e resposta. Dado que o n de ro-teamento representa o limite entre o processamento da requisio e resposta, ele no pode ter nenhum descendente no fluxo da mensagem. Logo, ele usa-do para definir o destino da mensagem.

    Aes: Aes proveem instrues para tratamento de mensagens em estgios de pipelines, estgios de tratamento de erros e ns de roteamento. Aes podem ser dos seguintes tipos. Maiores detalhes so apresentados em [OSB, 2009e].

    o Aes de comunicao: controlam o fluxo de mensagens e podem ser caracterizadas como de publicao dinmica, de publicao, tabela de publicao, opes de roteamento, callout para servios, cabealhos de transporte.

    o Aes de controle de fluxo: implementam roteamento condicional, looping condicional e tratamento de erro. Podem ser utilizadas para no-

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 24

    tificar o requisitante de sucesso ou para pular (skip) o resto das aes em um estgio. Aes de controle de fluxo podem ser do tipo for each, if... then..., levantamento de erro, resposta, resume, skip.

    o Aes de processamento de mensagens: aes nesta categoria proces-sam o fluxo das mensagens, tais como: assign, delete, insert, Java callout, transformao MLF, rename, replace, validate. Em particular, a ao vali-date valida elementos selecionados por uma expresso XPath em relao a um elemento de um XML Schema ou um recurso WSDL. Podem ser validados apenas elementos de variveis globais; OSB no suporta vali-dao de elementos locais.

    o Aes de relatrio: so usadas para registrar ou reportar (log ou report) erros e alertas gerados, se necessrio em um fluxo de mensagem dentro de um estgio. Elas podem ser dos tipos: alert, log e report. Diferente de alertas de SLA, notificaes geradas por aes de alerta so ligadas mais ao negcio, ou erros de report, e no para monitoramento do sistema. Destinos de alertas devem ser configurados tendo isto em mente.

    A Figura 14 apresenta um exemplo de fluxo de mensagem. Nesta figura tm-se um pipeline de requisio em um nvel de servio nico que ramifica em pipelines operacio-nais (pode-se configurar um pipeline padro para uma operao, mas no mximo um pipeline). A determinao da operao feita via critrios do usurio.

    Processamento da requisio:

    o O processamento da requisio comea no n inicial.

    o Em seguida, o par pipeline executa apenas o processamento da requisi-o.

    o O n de deciso (n branch), avalia a tabela de deciso para o fluxo que foi avaliado como verdadeiro.

    o O n de roteamento realiza o roteamento juntamente com qualquer transformao da mensagem de requisio que tenha sido definida.

    No fluxo de mensagem, independente se o roteamento exista ou no, o n de roteamento representa a transio do processamen-to de uma requisio para o processamento da resposta. No n de roteamento, a direo do fluxo de mensagem invertida. Se um caminho de requisio no tem n de roteamento, o proces-samento da respostas iniciado no sentido inverso sem esperar por qualquer resposta.

    Processamento da resposta:

    o O n de roteamento executa qualquer transformao da resposta que tenha sido definida;

    o O n de diviso pula qualquer n de diviso e continua com o n que precede a diviso;

    o O par pipeline executa o pipeline da resposta;

    o O n inicial envia a resposta de volta para o cliente.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 25

    Figura 14 Exemplo de fluxo de mensagem

    Transformaes podem ser definidas antes de a mensagem ser enviada para o end-point selecionado ou aps a resposta ser recebida [OSB, 2009c].

    Processamento para tratar questes de segurana (WS-Security) e autorizao po-dem ser utilizados ao invocar servio com WS-Policy [OSB, 2009d].

    3.4 WSDL efetivos e WSDL gerado

    Um documento WSDL descreve um servio, sua localizao, suas operaes, e o modo no qual clientes podem se comunicar com ele.

    No OSB, novos servios de proxy e novos servios de negcio podem ser baseados em WSDL (chamados recursos WSDL) e ento sobrescrever ou adicionar proprieda-des de configurao.

    Para servios baseados em WSDL, OSB usa WSDL efetivos ao invs dos arquivos .wsdl originais. Um WSDL efetivo representa propriedades de um WSDL de servio considerando as configuraes do OSB.

    Ao criar um servio baseado em um WSDL, o OSB cria um WSDL efetivo. WSDL efetivos podem ser criados a partir dos seguintes tipos de servios de negcio ou de

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 26

    proxy: servios SOAP criados a partir de WSDL e servios XML criados a partir de WSDL.

    Outro tipo de WSDL importante a ser considerado o WSDL gerado, o qual um WSDL efetivo que o OSB gera para servios de tipo de transporte que no foram cria-dos a partir de um recurso WSDL, mas que podem ser descritos usando WSDL. Por exemplo, um WSDL gerado a partir de um servio baseado em EJB um WSDL gera-do.

    O OSB permite exportar o WSDL efetivo. A exportao gera um arquivo .zip que contm o WSDL efetivo juntamente com suas dependncias, incluindo esquemas e WS-Policies. OSB avalia as dependncias, e a localizao apropriada adicionada no atributo location do elemento import do WSDL. No existe elemento import para WS-Policies. Neste caso, as referncias para as polticas so retidas e o recurso da poltica includo na exportao. WSDL gerado no pode ser exportado.

    Maiores detalhes a respeito das caractersticas que se aplicam a WSDL efetivos ge-rados para servios de proxy, WSDL efetivos gerados para servios de negcio sem tipo de transporte, WSDL efetivos gerados para servios de negcio com tipo de transporte e WSDL efetivos gerados em domnios de cluster, alm de servios basea-dos em uma porta, servios baseados em binding so apresentados em [OSB, 2009e].

    3.5 Web services com atributo style igual a SOAP document RPC

    Um web service empacotado como documento descrito em um arquivo WSDL como um servio com estilo (Style) Document. Como padro, uma operao de um web ser-vice orientado a documento pode ter apenas um parmetro ou tipo de mensagem, ti-picamente um documento XML. Isto significa que os mtodos que implementam as operaes devem ter apenas um nico parmetro. Entretanto, operaes de web servi-ces empacotados em documento podem ter qualquer nmero de parmetros, embora os valores dos parmetros sejam empacotados em um nico tipo de dados complexo na mensagem SOAP. Este tipo de dados complexo empacotado ser descrito no WSDL como um nico documento para a operao. A Figura 15 apresenta um exemplo de WSDL de servio orientado a documento, enquanto que a Figura 16 e a Figura 17 apresentam o corpo ($Body) das mensagens de requisio e respostas do servio, res-pectivamente. Na Figura 16, soap-env namespace SOAP 1.1 prfinido e req o na-mespace do elemento PurchaseOrg (http://example.com/lookup/docs).

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 27

    Figura 15 Exemplo de WSDL de servio orientado a documento

    Figura 16 Exemplo de mensagem SOAP de requisio do servio orientado a docu-mento

    Figura 17 Exemplo de mensagem SOAP de resposta do servio orientado a documen-to

    true

    Oracle

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 28

    No caso do estilo de binding ser RPC, a operao do servio recebe um conjunto de parmetros na requisio e retorna como resposta um conjunto de parmetros. A Fi-gura 18 apresenta um exemplo de WSDL de servio com estilo RPC, enquanto que a Figura 19 e Figura 20 apresentam o corpo ($Body) das mensagens de requisio e res-postas do servio, respectivamente. O elemento soap-env corresponde ao namespace predefinido em SOAP 1.1, ns o namespace da operao (http://example.com/lookup/service) e req o namespace do elemento PurchaseOrg (http://example.com/lookup/docs).

    Figura 18 Exemplo de WSDL de servio com estilo RPC

    Oracle

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 29

    Figura 19 Exemplo de mensagem SOAP de requisio do servio com estilo RPC

    Figura 20 Exemplo de mensagem SOAP de resposta do servio com estilo RPC

    3.6 Padres de troca de mensagens

    O OSB permite os seguintes tipos de comunicao de mensagens:

    Requisio/resposta sncrona: cliente envia a requisio e fica esperando a resposta do provedor.

    Publicao um-para-um assncrona: um cliente se publica como consumidor de um servio, e o servio envia a sua resposta para o cliente publicado aps a execuo da operao para a qual o cliente foi publicado.

    Publicao um-para-muitos assncrona: vrios clientes se publicam como consumidores de um servio, e o servio envia a sua resposta para os clien-tes publicados aps a execuo da operao para o qual os consumidores fo-ram publicados.

    Requisio/resposta assncrona (ponte de sncrono para assncrono).

    o Cliente sncrono envia requisies para provedor assncrono, e clien-te fica aguardando a resposta

    o OSB prov uma fila JMS para a mensagem de requisio e configura outra fila para a mensagem de resposta, com um valor de timeout pa-ra a resposta. As filas so utilizadas para simular troca de mensagens sncrona.

    o Para o cliente a invocao do servio sncrona

    3.7 Broker de mensagens

    O OSB tem como um dos seus componentes principais o broker de mensagem. Ele permite o roteamento de mensagens baseado em contedo e transformaes de dados, incluindo as seguintes caractersticas operacionais:

    Polticas baseadas em XQueries ou callouts para servios externos para rote-amento de mensagens.

    o A ao de callout de servio usada dentro de um estgio de rotea-mento de fluxo de servio para chamar um servio de destino para realizar alguma ao na mensagem. A funcionalidade de Service Callout do OSB suporta, por exemplo, a codificao RPC e substitui-o de URL e extensvel pelo uso de Java Callouts e POJOs. Maio-res detalhes sobre Service Callout podem ser encontrados em [OSB, 2009b].

    true

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 30

    Tabela de roteamento fora do servio de proxy, a qual permite a modificao das rotas sem ter que re-configurar definies de servio de proxy;

    Roteamento baseado em identidade: permite classificar clientes em um gru-po de usurios definido e aplicar polticas de roteamento para estes grupos.

    3.8 Transformao e processamento de mensagens

    O Oracle Service Bus suporta as seguintes funcionalidades para transformao ou pro-cessamento de mensagens:

    Validao de mensagens de entrada de acordo com schemas;

    Seleo de um ou mais servios, baseado no contedo ou no cabealho da mensagem;

    Transformao de mensagens baseado no servio de destino;

    Transformao de mensagens baseado em XQuery ou XSLT;

    Suporta transformaes em mensagens nos formatos XML e MFL. MFL (Message Format Language) um formato de mensagem proprietrio da Oracle/BEA. Linguagem usada para descrever como transformar dados bi-nrios em XML. A ferramenta Oracle Format Builder a ferramenta para criar mensagens no formato MFL.

    Suporta chamadas de Web services para obter dados adicionais para trans-formao (por exemplo, cdigo do pas, registros de cliente etc.)

    O OSB possui um a funcionalidade chamada de Database Lookup atravs de uma funcionalidade do motor de XQuery do OSB. O Database Lookup corresponde execu-o de leitura em base de dados a partir de servios de proxy atravs do uso da funo execute-sql para realizar uma chamada JDBC a um banco de dados para realizar uma leitura simples do banco de dados. Dessa forma, no h necessidade de escrever um EJB customizado ou cdigo Java customizado e sem a necessidade do uso de um com-ponente separado como Oracle Data Service Integrator. O Database Lookup deve ser uti-lizado para inserir dados na mensagem, para ler dados para decises de roteamento e para customizar comportamento do servio de proxy.

    OSB prov transporte otimizado para comunicao invocando servios no Oracle Data Service Integrator. Isto permite uma abordagem mais eficiente e flexvel para acessar servios de dados do que exp-los como web services via WebLogic Workshop ou Java Web Services (JWS). Alm disso, esta ferramenta suporta segurana e propa-gao de identidade.

    Duas ferramentas para transformao de dados so instaladas com o OSB e Workshop for WebLogic, o Oracle XQuery Mapper como plug-in para o Eclipse 3.1 e Format Builder. O Eclipse 3.1 e o Format Builder so suportados apenas nas platafor-mas Windows.

    3.9 Disponibilizao de EJB como servio

    Um EJB pode ser exposto como um web service, sem a necessidade de ferramentas ou modificaes de cdigo legado no servidor de aplicao onde o EJB est disponibiliza-do. O mecanismo de transporte EJB tem as seguintes capacidades:

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 31

    Integridade transacional: O transporte EJB pode invocar servios de negcio no contexto de uma transao global e podem tambm ser suspensos ou ini-ciar uma transao global antes de invocar um EJB.

    Propagao de segurana: Uma requisio SOAP sobre HTTP para o OSB autenticada pelo OSB e o assunto autenticado pode ser propagado para o servidor EJB.

    Provedor JNDI: o transporte EJB disponibiliza um provedor JNDI, o qual pode ser reutilizado por mltiplos servios de negcio EJB. Isto prov um mecanismo centralizado para administradores gerenciarem configuraes do servidor EJB remotamente.

    Caching de alto desempenho: o transporte EJB construdo com um cache de alto desempenho e permite o reuso de conexes estabelecidas e minimiza lookups de stubs EJB.

    Tratamento de falhas e balanceamento de carga: o transporte EJB pode to-mar vantagem de cenrios onde o mesmo EJB est instalado em mltiplos domnios ou em um cluster para balanceamento de carga e/ou tratamento de falhas.

    XML avanado para capacidade de ligao Java: o transporte EJB disponibi-liza uma stack JAX-RPC para realizar ligao XML para Java;

    Retries inteligentes: o transporte EJB toma decises de retries baseado na na-tureza da falha que pode ocorrer durante a invocao de um EJB.

    3.10 Console de teste

    O OSB disponibiliza um console de teste que pode ser utilizado para validar recursos e expresses XQuery usadas em fluxos de mensagens. Os objetos a serem testados po-dem ser: servio de proxy, servio de negcio, Xquery, XSLT e recurso MFL. A funcio-nalidade permite rastrear o fluxo da mensagem quando da execuo do teste de um servio e examinar o estado da mensagem em pontos especficos do teste.

    Podem ser testadas partes especficas de um sistema de forma isolada ou pode ser testado o sistema como uma unidade. A forma de invocar o teste pode ser utilizando: Project Explorer, Resource Browser ou XQuery Editor.

    3.11 Gesto de recursos

    As seguintes funcionalidades so disponibilizadas pelo OSB para gesto de recursos:

    Armazenamento de informaes sobre servios, esquemas, transformaes, WSDL e WS-Policies;

    Permite navergar por servios registrados no OSB;

    Permite propagao de configurao de dados entre ambientes (p.e., ambi-ente de teste para ambiente de produo).

    O OSB prov APIs para customizao de: definies de servio; WSDL; Schemas; XQueries; etc.

    Recursos podem ser visualizados atravs dos seguintes formatos de URL:

    http://host:port/sbresource?WSDL/project/...wsdlname

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 32

    http://host:port/sbresource?POLICY/project/...policyname

    http://host:port/sbresource?MFL/project/...mflname

    http://host:port/sbresource?SCHEMA/project/...schemaname

    http://host:port/sbresource?PROXY/project/...proxyname

    http://host:port/sbresource?BIZ/project/...business_service_name

    3.12 OSB e UDDI

    Servios de proxy podem ser publicados em qualquer UDDI 3.0 (incluindo Oracle Service Registry). Servios publicados no OSB podem ser automaticamente publicados no UDDI. Alternativamente, pode-se definir a necessidade de aprovao quando um servio for alterado no UDDI. Definies de servios podem ser importadas do UDDI.

    3.13 Tratamento de erros

    Mensagens de erros podem ser customizadas para serem retornadas para consumido-res dos servios. Tratamentos de erros podem ser configurados para: estgios de pipeline; pipeline inteiro; servios de proxy. Alertas podem ser enviados de acordo com o contedo da mensagem.

    3.14 Versionamento

    O OSB permite disponibilizar novas verses de servios. Mltiplas verses de recursos de mensagens (p.e., WSDL, esquemas, parmetros de segurana) podem coexistir no OSB.

    3.15 Monitoramento

    O barramento permite configurar alertas para as regras de SLA definidas sobre os ser-vios, por exemplo: mdia de tempo de processamento de um servio; volume proces-sado; nmero de erros; violaes de segurana e erros de validao de esquema.

    3.16 Disponibilizao do OSB em servidores

    OSB pode ser disponibilizado em um servidor nico ou em mltiplos servidores (clu-ster de servidores) (Figura 21).

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 33

    Figura 21 Formas de implantao do OSB

    Quando disponibilizado em um cluster, os outros servidores so gerenciados a par-tir do servidor central (Figura 22).

    Figura 22 Gerenciamento do OSB disponibilizado em um cluster de servidores

    OSB permite gesto controlada para publicao de servios em diferentes ambientes (teste, preparao para promoo, produo). O processo pode ser automatizado pela implementao de programas Java ou scripts. As configuraes podem ser exportadas em arquivos JAR de um OSB para outro OSB, sendo que a importao pode ser cus-tomizada para importar apenas o que se deseja. Tarefas de implantao podem ser customizadas utilizando a ferramenta WebLogic Server Scripting Tool9.

    9 http://download.oracle.com/docs/cd/E12840_01/wls/docs103/config_scripting/reference.html

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 34

    3.17 Outros conceitos importantes

    Alm dos conceitos abordados, outros conceitos importantes em relao ao OSB so listados a seguir, incluindo links para documentao onde maiores detalhes podem ser encontrados.

    Transformao de dados utilizando o XQuery Mapper: http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html

    Segurana (Oracle Service Bus Security Guide): http://download-llnw.oracle.com/docs/cd/E13159_01/osb/docs10gr3/security/index.html

    Console de teste: http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/testing.html

    MFL (Message Format Language): http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/mfls.html

    Implementaes especficas atravs de uso de APIs: http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/appendixAPIs.html

    Definio de papis para tratamento de monitoramento no OSB: http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/operations/index.html

    Guia e melhores prticas sobre implantao de servios utilizando o OSB: http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/deploy/index.html

    4 Anlise prtica do Oracle Service Bus

    Esta seo apresenta anlises prticas do Oracle Service Bus (OSB).

    4.1 Publicao do servio no OSB

    Esta seo descreve os testes de publicao do servio no OSB e uso do mesmo pelo cliente implementado utilizando o Workshop for WebLogic Platform. Um passo a pas-so detalhado para publicao de servios no OSB apresentado em [Souza et al., 2008, 2009].

    A publicao de servios no barramento compreende duas etapas. Em primeiro lu-gar, necessrio realizar o deploy das aplicaes no servidor de aplicao WLS e, em seguida, publicar as interfaces de servios (WSDL) no OSB. O primeiro passo neces-srio, uma vez que o servio ser executado no mesmo WLS que est a sua interface. Para realizar esta etapa, o arquivo .Jar do servio foi gerado e instalado no WLS. A Figura 23 apresenta o resultado da instalao do servio no WLS.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 35

    Figura 23 Arquivo JAR do servio publicado no WLS

    Em seguida, no OSB (Oracle Service Bus), foi criado o projeto UnidadeOperativaPrj e o arquivo WSDL do servio foi publicado como um recurso deste projeto. A Figura 24 apresenta o resultado da publicao do WSDL do servio no OSB.

    Figura 24 Publicao do WSDL do servio no OSB

    Aps a publicao do arquivo WSDL do servio, o barramento est parcialmente preparado, pois uma particularidade do OSB que, ao publicar os WSDL, o servio no disponibilizado. Para que o servio seja disponibilizado realmente no barramen-to, necessrio criar um recurso chamado Business Service e associar esse recurso ao WSDL que foi adicionado ao projeto. O Business Service corresponde configurao, no barramento, de um servio cuja execuo ocorre fora do barramento. O Business Service foi criado a partir do WSDL publicado anteriormente, como apresentado na Figura 25. O endpoint do servio http://localhost:7001/UnidadeOperativa/UnidadeOperativaService , como apresen-tado na Figura 26.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 36

    Figura 25 Criao do Business Service

    Figura 26 Endpoint do servio UnidadeOperativa

    Vale ressaltar que o requisito de se criar um Business Service para o WSDL aparen-temente torna a tarefa de publicao de servios um tanto redundante. Porm, isso necessrio, pois o barramento permite definir configuraes especficas que no so esto no WSDL, tais como: configuraes de transporte de mensagens do servio (m-todo de requisio, se usa autenticao etc.); algoritmo de balanceamento de carga que ser usado para esse servio (none, round-robin, random ou random-weighted); nmero de tentativas a ser executado para re-executar o servio caso seja necessrio, alm do in-tervalo de tempo para as tentativas e se para tentar novamente se ocorrer erros da aplicao.

    A Figura 27 (destacado em verde) apresenta o Business Service e o WSDL do servio criados. Observe que possvel testar a execuo do servio utilizando o ESB. Basta clicar no boto destacado em vermelho na Figura 27. A tela apresentada na Figura 28 exibida para realizar o teste do servio.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 37

    Figura 27 Business service e WSDL do servio UnidadeOperativa

    Figura 28 Interface para teste do servio

    Aps a publicao do servio no barramento, possvel, por exemplo, monitorar o uso do servio. Para ativar o monitoramento, basta selecionarmos um servio qualquer

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 38

    disponvel no barramento e clicarmos em Monitoring Enabled (Figura 29). poss-vel alterarmos o intervalo de agregao. Esse intervalo corresponde ao intervalo em que as estatsticas do servio sero agregadas no barramento.

    Figura 29 Habilitao do monitoramento do servio

    Atravs de alertas, possvel monitorar a execuo do servio. Para este servio, criamos um alerta para informar quando o servio for executado em um tempo maior do que 100 milissegundos.

    Figura 30 Configurao do alerta para o servio

    Para que o cliente invoque o servio utilizando o barramento, ou seja, o barramento servindo como mediador da invocao do servio real, necessrio criar um servio de proxy. Maiores detalhes para criao de servio de proxy so apresentados por Souza et al. [2008, 2009]. Neste exemplo, com o objetivo de ilustrar a invocao do servio de negcio via servio de proxy, foi criado o servio UnidadeOperativaPX (Figura 31), a partir do WSDL do servio (UnidadeOperativa.wsdl). Para este servio foi adicionada

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 39

    uma rota (Figura 32) com o objetivo de invocar o mtodo do servio de negcio (Uni-dadeOperativaBS), como ilustrado na Figura 33.

    Figura 31 Servio de proxy UnidadeOperativaPX do projeto UnidadeOperativaPrj

    Figura 32 Rota (RouteNode1) criada para o servio de proxy invocar o servio de ne-gcio

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 40

    Figura 33 Descrio da rota: invocao do mtodo getUnidadeOperativa do servio UnidadeOperativaBS

    Para o cliente passar a invocar o servio de proxy ao invs do servio de negcio, basta substituir a URL de invocao do servio pela URL do servio de proxy, como apresentado na Figura 34.

    Figura 34 Invocao do servio de proxy pelo cliente

    4.2 Alterao dos parmetros do servio sem alterar o cliente

    Esta seo descreve os resultados obtidos com alteraes no servio do provedor sem alterar a configurao do servio no cliente. importante observar que, utilizando o barramento, o consumidor invoca o servio de proxy e este invoca o servio do prove-dor (servio de negcio). Os testes apresentados nesta seo tratam da alterao do servio do provedor sem alterar o servio de proxy e o consumidor. Os testes realiza-dos seguem os mesmos detalhes de implementao apresentados em [Sousa, 2009], porm o servio disponibilizado pelo provedor foi implementado no Workshop 10.3, ao invs do Workshop 9.2.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 41

    4.2.1 Implementao do servio antes de realizar o teste

    O cdigo referente implementao do servio publicado no servidor e configurado no barramento pode ser visto na Figura 35. A classe POJO referente ao objeto retorna-do pelo servio e a classe POJO que encapsula os parmetros para invocao do servi-o so apresentadas nas Figura 36 e Figura 37 respectivamente.

    Figura 35 Implementao do servio

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 42

    Figura 36 Classe POJO

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 43

    Figura 37 Classe que encapsula os parmetros da chamada do servio

    4.2.2 Teste de remoo de atributo do objeto retornado pelo servio

    Este teste consiste em remover o atributo codigoAGP da classe POJO retornada pelo servio, publicar o servio no servidor com a alterao e realizar a chamada do servio no cliente, sem alter-lo, utilizando o barramento como mediador. A Figura 38 apre-senta a resposta recebida pelo cliente. Logo, para o atributo removido no servio, foi atribudo o valor nulo, e no ocorreu erro na invocao do servio.

    *******************************************************

    Codigo: 1

    Nome: AS

    Sigla: BRA

    Indicador: PT

    CdigoAGP: null

    *******************************************************

    Figura 38 Resultado da invocao do servio aps remoo de atributo retornado pelo servio

    4.2.3 Teste de adio de atributo no objeto retornado pelo servio

    Este teste consiste em adicionar um atributo na classe POJO, publicar o servio no ser-vidor com a alterao e realizar a chamada do servio no cliente, sem alter-lo, utili-zando o barramento como mediador. A Figura 39 apresenta a resposta recebida pelo cliente. Observe que todos os atributos do objeto do cliente so preenchidos, dado que nenhum dos mesmos foi removido. Alm disso, o cliente no recebe mensagem de er-ro, mesmo invocando um servio em uma verso mais nova do que a que o cliente es-t referenciando.

    *******************************************************

    Codigo: 1

    Nome: AS

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 44

    Sigla: BRA

    Indicador: PT

    CdigoAGP: 1

    *******************************************************

    Figura 39 - Resultado da invocao do servio aps adio de atributo retornado pelo

    servio

    4.2.4 Teste de remoo de atributo no POJO que en capsula os parmetros do

    servio

    Este teste consiste em remover um atributo da classe POJO que encapsula os parme-tros do servio, publicar o servio no servidor com a alterao e realizar a chamada do servio no cliente, sem alter-lo, utilizando o barramento como mediador. O atributo excludo foi Nome sendo que no seria possvel apagar o atributo Codigo" porque ele essencial para a execuo do servio, j que leva o dado que ser utilizado na funo que obtm e retorna a Unidade Operativa. A Figura 40 apresenta a resposta recebida pelo cliente. Neste caso, o provedor recebeu o valor do atributo Nome, en-viado pelo cliente, mas que foi apagado no servidor. O POJO de retorno do servio no sofreu alteraes, e no ocorreram erros na execuo do servio. Logo, o parme-tro extra na classe POJO que encapsula os parmetros do servio, no afeta a sua exe-cuo. Alm disso, o barramento foi transparente nessa transao.

    *******************************************************

    Codigo: 1

    Nome: AS

    Sigla: BRA

    Indicador: PT

    CdigoAGP: 1

    *******************************************************

    Figura 40 Resultado da invocao do servio aps remoo de atributo da classe que encapsula os parmetros do servio

    4.2.5 Teste de incluso de atributo no POJO que encapsula os parmetros do

    servio

    Este teste consiste em adicionar um atributo na classe POJO que encapsula os parme-tros do servio, publicar o servio no servidor com a alterao e realizar a chamada do servio no cliente, sem alter-lo, utilizando o barramento como mediador. O atributo includo foi chamado de novoAtributo, do tipo String. A Figura 41 apresenta a res-posta recebida pelo cliente. Neste caso, o servio do provedor no recebeu o valor es-perado do atributo que foi adicionado, j que o cliente no est configurado para envi-ar esse atributo. Esta atualizao no provocou erro na execuo do servio, logo, o parmetro ausente na classe POJO, que encapsula os parmetros do servio, no afeta sua execuo. Alm disso, o barramento foi transparente nessa transao.

    *******************************************************

    Codigo: 1

    Nome: AS

    Sigla: BRA

    Indicador: PT

    CdigoAGP: 1

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 45

    *******************************************************

    Figura 41 Resultado da invocao do servio aps remoo de atributo da classe que encapsula os parmetros do servio

    4.2.6 Concluso dos testes

    Os mesmos resultados obtidos nos testes realizados para avaliar as abordagens de co-nexo ponto-a-ponto [Souza et al., 2009] entre cliente e servidor (consumidor e consu-midor) foram obtidos nos testes realizados com a utilizao do barramento. Portanto, o uso do barramento como simples mediador da chamada do servio atravs de um ser-vio de proxy no interfere na arquitetura em relao conexo ponto-a-ponto.

    4.3 Definio de fluxos em servios de Proxy

    O OSB um intermedirio que processa mensagens de entrada para requisio de ser-vios, determina a lgica de roteamento, e transforma estas mensagens para compati-bilidade com outros consumidores de servios. No Oracle Service Bus, um fluxo de mensagem corresponde implementao de um servio de proxy. Voc pode configu-rar a lgica de manipulao de mensagens usando definies de fluxo de mensagem de servio de Proxy. A lgica inclui atividades como transformao, publicao e gera-o de relatrio, as quais so implementadas como aes individuais dentro de est-gios de pipeline.

    A maior parte da lgica de processamento em um fluxo de mensagem tratada em pipelines. Um pipeline uma sequncia nomeada de estgios representando um cami-nho de processamento em uma nica direo sem ramificaes. Um estgio um pas-so de processamento configurado pelo usurio. Mensagens de entrada para pipelines so acompanhadas de um conjunto de variveis de contexto da mensagem que con-tm contedos da mensagem. Elas podem ser acessadas ou modificadas por aes dentro do estgio do pipeline.

    Na seo 3.3 foram apresentados os principais conceitos para definio de fluxo de mensagens em um barramento. Nesta seo, so apresentados testes prticos da defi-nio de fluxo de mensagens no OSB.

    Para a definio de fluxos entre consumidores e provedores, necessrio que o ser-vio provido esteja registrado no barramento e que exista um servio de proxy para fazer o roteamento das mensagens no barramento. A seo 4.1 apresenta o passo-a-passo para publicao de servio de negcio no barramento, o que envolve a importa-o do WSDL do servio e o registro do servio, alm da criao de um servio de proxy que rotear as mensagens para o servio de negcio registrado. Estes passos foram seguidos para a execuo dos testes prticos apresentados a seguir, os quais in-cluem:

    Roteamento de mensagens no OSB;

    Transformaes de mensagens; e

    Um estudo prtico do uso de transformaes de mensagens e roteamento das mesmas para auxiliar no versionamento de servios.

    4.3.1 Roteamento de mensagens

    Esta seo descreve um exemplo de roteamento de mensagens no OSB.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 46

    4.3.1.1 Cenrio

    Considere o cenrio de uma companhia de financiamento apresentado na Figura 42 que realiza roteamento de pedidos de emprstimo para servios de negcio apropria-dos baseado na taxa de juros requisitada. Se a solicitao de uma taxa menor do que 5%, ento a solicitao roteada para um servio especfico. Caso contrrio, a mensa-gem roteada para um servio normal.

    Figura 42 Cenrio de anlise de pedidos de emprstimo

    Em [Souza et al., 2009] foi apresentado o passo-a-passo de publicao dos servios de negcio e servio de proxy para a definio do fluxo para roteamento de mensa-gens. Neste trabalho, foi utilizado o ALSB (Aqualogic Service Bus), cuja verso foi evo-luda pela Oracle aps a compra da BEA para o OSB (Oracle Service Bus). No existem diferenas em relao ao passo-a-passo utilizando o ALSB e o OSB, e maiores detalhes para a realizao deste passo-a-passo no OSB so encontrados em [OSB, 2009b]. Nesta seo foi dado foco na apresentao da forma de realizar roteamento de mensagens.

    Para os exemplos apresentados a seguir, estamos considerando que os WSDL dos servios normalLoan e managerApproval foram importados, os servios de negcio Ma-nagerLoanReaview e NormalLoan foram registrados e que o servio de proxy LoanGate-way foi criado. O passo-a-passo para realizar estas atividades apresentado em [Souza et al., 2009] e [OSB, 2009b].

    4.3.1.2 Passos para criao do fluxo para roteamento de mensagem

    A criao de um fluxo para um servio de proxy realizada a partir da edio do flu-xo, como apresentado na Figura 43, sendo apresentado o fluxo inicial do servio de proxy (Figura 44). A partir deste fluxo deve ser adicionada uma rota (add route) que inicia a criao de um estgio. Em seguida, devem ser definidas as aes para este es-tgio.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 47

    Figura 43 Criao de fluxo para servio de proxy

    Figura 44 Fluxo inicial para o servio de proxy

    Figura 45 Adio de ao a um estgio

    Para criar ao de roteamento da mensagem, deve-se criar uma tabela de roteamen-to (Communication > Routing Table), como apresentado na Figura 46. Nesta tela, de-ve-se definir uma expresso (Expression), por exemplo, expresso XQuery para recupe-rar a taxa de juros no corpo da mensagem (varivel de contexto $body), como apresen-tado na Figura 47.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 48

    Figura 46 Criao de tabela de roteamento

    Figura 47 Definio de expresso para recuperar a taxa de juros solicitada

    Aps a definio da expresso de roteamento, define-se a regra de roteamento. No exemplo apresentado na Figura 48, a mensagem roteada para o servio ManagerLo-anReview, caso o valor da taxa seja menor do 5. Neste caso, o mtodo processLoanApp invocado. Para o caso da taxa ser maior ou igual a 5%, o servio NormalLoan deve ser invocado (Figura 49). Isto configurado criando um roteamento default (clicando no boto destacado na Figura 49) e configurando que o mtodo processLoanApp do servio NormalLoan deve ser invocado.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 49

    Figura 48 Roteamento para o servio que trata solicitao de taxa de juros menor do que 5%

    Figura 49 Definio do roteamento default para invocar o mtodo processLoanApp do servio NormalLoan quando a taxa de juros solicitada for maior ou igual a 5%

    4.3.1.3 Testes do servio de Proxy

    Para realizar o teste do servio de proxy, basta clicar no boto de depurao, como apresentado na Figura 50. Ser exibida a tela apresentada na Figura 51. Para realizar o teste, preencher, no textbox correspondente a loanRequest, o valor da taxa de juros. Se for preenchido um valor menor do que 5%, o servio de proxy roteia a mensagem para o servio ManagerLoanReaview. Caso contrrio, a mensagem ser roteada para o servio NormalLoan. A Figura 52 apresenta o resultado da invocao do servio solicitando ta-xa menor do que 5%, e a Figura 53 apresenta o trace de invocao do servio. J a Figu-ra 54 apresenta o resultado da invocao do servio solicitando taxa maior do que 5%.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 50

    Figura 50 Iniciar depurao do servio

    Figura 51 Tela de depurao de servio

    Figura 52 Resultado da invocao do servio solicitando taxa igual a 4,1%

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 51

    Figura 53 Trace de invocao do servio

    Figura 54 - Resultado da invocao do servio solicitando taxa igual a 5,3%

    4.3.2 Transformao de mensagens

    Transformao de dados corresponde a mapeamentos de dados de um formato para outro, por exemplo, com o objetivo de tornar a informao compatvel para ambientes de sistemas heterogneos. O OSB pode ser configurado para rotear e transformar mensagens quando necessrio, baseado em configuraes de servio de proxy espec-ficas.

    4.3.2.1 Cenrio

    O exemplo utilizado nesta seo para apresentar a transformao de mensagens se-melhante ao cenrio de empresa financeira apresentada na seo anterior. Neste caso, a empresa utiliza o OSB para rotear solicitaes de emprstimos que podem ser pagos por uma empresa secundria caso o valor solicitado seja maior do que 25 milhes, ou seja, caso contrrio a solicitao repassada para um servio de negcio da prpria empresa.

    A Figura 55 apresenta a arquitetura da aplicao para tratar emprstimos financei-ros no OSB. Inicialmente, a empresa financeira principal recebe uma solicitao de emprstimo, pela invocao do mtodo do servio de proxy (LoanGateway2), o qual determina o servio de negcio que tratar a solicitao. Se a quantia solicitada maior do que 25 milhes, ento a solicitao roteada para o servio de negcio LoanSalePro-

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 52

    cessor. Se a quantia menor ou igual a 25 milhes, a solicitao roteada para o servi-o de negcio NormalLoan.

    Quando a quantia maior do que 25 milhes, antes de realizar o roteamento para o servio da empresa secundria, o pipeline de requisio realiza um callout para o servi-o de negcio CreditRating e recebe a taxa de crdito da solicitao usando a varivel $creditRating. Para preencher os requisitos da interface do servio da empresa de em-prstimo secundria, o corpo da mensagem ($body) transformado pela adio dos detalhes da taxa de crdito. Em seguida, feito o roteamento da mensagem transfor-mada para o servio de negcio da empresa secundria. Quando este servio retorna a resposta para o servio de proxy, a mensagem transformada novamente para estar de acordo com o formato da mensagem de retorno do servio de proxy.

    Figura 55 Exposio da aplicao para tratar emprstimos financeiros no OSB

    4.3.2.2 Configurao necessria

    Para o exemplo apresentado a seguir, as seguintes configuraes so necessrias:

    Os WSDL dos servios normalLoan, managerApproval, loanSale e creditRating serem importados. O resultado da importao destes WSDLs apresentado na Figura 56.

    O servio de proxy LoanGateway2 ser criado a partir do WSDL normalLoan e com URI do endpoint igual a /loan/gateway2.

    Os seguintes servios de negcio estarem registrados:

    o CreditRatingService: retorna a taxa de crdito quando a solicitao de emprstimo est de acordo com determinado critrio.

    Este servio j instalado no servidor de aplicao (WebLo-gic Server), logo necessrio apenas registr-lo a partir do WSDL creditRating, escolhendo a porta helloPort e endpoint URI igual a http:/// cre-jws_basic_ejb/CreditSimpleBean.

    o NormalLoan: servio de negcio da empresa financeira secundria para tratar solicitaes menores ou iguais a 25 milhes.

    Este servio foi registrado para a execuo do exemplo da seo anterior.

  • _______________________________________________________________________________________________

    RelaTe-DIA: Estudos de Enterprise Service Bus e Oracle Service Bus 53

    o LoanSaleProcessor: servio de negcio da empresa financeira secun-dria para tratar solicitaes maiores do que 25 milhes.

    Este servio j instalado no servidor de aplicao (WebLo-gic Server), logo necessrio apenas registr-lo a partir do WSDL loanSale, escolhendo a porta helloPort e endpoint URI igual a http:///ljws_basic_ejb/LargeSimpleBean.

    O passo-a-passo para realizar importao de WSDL e registro de servios apre-sentado em [Souza et al., 2009] e [OSB, 2009b].

    Figura 56 WSDL necessrios para exemplo de transformao de mensagens

    Figura 57 Servios de negcio registrados para o exemplo de transformao de men-sagens

    As mensagens de entrada e sada dos servios apresentam diferenas as quais fa-zem necessria a transformao de mensagens para invoc-los: