BPEL

Inserindo Dados usando o Database Adapter Bpel (DbAdapter) Oracle SOA Suite 11g

Em um post anterior mostrei como realizamos um Select no Banco de Dados usando o componente DbAdapter do BPEL, agora realizaremos um processo muito parecido mas realizando um Insert

Neste exemplo receberemos três parâmetros de nosso serviço para inserirmos as informações necessárias para cadastrar um novo departamento em nossa tabela de departamentos.

Para nossos testes, vamos criar um projeto chamado InsertDBAdapter

Clique em File >> New

Imagem Blog UansCarvalho

Será aberto uma tela como abaixo:

Em seguida selecione Generic Project

Imagem Blog UansCarvalho

Em Project Name coloque InsertDBAdapter e em Project Technologies selecione o nome SOA e clique na setinha > para que o nome vá para a direita e fique como abaixo:

Obs: Veja em Directory que ele irá preencher automaticamente o nome onde será criado o nome do projeto que você informou em Project Name

No meu caso: /home/uans/jdeveloper/mywork/UansBlogApplication/InsertDBAdapter

Clique em Next em seguida:

Imagem Blo UansCarvalho

Abaixo clique em Finish deixando o Composite Template em Empty Composite

Imagem Blog UansCarvalho

Agora que criamos um Projeto vazio vamos criar um BPEL

Imagem Blog UansCarvalho

Agora com o botão direito clique Componets > Insert > BPEL Process

Imagem Blog UansCarvalho

Clique em BPEL 2.0 Specification

Em name coloque InsertDBAdapterBPELProcess

Em Template selecione Asynchronous BPEL Process e clique em OK

Em Service Name deixe apenas o nome insertdbadapterbpel

Deixe selecionado a opção Expose as a SOAP service, pois este será o responsável por criar um WSDL default o qual iremos alterar para nossos testes.

Imagem Blog UansCarvalho

Vamos agora alterar nosso WSDL criado para inserirmos nosso parâmetros de entrada  que será utilizado em nosso DBAdapter.

Para isso, clique no nosso projeto criado e na pasta xsd dê um duplo clique no xsd que foi criado automaticamente InsertDBAdapterBPELProcess.xsd

Imagem Blog UansCarvalho

Agora vamos alterar nossos parâmetros de entrada.

Dentro da tag <element name=”Process”>  que são nossos parâmetros de entrada, altere e acrescente os valores abaixo:

<element name=” numeroDepartamento” type=”integer”/>
<element name=” nomeDepartamento” type=”string”/>
<element name=” localDepartamento” type=”string”/>

Dentro da tag <element name=”processResponse”> em result, deixe como está.

Veja como ficou:

Imagem Blog UansCarvalho

Agora vamos criar o nosso Database Adapter (DBAdapter)

Em External References clique com o botão direito e escolha a opção Database Adapter

Imagem Blog UansCarvalho

Na próxima tela clique em Next

Imagem Blog UansCarvalho

Em Service Name coloque InsertEmployeeDBAdapter e clique em Next

Imagem Blog UansCarvalho

Na próxima tela certifique-se que sua Connection está correta, no caso, apontando para o banco de dados correto, e em JNDI Name está também com o nome correto.

No meu caso está apontando para minha base de dados do OracleXE

Caso você não tenha criado ainda, faça o seguinte:

Clique no ícone + ao lado do nome de sua Connection

IImagem Blog UansCarvalho

Na tela seguinte preencha conforme a imagem abaixo:

Obs: No meu caso, estou apontando para a base do meu Oracle XE, no seu caso você pode colocar os dados referente a base que você irá conectar e em seguida clique em Test Connection para ter certeza que você inseriu corretamente as informações do seu banco de Dados e clique em OK

Imagem Blog UansCarvalho

Deverá então ficar assim:

Imagem Blog UansCarvalho

Caso você não saiba o nome que deverá ficar em JNDI Name, verifique meu Post: Adicionando uma nova Base de Dados ao DbAdapter no Console (Web) do SOA Suite 11g pois neste Post descrevo como configurar uma nova base ao DbAdapter (WEB), mas caso ainda tenha duvidas de onde encontra esse nome, entre na Console WEB conforme abaixo:

No seu Browser vá no endereço http://localhost:10000/console

Obs: A porta 10000 é o numero que escolhi ao criar o meu Domínio.

Faça o Login:

Imagem Blog UansCarvalho

Clique em Deployments

Imagem Blog UansCarvalho

Clique em DbAdapter

Imagem Blog UansCarvalho

Clique em Configuration

Imagem Blog UansCarvalho

Clique em Outbound Connection Pools e em seguida clique no  javax.resource.cci.ConnectionFactory Expand Node   ao lado de javax.resource.cci.ConnectionFactory

Imagem Blog UansCarvalho

Veja abaixo as conexões minhas conexões e lá temos a que estou usando no DBAdapter, no caso:  eis/DB/OracleXe e este será o nome do JNDI Name que iremos usar no nosso DBAdapter

Imagem Blog UansCarvalho

Voltando ao nosso DBADapter, então teremos a tela abaixo, então clique em Next:

Imagem Blog UansCarvalho

Na tela abaixo, selecione Insert Only e clique em Next:

Imagem Blog UansCarvalho

Agora clique em Import Tables para importarmos a nossa Tabela a qual faremos o Insert

Imagem Blog UansCarvalho

Na tela seguinte em Name Filter coloque  %DEPARTMENT%

