SOA Workshop - JBoss ESB v1.1

170
@ Alguns direitos Reservados http://www.edgarsilva.com.br

description

Material do Workshop de JBoss ESB Autor: Edgar Silva Revisor: Ricardo Ferreira

Transcript of SOA Workshop - JBoss ESB v1.1

Page 1: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Page 2: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Bem vindo ao Workshop SOA

• Objetivo:– Fazer com que a audiência compreenda os principais

conceitos de Arquiteturas Orientadas a Serviços - SOA , como foco no barramento de serviços: JBoss ESB

Page 3: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Instrutor

Edgar A. Silva– [email protected] – http://www.edgarsilva.com.br– http://ankiewsky.blogspot.com – http://jbossbrasil.ning.com/profile/edgar

Page 4: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Softwares que vão ser usados neste Workshop

• Eclipse Ganymed• JBoss Tools• JBoss ESB Server 4.4 GA• Opcionais:

– jBPM 3.2– DroolsD

Page 5: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Agenda

• Visão Geral de Arquitetura Orientada a Serviços

• WebServices: Até onde eles vão e quais suas maiores limitações

• Visão geral dos Enterprise Integration Patterns - EIPs

• Conceitos de Programação Orientada a Mensagens e MOMs

• Visão geral de um Enterprise Service Bus

• Apresentando o JBoss ESB

• Entendendo as distribuições do JBoss ESB

• Recompilando o JBoss ESB com base nos fontes do JBoss.ORG

• Ferramentas embarcadas com o JBoss ESB

• Executando os primeiros Exemplos do JBoss ESB

• Entendento o que são Providers (protocolos)E

• Clientes ESB Unware e ESB Aware

• Entendendo os Serviços e seus Listeners

• Compreendendo Actions do ESB

• Actions out-of-the-box

• Actions Personalizadas

• Actions baseadas em Annotations

• Integrando o ESB a Serviços de Regras do Drools

• Integrando o ESB a BPM com jBPM

• Construindo consumidores e provedores de WebServices com JBoss ESB

Page 6: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Planejamento

• Início: 09:00 • Break: 10:30 (10 minutos)B• Almoço: 13:00• Retorno: 14:00• Break: 16:20 (15 minutos)B• Término: 18:00• Bate-papo: 18:10 (20 minutos)B

Page 7: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Visão Geral de Arquitetura Orientada a Serviços

SOA (Service Oriented Architecture)S

Page 8: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

SOA Transformou TI em Tecnologia da Inovação

• Respostas mais rápidas• Aceitação das

Mudanças• Foco em entrega de

Valor• Integrações• Você!

Page 9: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

O que SOA é então?

• Arquitetura Orientada a Serviços - SOA– Um modelo Arquitetural que visa proporcionar resiliência,

respostas rápidas a mudanças, integrações com o novo e o legado, fortemente baseada em contratos/serviços, proporcionando monitorações dos mesmos, bem como princípios de qualidade(SLA por exemplo)p

Page 10: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Enão o que SOA não é?

• Uma Solução vendida em Caixinha

• A necessidade da compra de licenças de 982983298 produtos.

• Uma Tecnologia...• Uma Linguagem...• Uma tendência....• Um monte de

WebServices!!!!!!!!!!!!!!!!!!!!!• Um cara que diz: “Eu uso

SOA”

Page 11: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

SOA e OpenSource

• A chance de aprender primeiro• A chance de errar e não ter prejuízo• Use OpenSource não só usando mas:

– Contribuindo– Testando– Perguntando/Reclamando nos Foruns das Comunidades

• Quando tudo estiver pronto para entrar em produção procure usar Opensource que possuir Suporte Oficial de uma grande empresa como garantia de atendimento, continuidade e SLA.

Page 12: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Soluções de Tecnologia OSS para SOA

• Enterprise Service Bus - ESB– JBoss ESB, Mule, Apache ServiceMix

• BPM– JBoss jBPM, OSWorkflow, Intalio

• Rules Engines (Regras)R– Drools, TeamWare

Page 13: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Foco do Workshop

• ESB (Enterprise Service Bus)E– JBoss ESB

Page 14: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

WebServices: Até onde eles vão e quais suas maiores limitações

Page 15: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

WebServices

• Alternativa bem sucedida em termos de RPC• Contract Enforcement (WSDL, XSD)• Stateless (Http)S• SOAP• WSDL• XML, XML Schema• WS * (* = Transações, Segurança, Colaboração etc)W• Interoperabilidade (Java, .net, Ruby, PHP, etc)I

Page 16: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Stacks Java para WebServices

• Sun Metro– https://metro.dev.java.net/

• Apache CXF– http://cxf.apache.org/

• JBossWS– http://www.jboss.org/jbossws/

Page 17: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

WebServices nos dias de hoje

• EJB 3.0– Suporte a anotações sobre os POJOs– Capacidade de expor um EJB como um endpoint SOAP

controlado pelo contêiner EJB– Facilita a exposição / ocultamento de operações no

endpoint através de anotações (ver limitações nas specs)

• Spring Framework– Simplificadores para proporcionar o uso de WebServices.

Page 18: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

WebServices são formidáveis porém....

• Da mesma forma que você resolve inúmeros problemas complexos com WebServices, eles acabam acarretando uma complexidade alta mesmo para serviços simples.

• Casos Reais onde WebServices atrapalharam alguns clientes:– Tamanho do pacote XML trafegado no HTTP– Autenticações entre domínios de segurança diferentes– Dificuldade de manter transações consistentes devido a

heterogêneidade de plataformas (C++, COBOL, Java)

Page 19: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Alternativas ao WebServices

• Soluções dos “velhos tempos” muito comum em C++, PHP e outras soluções:– XML-RPC

• Dias de Hoje:– REST (REpresentational State Transfer)R

•Liberdade de Escolha de Padrão de Comunicação•Baseado em URLs

Page 20: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Conclusão WebServices

• Grandes meios de ponto de exposição de Serviços(Endpoints)E

• Ótima solução de Interoperabilidade• Padronizações para requisitos corporativos

padronizadas pelo mercado (ex: WS-Security, WS-Addressing, WS-Transactions etc)A

• Apenas não tenha em mente que apenas de WebServices uma Arquitetura de Serviços sobrevive.

Page 21: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Pense bem também em:

• Oferecer diferentes possibilidade de acesso aos seus serviços e não só WebServices– REST, Http, Sockets, JMS e etc

• Se você tiver isto em mente, nunca vai abusar demais das capacidades que WS podem lhe oferecer, mantendo assim a questão de “baixo acoplamento+contratos” sempre real na sua arquitetura.

Page 22: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Visão Geral dos EIPs

Page 23: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

EAI como Disciplina de SOA

• Necessidade de Integrações entre sistemas:– Enterprise Integrations

Patterns• http://www.eaipatterns.comhttp://www.eaipatterns.com

• Estilos de Integração– Transferência de Arquivos– Banco de Dados

Compartilhado– RPC– Mensageria

Detalhes (Amazon):

http://www.amazon.com/dp/0321200683?tag=enterpriseint-20&camp=14573&creative=327641&linkCode=as1&creativeASIN=0321200683&adid=1FD4YKBA2G6QMH71706H&

Page 24: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Enterprise Integration Patterns

Page 25: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Estrutura de um EAI PatternSplitter

Contexto:Um cenário para ser processado deve ser tratado como partes independentes que carregam informações íntrinsicas para o negócio

Problema:Como processamos uma mensagem que contêm várias informações distintas e cada informação é processada em um sistema ou forma diferente?

Solução:Usar um splitter para separar as informações de uma mensagem, e que envie cada parte da mensagem a seu respectivo sistema para processamento.

Consequências:Overhead no desempenho do processamento da mensagem original, splitter deve conhecer o contrato do emissor da mensagem para saber o que responder, acoplamento funcional do splitter com os sistema que executarão as partes da mensagem, mecanismos transacional centrado no splitter (All or Nothing)

Page 26: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Conceitos de Programação Orientada a Mensagens e

MOMs

Page 27: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Programação Assíncrona

• Tradicional:– Requisita => Espera Resposta

• Assíncrona:– Requisita=>Não Espera => Após terminar o processamento

pode ser enviada uma resposta

• Cenário de Negócio:– Pagamento de Cartão de Crédito

Page 28: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Mensagens – JMS (Java Message Services)M

• Poder de trocar informações de forma assíncrona• Publicação de Mensagens• Conceitos:

– Queue – 1 Mensagem 1 Interessado (ex: e-mail)Q– Topic – 1 Mensagem N Interessados (ex: mailing-list)T

• MOM - Message Oriented Middleware– WebSphere MQ

– SonicMQ

– ActiveMQ

– JBossMQ, NOVO JBoss Messaging

Page 29: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss Messaging 2.0_alpha - Benchmark

Page 30: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JMS

• Usado em larga escala em integrações e aplicações críticas, principalmente em bancos e grandes empresas.

• Meio comum de comunicação com legados (ex: Websphere MQ + COBOL)(

• JMS motivou bastante a indústria para criar uma centralização de Serviços, gerando o conceito de Barramento de Serviços ou ESB.

Page 31: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Enterprise Services Bus - ESB• Uma forma de intregar padrões de

comunicação, tranformação e roteamento entre serviços.

• ESB pode ser visto como um conjunto de componentes que interligam camadas de negócios com serviços de integração tais como:– Roteamento de Dados– Transformação de Dados– Transformação de Protocolos– Mapeamentos de Serviços de Nomes– Processamento de Mensagens– Gerenciamento de Transações– Coordenação da implementação de Serviços (Orchestration)C– Coordenação de Processos de Negócios (Choreography")C– Security management

Page 32: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss ESB

• Roteamento– Baseado em Conteúdo (CBR)B– Lista de Destinos (Static routing)L

• Orquestração– BPM - Business Process Management (jPDL)B– Web Services Orchestration (WS-BPEL)W

• Web services• Rules services• Transformation Services• EDA (Event-Driven Architecture)E

Page 33: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Enterprise Service Bus

• Barramento de Serviços– Escutar os eventos dentro dos protocolos– Responder com Ações– As Ações podem chamar ou serem os serviços.

Page 34: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ESB: Visão Tradicional

Page 35: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Visão JBoss ESB

Governança SOA (RAS, APM, Regras, DSLs)G

Varios ESB's atuando em balanceamento ou clustering

Page 36: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Necessidade de um ESB

• Você precisa de integração, mas precisa se focar no negócio e não como Java gerencia um socket ou as threads para ler um arquivo texto

• Você está participando de um projeto multi-departamental e ao longo prazo, e não, uma simples aplicação que acessa vários legados.

• Lembre-se: Foco

Page 37: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Como a maioria dos ESB's funcionam

Um Serviço fica registrado

no ESB de alguma forma.

Um Serviço pode estar

associado a 1 oumais protocolos(ws,jms,ftp etc)(

Os Serviços Respondem A estimulos

dos protocolos

Page 38: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Pasta X

JBoss ESB

DB

Cenários ESB

Page 39: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server • Realizando o Download do JBoss ESB• Baixando os Fontes do JBoss ESB

Page 40: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server • Realizando o Download do JBoss ESB• Baixando os Fontes do JBoss ESB

Page 41: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss ESB Server

• http://www.jboss.org/jbossesb/downloads/ • Utilize o JBoss Esb Server <VERSAO>

– Forma mais simples de você utilizar o JBoss ESB, pois ele já traz o ESB embarcado dentro do JBoss App Server

– Instalação: •Descompacte o zip•Entre no diretórios jboss-as/bin•Digite ./run.sh para Unix OS ou run para Windows

Page 42: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server • Realizando o Download do JBoss ESB• Baixando os Fontes do JBoss ESB

Page 43: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss ESB

• Se você precisar instalar em um JBoss App Server, você vai executar um script ant para isto:

• Na pasta install leia o readme.txt

Page 44: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Instalando o JBoss ESB

• Realizando o Download do JBoss ESB Server • Realizando o Download do JBoss ESB• Baixando os Fontes do JBoss ESB

Page 45: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss ESB acesso ao SVN

• http://www.jboss.org/jbossesb/subversion.html• Cliente SVN• Comandos:

– svn co http://anonsvn.jboss.org/repos/labs/labs/jbossesb/

Page 46: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

“ Run Forest, run...”

Page 47: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Executando o JBoss ESB pela primeira vez

• <Jboss_ESB_Install_dir>/bin/run.sh

Page 48: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Estrutura do JBoss ESB

• |-- bin (binário do App Server)|• |-- client (bibliotecas cliente)|• |-- docs (Documentações)|• |-- jar-versions.xml (Versões dos Jars)|• |-- javadocs• |-- lib • |-- samples (Exemplos diversos)|• |-- server (perfis do Jboss App Server)|

Page 49: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

QuickStarts

• install_dir/samples/quickstarts– Inúmeros exemplos para cenários reais onde você pode

aplicar o uso de um ESB, no caso: JBoss ESB

Page 50: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ESBGEN

• esbgen.sh – É basicamente uma simples ferramenta que cria um projeto

básico com suas bibliotecas requeridas, arquivos e scripts ants para compilação, deploy e teste.

• documentação/download:http://ankiewsky.blogspot.com/2008/10/esbgen-easy-way-to-create-jboss-esb.html

Page 51: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Usando o esbgen

Page 52: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

A primeira Aplicação JBoss ESB

Page 53: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Ingredientes de um Projeto ESB

• build.xml – Script ANT• jbm-queue-service.xml – Definição das filas JMS• deployment.xml – Ordem e dependência de

deployment• jboss-esb.xml – Definição dos Serviços ESB• jbossesb-properties.xml – Propriedades do Serviços• src – Códigos Java :)s

Page 54: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Providers no JBoss ESB(protocolos de escuta de serviço)(

Page 55: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Provider

• Do inglês:– Provider \Pro*vid"er\, n.

•One who provides, furnishes, or supplies; one who procures

•what is wanted.

• Evite confundir com a tradução “provedor”

Page 56: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Providers no JBoss ESB

• São os “protocolos” onde os eventos de Integração podem acontecer

• Event-Driven Architecture– Arquitetura Dirigida por Eventos– Um modelo muito comum em arquiteturas SOA

• Eventos?– Copiar um TXT para uma pasta– Publicar uma mensagem num Queue JMS– Realizar a chamada de um Método de um WS

Page 57: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss ESB possui os seguintes providersProtocolos de Escuta

• JMSProvider

• FSProvider

• FTPProvider

• JBRProvider

• SQLProvider

• HibernateProvider

• JCAProvider

• BusProvider

• SchedulerProvider

Em todos estes providersInformações podem chegar.

Estas informações servem de subsídiospros serviços

Page 58: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Clientes “ Aware” e “ Unaware” para o JBoss ESB

Page 59: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Na doc do JBoss ESB estes conceitos aparecem bastante

• As informações publicadas nos providers são tratadas como Mensagens

• Estas mensagens podem ser:

– ESB Aware – No formato que o JBoss ESB compreende

– ESB Unaware – Um cliente externo está publicando uma mensagem que ainda não é do formato que o ESB compreende

Page 60: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ESB Unaware

• São clientes que podem ser Java ou não:– Um ERP que gera um TXT numa pasta– Um cliente que envia um xml via FTP– Um cliente PHP que chama uma operação via HTTP

Page 61: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ESB Aware

• O JBoss ESB possui um formato para suas mensagens, uma vez esta mensagem dentro do barramento (pipeline), este formato se mantém conhecido e na mesma estrutura por toda sua execução.

Page 62: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ESB Message/ SOAP Message<xs:complexType name="Envelope">

<xs:attribute ref="Header" use="required"/>

<xs:attribute ref="Context" use="required"/>

<xs:attribute ref="Body" use="required"/>

<xs:attribute ref="Attachment" use="optional"/>

<xs:attribute ref="Properties" use="optional"/>

<xs:attribute ref="Fault" use="optional"/>

</xs:complexType>

public interface Message

{

public Header getHeader ();

public Context getContext ();

public Body getBody ();

public Fault getFault ();

public Attachment getAttachment ();

public URI getType ();

public Properties getProperties ();

}

Page 63: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss ESB Gateways

• São providers que vão servir de porta de entrada para clientes “Unaware”

Page 64: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Gateways para ESB Message

Gateway

(recebe um dado)(

ESBAware

Mensagem padrão dentro do barramento

PHPClient

Cobol

.netClient

Page 65: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Visualizando os Providers no jboss-esb.xml

Page 66: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Declarando Serviços

Page 67: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Declarando Serviços

<services>

<service category="Simples"

name="MySimpleService">

...

</service>

</services>

Page 68: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Declarando Listeners de Serviços

<listeners>

<jms-listener name="JMS-Gateway"

busidref="myesbprojectsimpleGwChannel" maxThreads="1" is-gateway="true" />

<jms-listener name="JMS-ESBAware"

busidref="myesbprojectsimpleEsbChannel" maxThreads="1" />

</listeners>

Page 69: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Declarando Actions do JBoss ESB

Page 70: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Declarando ESBActions

<actions mep="OneWay">

<action name="dump"

class="org.jboss.soa.esb.actions.SystemPrintln">

<property name="printfull" value="true" />

</action>

</actions>

Page 71: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Visualiazando a Árvore que forma um Serviço

• Há Providers• Há Serviços

– Que possuem Listeners– Estes Listeners escutam os Providers

•Quando algo acontece nos Providers– As Actions do Listeners são disparadas

Page 72: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Actions “ Out-of-the-box” no JBoss ESB

Page 73: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Actions

• O JBoss ESB possui várias Actions prontas que respondem aos eventos que acontecem nos providers

• Estas Actions desempenham inúmeros papéis, entre eles:– Transformar conteúdos das Mensagens– Rotear a Mensagem pro destino apropriado– Capturar Informações e inserir num banco de Dados– Chamar outros Serviços de dentro do barramento

Page 74: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ActionsVeja Programmers Guide (Pág 80 a 111)V

• Transformers & Converters

• ByteArrayToString

• LongToDateConverter

• ObjectInvoke

• ObjectToCSVString

• ObjectToXStream

• XStreamToObject

• SmooksTransformer

• SmooksAction

• XML, EDI, CSV e Input Payloads

• Java Input Payload

• Specifying the Result Type

• PersistAction Management

• jBPM BpmProcessor.

• GroovyActionProcessor

• EJBProcessor

• EIPs Actions

• EchoRoutr, HttpRouter JMSRouter

• ContentBasedRouter, StaticRouter, StaticWiretap

• Notifier

• SOAPProcessor

Page 75: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Utilizando Actions do JBoss ESB

• Sempre consulte o catálogo de Action já prontas antes de começar uma do zero.

• Actions mais comuns:– Transformação– Roteamento– As que implementam os EIPs

Page 76: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Exemplo de Action de Transformação

• Smooks – Framework codehaus• org.jboss.soa.esb.smooks.SmooksAction

Page 77: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Caso de Uso

• Transformar um arquivo TXT em XML • Conteúdo do Arquivo:

compras.edgarsilva.2812072359.txt

123131090903190931,45.43

098928938298193819,9.56

Page 78: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Smooks em Ação<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.0.xsd">

<profiles> <profile base-profile="source-csv" /> <profile base-profile="canonical-xml" /> </profiles>

<resource-config target-profile="source-csv" selector="org.xml.sax.driver"> <resource>org.milyn.csv.CSVParser</resource> <param name="fields" type="string-list"> transacao,valor </param> </resource-config>

<resource-config target-profile="canonical-xml" selector="csv-set"> <resource type="xsl"> <![CDATA[<ROOT> <xsl:for-each select="csv-record"> <Transacao> <numero><xsl:value-of select="transacao"/></numero> <valor><xsl:value-of select="valor"/></valor> </Transacao> </xsl:for-each></ROOT> ]]> </resource> <param name="is-xslt-templatelet">true</param> </resource-config>

<!-- Popular Transacao --><resource-config selector="Transacao"> <resource>org.milyn.javabean.BeanPopulator</resource> <param name="beanId">transacao</param><param name="beanClass">bpmesb.Transacao</param> <param name="bindings"> <binding property="id" selector="Transacao/@numero" /> <binding property="valor" selector="Transacao/@valor" type="Double"/> </param> </resource-config>

</smooks-resource-list>

Page 79: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Ações SmooksAqui cai como CSV:<action class="org.jboss.soa.esb.smooks.SmooksAction" name="transform-from-csv"> <property name="smooksConfig" value="/smooks-res.xml"/> <property name="messageProfile" value="source-csv"/></action>

Depois Transforma para um XML estruturado<action class="org.jboss.soa.esb.smooks.SmooksAction" name="transform-to-xml"> <property name="smooksConfig" value="/smooks-res.xml"/> <property name="messageProfile" value="canonical-xml"/></action>

Page 80: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Actions Personalizadas

Page 81: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Actions Personalizadas

• Implementar a interface:– org.jboss.soa.esb.actions.ActionPipelineProcessor

– org.jboss.soa.esb.actions.BeanConfiguredAction

• Para Ajudar a ler propriedades do Contexto do ESB

• Herdar da classe (mais comum e recomendável)H– org.jboss.soa.esb.actions.AbstractActionPipelineProcessor

Page 82: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Regras para as Actions

• Ao herdarem de AbstractActionLifeCycle devem:– Receber um ConfigTree no Construtor– Ter um método que receba como parametro um ESB

Message e que o devolva alterado ou não como retorno deste método.

Page 83: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Exemplo de Actionimport org.jboss.soa.esb.actions.AbstractActionLifecycle;import org.jboss.soa.esb.helpers.ConfigTree;import org.jboss.soa.esb.message.Message;

public class WorkshopAction extends AbstractActionLifecycle {

ConfigTree tree;

public Workshop(ConfigTree t) {

tree = t; }

public Message execute(Message m) {

System.out.print("Action executada ...");

return m; }

}

Page 84: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Laboratórios & Demos

Quickstarts

Page 85: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Quickstarts

• helloworld_action• helloworld_db_registration• helloworld_file_action• helloworld_ftp_action• helloworld_hibernate_action• helloworld_sql_action

Page 86: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Material de Documentação neste ponto

• JBoss ESB Programmers Guide– esb_install_dir/docs/ProgrammersGuide.pdf

Page 87: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Lab 1Criando um Projeto ESB com esbgen

Page 88: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Solução

• Configurar o esbgen e Apache ANT• Chamar o esbgen

– Confirmar a workspace– Informar o nome workshoplab1 no nome do projeto– Confirmar as outras sugestões do esbgen

• Entrar no diretório workshoplab1• Verificar se todos os arquivos foram gerados• Abrir o Eclipse e importar o Projeto para a

Workspace (lembre-se que a workspace será a pasta quickstarts)q

Page 89: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Cont.

• Vá no esb_install_dir/bin/ e inicie o ESB server via o comando ./run.sh ou run

• Vá até o diretório workshoplab1 e digite run deploy

Objetivo do Lab: Fazer com que você tenha os primeiros contatos com o

Jboss ESB e com os artefatos que compoem um Projeto usando esta tecnologia.

Resultado : No final você deve ter visto a mensagem de deploy com sucesso do seu servico worshoplab1.esb

Page 90: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Resumo da Solução - jboss-esb.xml<?xml version = "1.0" encoding = "UTF-8"?><jbossesbxmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"parameterReloadSecs="5">

<providers><jms-provider name="JBossMessaging" connection-factory="ConnectionFactory"> <jms-bus busid="workshoplab1GwChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/workshoplab1_GateWay" /> </jms-bus> <jms-bus busid="workshoplab1EsbChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/workshoplab1_ESB" /> </jms-bus>

</jms-provider>

</providers>

Page 91: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Resumo da Solução - jboss-esb.xml<services>

<service category="workshoplab1ESBService" name="workshoplab1ESBServiceListener" description="Service Sample">

<listeners>

<jms-listener name="JMS-Gateway" busidref="workshoplab1GwChannel" maxThreads="1" is-gateway="true" />

<jms-listener name="JMS-ESBListener" busidref="workshoplab1EsbChannel" maxThreads="1" />

</listeners>

<actions mep="OneWay">

<action name="dump" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="printfull" value="true" /> </action>

</actions></service></services>

</jbossesb>

Page 92: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Resumo da Solução - jboss-esb.xml

<services>

<service category="workshoplab1ESBService" name="workshoplab1ESBServiceListener" description="Service Sample">

<listeners>

<jms-listener name="JMS-Gateway" busidref="workshoplab1GwChannel" maxThreads="1" is-gateway="true" />

<jms-listener name="JMS-ESBListener" busidref="workshoplab1EsbChannel" maxThreads="1" />

</listeners>

<actions mep="OneWay">

<action name="dump" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="printfull" value="true" /> </action>

</actions></service></services>

</jbossesb>

<?xml version = "1.0" encoding = "UTF-8"?><jbossesbxmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"parameterReloadSecs="5">

<providers><jms-provider name="JBossMessaging" connection-factory="ConnectionFactory"> <jms-bus busid="workshoplab1GwChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/workshoplab1_GateWay" /> </jms-bus> <jms-bus busid="workshoplab1EsbChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/workshoplab1_ESB" /> </jms-bus>

</jms-provider>

</providers>

Page 93: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

jbm-queue-service.xml (Filas JMS)j<?xml version="1.0" encoding="UTF-8"?><server> <mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.esb.workshoplab1.destination:service=Queue,name=workshoplab1_GateWay" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute- name="ServerPeer">jboss.messaging:service=ServerPeer</depends><depends>jboss.messaging:service=PostOffice</depends>

</mbean>

<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.esb.workshoplab1.destination:service=Queue,name=workshoplab1_ESB" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute- name="ServerPeer">jboss.messaging:service=ServerPeer</depends><depends>jboss.messaging:service=PostOffice</depends></mbean></server>

Page 94: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Criando uma Action

Page 95: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

WorkshopActionpackage org.demo.workshoplab1;

import org.jboss.soa.esb.actions.AbstractActionLifecycle;import org.jboss.soa.esb.helpers.ConfigTree;import org.jboss.soa.esb.message.Message;

public class WorkshopAction extends AbstractActionLifecycle {

protected ConfigTree configTree;

public WorkshopAction(ConfigTree t) { configTree = t;}

public Message processarAcaoDentroDoESB(Message m){ System.out.println("Passou no ESB e recebeu os dados"); return m;}

}

Page 96: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Plugando a Action no Serviço do ESB

Page 97: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Plugando a Action ao Serviço <actions mep="OneWay"> <action class="org.jboss.soa.esb.actions.SystemPrintln" name="dump"> <property name="message"/> <property name="printfull" value="true"/> </action>

<action name="workshopAction" class="org.demo.workshoplab1.WorkshopAction" process="processarAcaoDentroDoESB"/>

</actions>

package org.demo.workshoplab1;...

public class WorkshopAction extends AbstractActionLifecycle {

public Message processarAcaoDentroDoESB(Message m){ System.out.println("Passou no ESB e recebeu os dados"); return m;}

}

Page 98: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Entendendo o empacotamento .esb

Page 99: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Empacotamento .esb

• No JBoss ESB, o(s) serviço(s) são “deployados” com a extensão .esb

• Um .esb é um Archive como um jar, war, ear mas assim como o sar, é especifico do JBoss Esb

Page 100: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Estrutura do .esb

├───METAINF

│ ├───jbossesb.xml (descritor dos serviços)j

│ ├───deployment.xml (dependência de deployment)d

│ └───MANIFEST.MF

├───<java classes> (classes compiladas .class)<

├───<jars> (bibliotecas)<

└───<queueservice.xml> (Serviços JMS)<

Page 101: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Actions baseadas em Annotations

• http://ankiewsky.blogspot.com/2008/09/posos-plain-old-services-objects-in.html

• Possível reaproveitar POJOs dentro do Barramento de Serviços

• DEMO

Page 102: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Integração JBoss ESBcom o Drools

Page 103: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools

http://www.jboss.org/drools/

Page 104: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools

• Engine de Regras • Permite separar regras de negócios das outras

atividades.• Atualização “hot” de Regras.• BRMS – Business Rules Management System• JSR 094• DSL – Domain Specific Language• Guvnor

Page 105: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools Guvnor

• Interface Web de Gerenciamento de Regras de Negócios Java

• Repositório de Regras• AtomPub, JCR, WebDav• Garante que as regras fiquem separadas dos códigos

de Infra-estrutura• http://www.jboss.org/community/docs/DOC-9834

Page 106: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Importância para o ESB

• CBRs• Regras em Gerais para implementações de vários

EIPs• Validações• Permissões• Re/Encaminhamento de Processamento

Page 107: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools Guvnor: Login

Page 108: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools: Tela Principal

Page 109: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools: “ Ativos” de Regras

Page 110: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools: “ Ativos” de Regras

Page 111: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools: Edição de Regras

Page 112: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools: Edição de DSLs

Page 113: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Drools: Repositórios

Page 114: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Arquiteturas

JBoss ESB

Provider

Action

Page 115: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Exemplo Droolstry { Properties props = new Properties(); props.load(OrderRunner.class.getResourceAsStream("Guvnor.properties")); RuleAgent agent = RuleAgent.newRuleAgent(props); RuleBase ruleBase = agent.getRuleBase(); WorkingMemory workingMemory = ruleBase.newStatefulSession();

Customer customer = new Customer(); customer.setFirstName("Edgar"); customer.setLastName("Silva"); customer.setStatus(9); OrderHeader order = new OrderHeader(); order.setOrderDiscount(0); order.setOrderPriority(1); order.setTax(17.2); workingMemory.insert(customer); workingMemory.insert(order);

System.out.println("See the Tax: " + order.getTax()); workingMemory.fireAllRules(); System.out.println("See the Discount: " + order.getOrderDiscount()); System.out.print("See the changed Tax: " + order.getTax()); } catch (Exception e) {System.out.println(e.getMessage());e.printStackTrace();}

Page 116: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Guvnor.properties

url=http://192.168.161.1:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/org.acme.ordermanagement/LATEST#file=/opt/java/eclipse/workspace/fidelity/src/main/java/org.acme.fidelity.pkg

Page 117: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ESB & BPM

Page 118: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Business Process Management - BPM

• Quando falamos de BPM em nível de serviços o sentido está em buscar uma forma de orquestrar o a ordem e o funcionamento dos serviços.

• Orquestração é uma capacidade muito importante para o desenho e execução de uma Arquitetura Orientada a Serviço

Page 119: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Business Process Management

• Gerenciar Processos de Negócios em resumo:– Workflows– Gerenciar Estado+Informações– Representar Graficamente o Estado– Permitir extrair informações estatísticas a exemplo:

•Quantos Processos estão parados na “Análise de Crédito”

•Qual o nó do processo que mais demanda tempo•Quais usuários mais tem processos associados em

execução

Page 120: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss jBPMArquitetura do Projeto

Abstração de qualquer linguagem de Processo

Page 121: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBoss jBPM 3.2

• Permite Gerenciamento de Processos de Negócios de forma visual e via código(xml).

• Processos podem ser adicionados e ou removidos com a mesma facilidade de hotDeployments.

• Gerencia a Execução de Processos de Negócios.

• Eclipse jBPM Designer – Edição Visual de Processos

• Console Web de Processos

• jPDL – para BPM and workflow

• Suporte ao PVM (Novo)P

• Suporte a BPEL (WS-BPEL)S

• Gerenciamento de Estados / Tarefas

• Salva estados do processo em Banco de Dados

• Gerencia associação de usuários e grupos

• Multi-Banco de Dados (Hibernate)M

• Pode rodar dentro do JBoss AS ou fora, ou até mesmo em outros AS.

Page 122: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Boas soluções de BPM devem Possibilitar ...

Que uma pessoa não técnica possa criar modelos de negócio e mapas mentais sem auxilio da TI

Que o mesmo modelo criado possa inspirar a criação de um processo executável!

Padrões de coreofrafia, orquestração de serviços e gerenciamento de tarefas humanas para acomodar a execução dos processos.

A geração, extração e analise de métricas e indicadores que viabilizem a analise do processo e sua melhoria contínua.

Page 123: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Como o jBPM é visto Atualmente?

Bom!Excelente!

Excelente!Fraco!

Arquiteto Corporativo +Analista de Negócio

Integrador de Dados eServiços + Desenvolvedor

Page 124: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Problemas das ferramentas de BPM

• Algumas muito boas no Desenho, porém fracas em Execução

• Outras muito boas mas somente em Execução e fracas no Desenho

Page 125: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBpm: Opção #1 ao embarcar soluções de Workflow/BPM

Page 126: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBpm: Casos de Uso

• Como motor de processos e aplicações• Exemplo de uso com Microsoft .net

JBoss jBPM (motor de processos)J

Camada de Serviços (WebServices)C

Cliente Asp.Net Cliente Desktop VB.Net

Page 127: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

jBpm: Casos de Uso

• Como motor de Processos• Cliente habilitando SOA na sua empresa

JBoss jBPM (motor de processos)J

EJBs WebServices REST

Vários Clientes (Java, PHP, Delphi etc)V

Page 128: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBpm : Framework

• Oferece um framework sofisticado para tratamento de processos de negócios e workflow

• Fácil aprendizado• Open-Source

Page 129: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JBpm: Designer

• Plugins do Eclipse• Permite que o desenvolvedor traduza o desenho do

processo de quaquer linguagem para a notação do jBPM.

• Suporte a Interações Humanas• Suporte a Interações Sistemicas• Suporte a Eventos• Futuro: Exportador para BPMN/XPDL

Page 130: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

jBpm: Designer

Page 131: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

jBpm: Console• Ferramenta Web que permite:

– Visualizar os Processos Instalados e suas versões– Visualizar as instâncias em execução de cada

processo– Simular a execução dos Processos– Instalar novos processos– Controlar acessos de usuários aos processos– Mostrar gráficamente em que passo o processo

está parado– Permite personalização de cores, fontes, idiomas e

etc, proporcionando uma melhor experiência visual para os clientes.

Page 132: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

jBpm: Console

Page 133: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Orquestrando Processos com jBPM no JBoss ESB

Page 134: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Camada: JBoss ESB

• 1. Service Orchestration• 2. Human Task Management

Page 135: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JbpmAction : JBoss ESB

<action class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor"

name="$ActionJBPM">

<property name="command" value="StartProcessInstanceCommand" />

<property name="process-definition-name" value="$PROCESSO JBPM" />

<property name="key" value="body.businessKey" />

<property name="esbToBpmVars">

<mapping bpm="xml" esb="BODY_CONTENT" />

</property></action>

Page 136: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JbpmAction : JBoss ESB

org.jboss.soa.esb.services.jbpm.actions.BpmProcessor

•Esta Action é responsável por gerenciar a execução dos processos do jBpm•Comandos Disponíveis:

– StartProcessInstanceCommand– SignalCommand– CancelProcessInstanceCommand

Page 137: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Na camada do Jbpm: ESBNode

• Podemos desenhar os processos de negócios, onde um dos nós do processo pode ser exatamente a representação de um serviço.

Page 138: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

ESBService Node

Page 139: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Quickstarts & Labs

Page 140: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

QuickStarts

• bpm_orchestration1• bpm_orchestration2• bpm_orchestration3• bpm_orchestration4

Page 141: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Documentação

• esb_install_dir/doc/Service Doc.pdf• Páginas 49 a 59

Page 142: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Lab

Demonstração de BPM + ESB

Page 143: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

WebServices no JBoss ESB

Page 144: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Valores da Solução

• Transporte– HTTP, SMTP, JMS

• Padronização de Dados– XML

• Soluções Leves podem ser usadas– XML sobre HTTP

• Padrões de Mercado : XML é a chave– WSDL : definição

– UDDI : registro– SOAP : Protocolo

Page 145: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

SOAP

• Simple Object Access Protocol• Sucesso de Mercado há mais de 1 decada

Page 146: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

De acordo com a W3C spec

• SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. It is an XML based protocol that consists of three parts:– an envelope that defines a framework for describing what is

in a message and how to process it

– a set of encoding rules for expressing instances of application-defined datatypes

– a convention for representing remote procedure calls and responses.

Page 147: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

JSR 181

Page 148: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Anotações JSR 181

• @WebService– Faz com que uma classe Java “vire” um WS

• @WebMethod– Identifica um método do WS dentro da classe

• @SOAPBinding– Configura o modo SOAP de exposição

• @WebParam– Personaliza o mapeamento de um paremetro

• @WebReturn– Personaliza um mapeamento de retorno

Page 149: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

Cont.

@WebService pode anotar uma classe ou interface

@WebMethod pode anotar um método

@WebParam pode anotar parametros

@WebResult pode anotar o retorno

Page 150: SOA Workshop - JBoss ESB v1.1

@ Alguns direitos Reservadoshttp://www.edgarsilva.com.br

WebServices e o JBoss ESB

• InBound – Produtores de Serviços – Dentro do barramento– Exposição de Serviços via WebService

• Outbound – Consumidores de Serviços – Fora do barramento– Centralizadores de Serviços– Orquestração– Interoperabilidade .net por exemplo

Page 151: SOA Workshop - JBoss ESB v1.1

Inboud WebServices

• O JBoss ESB pode ser seu repositório de Serviços• O JBoss ESB tem a capacidade de trafegar uma

Mensagem SOAP dentro do barramento de Serviço, convertendo-a para uma mensagem de conhecimento para os serviços do ESB.

Page 152: SOA Workshop - JBoss ESB v1.1

Quickstart: webservice_producer

import javax.jws.WebService;import javax.jws.WebMethod;import javax.jws.Oneway;import javax.jws.WebParam;import org.jboss.soa.esb.message.Message;import org.jboss.soa.esb.actions.soap.SOAPProcessor;

@WebService(name = "GoodbyeWorldWS", targetNamespace="http://webservice_producer/goodbyeworld")// @SOAPBinding(style = SOAPBinding.Style.RPC)public class GoodbyeWorldWS {

@WebMethod public String sayGoodbye(@WebParam(name="message") String message) {

Message esbMessage = SOAPProcessor.getMessage();

if(esbMessage != null) { System.out.println("**** SOAPRequest perhaps mediated by ESB:\n" + esbMessage.getBody().get()); } System.out.println("Web Service Parameter - message=" + message); return "... Ah Goodbye then!!!! - " + message; }}

O JBoss ESB vai injetar esta mensagem neste ponto em nosso WebService, quando elefor chamado por um Gateway ou via um envelope SOAP

Page 153: SOA Workshop - JBoss ESB v1.1

WebService e o WAR file com a JSR 118<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

<servlet> <servlet-name>GoodbyeWorldWS</servlet-name> <servlet-class>meu.meupacote.GoodbyeWorldWS</servlet-class> </servlet>

<servlet-mapping> <servlet-name>GoodbyeWorldWS</servlet-name> <url-pattern>/GoodbyeWorldWS</url-pattern> </servlet-mapping>

</web-app>

Page 154: SOA Workshop - JBoss ESB v1.1

Relação Classe Java com web.xmlimport javax.jws.WebService;import javax.jws.WebMethod;import javax.jws.Oneway;import javax.jws.WebParam;import org.jboss.soa.esb.message.Message;import org.jboss.soa.esb.actions.soap.SOAPProcessor;

@WebService(name = "GoodbyeWorldWS", targetNamespace="http://webservice_producer/goodbyeworld")// @SOAPBinding(style = SOAPBinding.Style.RPC)

public class GoodbyeWorldWS {

@WebMethod public String sayGoodbye(@WebParam(name="message") String message) {

Message esbMessage = SOAPProcessor.getMessage();

if(esbMessage != null) { System.out.println("**** SOAPRequest perhaps mediated by ESB:\n" + esbMessage.getBody().get()); } System.out.println("Web Service Parameter - message=" + message); return "... Ah Goodbye then!!!! - " + message; }}

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

<servlet> <servlet-name>GoodbyeWorldWS</servlet-name> <servlet-class>meu.meupacote.GoodbyeWorldWS</servlet-class> </servlet>

<servlet-mapping> <servlet-name>GoodbyeWorldWS</servlet-name> <url-pattern>/GoodbyeWorldWS</url-pattern> </servlet-mapping>

</web-app>

Page 155: SOA Workshop - JBoss ESB v1.1

Expondo o WebService como Serviçojboss-esb.xml

<action name="JBossWSAdapter"

class="org.jboss.soa.esb.actions.soap.SOAPProcessor">

<property name="jbossws-endpoint" value="GoodbyeWorldWS"/>

</action>

Page 156: SOA Workshop - JBoss ESB v1.1

Visualizando o Contrato do WSDLhttp://localhost:8080/contract

Page 157: SOA Workshop - JBoss ESB v1.1

Visualizando o Contrato do WSDLhttp://localhost:8080/contract

Page 158: SOA Workshop - JBoss ESB v1.1

Testando com SoapUI

Page 159: SOA Workshop - JBoss ESB v1.1

Saída no JBoss ESB

Page 160: SOA Workshop - JBoss ESB v1.1

Volta no SoapUI

Page 161: SOA Workshop - JBoss ESB v1.1

Funcionando no SoapUI :)

• Você pode provar que o seu serviço está aderente ao padrão WebServices

• Ponto de partida para interoperabilidade com outras plataformas

Page 162: SOA Workshop - JBoss ESB v1.1

WebServices “ OutBound”

Page 163: SOA Workshop - JBoss ESB v1.1

JBoss ESB colaborando com Serviços Externos

JBoss ESB

Evento Acontece....

Gateway passa a Mensagem para dentro do ESB

Action converte de TXT para XML

Mundo .net

WebService .net

Action Envoca umWebService

para completar dadosda Transação

para gerar o objeto Java

Action queSalva no

Banco de Dados

Page 164: SOA Workshop - JBoss ESB v1.1

Questões importantes de observações

• Tipos complexos do mundo WebServices/XML

• Mecanismos de Segurança (NTLM, Kerberos etc)

• Federação de WebServices

Page 165: SOA Workshop - JBoss ESB v1.1

Quickstart: webservice_consumer1

• Consome um WebService de dentro do JBoss ESB, mas poderia ser qualquer outro

Page 166: SOA Workshop - JBoss ESB v1.1

Action SOAPClient

<action name="soapui-client-action"class="org.jboss.soa.esb.actions.soap.SOAPClient"><property name="wsdl" value="http://127.0.0.1:8080/ws/HelloWorldWS?wsdl" /> <property name="responseAsOgnlMap" value="true" /> <property name="SOAPAction" value="sayHello"/></action>

Page 167: SOA Workshop - JBoss ESB v1.1

Conclusões

Page 168: SOA Workshop - JBoss ESB v1.1

JBoss ESB

• Uma ótima solução que reúne o melhor dos dois mundos:– Código Aberto (opensource)

– Suporte de Fornecedor (Subscription)

– No Brasil :

• JBoss, a division of Red Hat

•Red Hat Brasil– 55 11 3529-6000

– http://www.br.redhat.com/jboss

Page 169: SOA Workshop - JBoss ESB v1.1

Revisão de Aprendizado

• Você agora deve se sentir apto para:– Compreender e explicar as necessidades de um ESB/ Barramento de

Serviços

– Compreender os Conceitos de Eventos(EDA), e como responder via Serviços

– Instalar e executar o JBoss ESB

– Gateways, ESB Unaware e Aware Messages, Serviços, Listeners, Actions out-of-the-box e Actions personalizadas

– Uso do JBoss ESB com um engine de Regras

– Uso do JBoss ESB junto com um orquestrador como Jbpm

– Uso de JBoss ESB e WebServices

Page 170: SOA Workshop - JBoss ESB v1.1

Outros Workshops SOA

• Consulte– SOAWorkShop – Educando profissionais SOA

•http://soaworkshop.wordpress.com

– SOA & JBoss ESB

– Breve: SOA & BPM

– Breve: SOA e Governança opensource