Criando uma Business Rule no BPEL
“Uma Business Rule é uma regra que define ou restringe algum aspecto do negócio. Sua declaração é resolvida como verdadeira ou falsa. Business Rules buscam determinar a estrutura de negócio ou para controlar ou influenciar o comportamento do negócio. ”
“http://en.wikipedia.org/wiki/Business_rule”
Aqui vamos criar uma simples Business Rule que definirá conforme nosso parâmetro de entrada se é uma pessoa do tipo FISICA ou do tipo JURIDICA.
Antes de mais nada é interessante que você tenha certeza que seu COMPOSER esteja ativo em seu Domínio, para isso consulte o post: Ativando SOA Composer no Oracle SOA Suite 11g
Feito isso, vamos criar um projeto chamado BusinessRuleBpel
Clique em File >> New
Será aberto uma tela como abaixo:
Em seguida selecione Generic Project
Em Project Name coloque BusinessRuleBpel e em Project Technologies selecione o nome SOA e clique na setinha > para que o nome vá para a direita e fique como abaixo:
Clique em Next e Finish em seguida, deixando o Composite Template em Empty Composite
Agora que criamos um Projetovazio vamos criar um BPEL
Agora com o botão direito clique Componets > Insert > BPEL Process
Clique em BPEL 2.0 Specification
Em name coloque BusinessRuleBPELProcess
Em Template selecione Synchronous BPEL Process e clique em OK
Deixe selecionado a opção Expose as a SOAP service, pois este será o responsável por criar um WSDL e XSD default o qual iremos alterar para nossos testes.
Pronto, ele deverá ficar assim:
Abra o seu BusinessRuleBPELProcess.bpel
Entre o receiveInput e o replyOutput arraste um componente Business Rule conforme abaixo:
Renomeie a Rule1 para TipoPessoaRule, para isso basta dar um duplo clique sobre o nome.
Dê um duplo clique sobre a caixinha TipoPessoaRule e clique no sinal de + ao lado de Dictionary
Na próxima tela vamos definir o nome de nossa Rule, e os parâmetros de entrada (input) e saída (outPut).
Em Name: coloque TipoPessoaRules e clique no sinal de + em seguida em Add input Variable
Agora clique na segunda caixinha Variables dentro de Process e clique no sinal de +
Em Name: Coloque TipoPessoa e clique na Lupa
Em Project Schema Files, selecione a opção process e clique em OK
Em seguida vamos inicializar nossa Rule com nosso input
Então, clique na guia Initialize e selecione a opção payload dentro de inputVariable conforme abaixo:
Veja que em XPath ficará como $inputVariable.payload
Deixe Selecionado a opção TipoPessoa e clique em OK
Agora novamente na tela abaixo clique no sinal + e agora clique em Add OutputVariable
Clique em Variables e clique no sinal +
Em Name coloque Mensagem e clique na lupa
Em Project Schema Files selecione a opção processResponse e clique em OK
Clique em OK novamente
Na tela abaixo selecione o nome Mensagem e clique em OK
Pronto, sua tela deverá estar conforme abaixo, veja que agora já definimos nosso input e Output, agora clique em OK
Após clicado em OK foi criado então nossa ruleTipoPessoaRules.rules conforme abaixo, então clique em Create Rule para definirmos nossas regras através de IF/THEN
Vamos agora dar nomes aos Bois
Coloque os nomes conforme abaixo, lembrando que para renomear basta clicar sobre o nome e dar um ENTER
- Ruleset1 – Renomeie para TipoPessoaRuleset
- Rule1 – Renomeie para PessoaFisicaRule
Deverá ficar assim:
Agora vamos definir nossas
Logo abaixo do IF clique em <insert test> e aparecerá automaticamente <operand> == <operand>
Clique no primeiro <operand> e selecione a opção TipoPessoa >> input
Agora no segundo <operand> coloque entre aspas duplas “PF” e pressione ENTER
Em THEN clique em <Insert Action> e selecione assert new
Em <target> selecione Mensagem
Em <edit properties> ao clicar irá aparecer a tela abaixo, então na guia Value coloque entre aspas duplas “TIPO PESSOA FISICA” , dê um ENTER e clique em OK
Vamos agora definir a regra para pessoa JURIDICA e depois uma regra para caso a pessoa não nos informe nenhum dos dois.
Para facilitar vamos copiar nossa Rule e renomeá-la
Logo ao lado de PessoaFisicaRule clique com o botão direito do mouse e clique em Copy
Agora abaixo de THEN clique em Paste Rule
Mude os parâmetros conforme abaixo:
- Renomeie Rule2 para PessoaJuridicaRule
- No IF clique novamente em tipoPessoa e altere para TipoPessoa.input
- Em “PF” mude para “PJ”
- Em THEN coloque “TIPO PESSOA JURIDICA” em result
Deverá então ficar conforme abaixo:
Agora novamente copie qualquer uma das regras e coloque a abaixo deixando a tela conforme parâmetros abaixo:
Então agora teremos as três seguintes regras:
Até aqui OK, nossas Rules já foram definidas.
Agora volte ao BusinessRuleBPELProcess.bpel e adicione um Assign após nosso receiveInput, em seguida renomeie para TipoPessoaAssign
Dentro de nosso TipoPessoaAssign ligue nosso payload de inputVariable(lado esquerdo) para TipoPessoa (lado direito) e clique em OK
Agora arraste outro Assign abaixo de TipoPessoaRule e renomeie para OutputAssign
Abra o OutputAssign e dentro dele ligue Mensagem (lado direito) até Payload do seu outputVariable (lado esquerdo)
Realize o deploy localmente do nosso projeto e vamos testá-lo
No seu Browser vá no endereço http://localhost:10000/em
Obs: A porta 10000 é o numero que escolhi ao criar o meu Domínio.
Faça o Login:
Clique no seu projeto: BusinessRuleBpel [1.0]
Clique em Test
Em input coloque por exemplo PF e em seguida clique em Test Web Service
Veja abaixo o resultado:
Faça novamente o teste colocando em inputPJ e depois qualquer outronome…
Duvidas ? Deixe seu comentário e faça download deste Projeto
Abraços e até a Próxima