Obs: Estou usando o % para que você veja que é possivel usar o sinal de porcentagem para encontrar a tabela caso você não saiba o nome exato, em seguida clique em Query e abaixo em Available iŕa ser mostrado a sua tabela, mas caso não apareça veja na criação de suas configurações se o seu usuario tem as devidas permissões para acessar essa tabela e/ou o Owner esta correto.

Imagem Blog UansCarvalho

Agora clique na sua tabela e clique na seta > para que sua tabela vá para o lado direito conforme abaixo e clique em OK.

Imagem Blog UansCarvalho

Veja abaixo que você fez o import corretamente, já que agora a tabela DEPARTAMENT aparece em nossa tela, agora clique em Next:

Imagem Blog UansCarvalho

A próxima tela clique em Next

Imagem Blog UansCarvalho

Clique em Next novamente

Imagem Blog UansCarvalho

Clique em Next novamente

Imagem Blog UansCarvalho

Clique em Finish

Imagem Blog UansCarvalho

Então teremos o seguinte:

Imagem Blog UansCarvalho

Agora coloque o cursor do mouse sobre o Bpel, no caso a caixa azul ai do meio até aparecer uma seta cor laranja, então segure o botão esquerdo do mouse e arraste até a outra setinha do seu DBAdapter:

Imagem Blog UansCarvalho

Agora dê um duplo clique sobre o seu BPEL, e ao lado direito na tela em BPEL Constructs clique no componente Invoke e arraste para o centro do seu BPEL:

Imagem Blog UansCarvalho

Arraste a setinha que aparece ao lado de seu Invoke para o seu DBAdapter que aparecerá em Partner Links

Imagem Blog UansCarvalho

Após isso será mostrado a tela abaixo:

Imagem Blog UansCarvalho

Então na guia input clique no sinal verde + para criar a variável de entrada, no caso que dará nome ao seu input

E veja que ele irá criar uma outra caixinha já com o nome da variável preenchida, no caso Invoke1_insert_InputVariable, então clique em OK

Imagem Blog UansCarvalho

Agora em Name coloque o seguinte: Insert_Invoke e clique em OK

Imagem Blog UansCarvalho

Teremos então a seguinte tela após termos clicado em OK.

Imagem Blog UansCarvalho

Arraste agora um Assign para acima do seu Invoke conforme abaixo:

Imagem Blog UansCarvalho

No Assing1 renomei-o para Variaveis_Entrada para isso basta dar um duplo clique sobre o nome Assign1

Imagem Blog UansCarvalho

Agora dê um duplo clique sobre a caixinha  Variaveis_Entrada, clique no sinal + do inputVariable até chegar em client:numeroDepartamento, (do lado esquerdo) e arraste até o ns2:deptno que estará em Invoke1_Insert_InputVariable do lado direito conforme abaixo e clique em OK.

Faça também o mesmo ligamento do lado esquerdo para o lado direito com os demais itens, no caso:

  • client:nomeDepartamento –> ns2:name
  • client:localDepartamento –> ns2:location

Obs: Este Invoke1_Insert_InputVariable é a mesma variável que definimos para o Invoke que criamos acima.

Imagem Blog UansCarvalho

Faça o deploy do seu projeto para testarmos:

Com o botão direito do mouse em cima do seu projeto (InsertDBAdapter) clique em Deploy > InsertDBAdapter

Imagem Blog UansCarvalho

Clique em Next

Imagem Blog UansCarvalho

Marque a opção Overwrite any existing composites with the same revision ID e desmarque a opção Keep running instances on after redeployment e clique em Next

Imagem Blog UansCarvalho

Escolha a opção localhost e clique em Next

Imagem Blog UansCarvalho

Clique em Next novamente

Imagem Blog UansCarvalho

Agora clique em Finish

Imagem Blog UansCarvalho

No seu Jdeveloper, bem abaixo, clique na guia Deployment e veja se aparece a mensagem —-  Deployment finished.  —- se aparecer seu deploy foi executado com sucesso, se não aparecer verifique novamente os passos acima para ver se você esqueceu de fazer algo.

Vamos fazer o teste para ter certeza que tudo funcionou perfeitamente.

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:

Imagem Blog UansCarvalho

Clique no seu projeto: InsertDBAdapter[1.0]

Imagem Blog UansCarvalho

Clique em Test

Imagem Blog UansCarvalho

Coloque os seguintes valores conforme abaixo e clique em Test Web Service

  • numeroDepartamento   =  50
  • nomeDepartamento      =  SISTEMAS
  • localDepartamento       =  OSASCO

Imagem Blog UansCarvalho

Se no response aparecer conforme abaixo, seu projeto foi concluído com sucesso.

Imagem Blog UansCarvalho

Para se certificar de que seus dados foram inseridos com sucesso, veja no seu banco de Dados se esta tudo OK

Imagem Blog UansCarvalho

Duvidas ? Deixe seu comentário e faça download deste Projeto :-)

 

Abraços e até a Próxima

/:-D

 

 

Criei este Blog destinado a desenvolvedores e interessados na Tecnologia Oracle SOA Suite, minha idéia é que no futuro ele sirva de referência para Analistas e Desenvolvedores desde aprendizes a especialistas. Já existem alguns Posts interessantes que abordam um pouco do meu dia a dia, no passar do tempo irei alimentar este Blog com o máximo de informações possíveis, por isso peço por gentileza aos interessados e afins que caso tenham alguma dúvida, sugestão ou crítica que me digam para que eu possa da melhor forma suprir as expectativas e na medida do possível sanar todas as duvidas que vierem a surgir ou até mesmo criar novos Posts abordando algum tópico que venha a ser relevante para todos os interessados. Obrigado Uans Carvalho

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *