Tags
11G, BPEL, Console, Database Adapter, DBAdapter, Deploy, Deployment, Developer, INSERT, JDeveloper, Oracle, SOA, Soa-Suite
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
Será aberto uma tela como abaixo:
Em seguida selecione Generic Project
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:
Abaixo clique em Finish deixando o Composite Template em Empty Composite
Agora que criamos um Projeto vazio vamos criar um BPEL
Agora com o botão direito clique Componets > Insert > BPEL Process
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.
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
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:
Agora vamos criar o nosso Database Adapter (DBAdapter)
Em External References clique com o botão direito e escolha a opção Database Adapter
Na próxima tela clique em Next
Em Service Name coloque InsertEmployeeDBAdapter e clique em Next
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
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
Deverá então ficar assim:
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:
Clique em Deployments
Clique em DbAdapter
Clique em Configuration
Clique em Outbound Connection Pools e em seguida clique no ao lado de javax.resource.cci.ConnectionFactory
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
Voltando ao nosso DBADapter, então teremos a tela abaixo, então clique em Next:
Na tela abaixo, selecione Insert Only e clique em Next:
Agora clique em Import Tables para importarmos a nossa Tabela a qual faremos o Insert
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.
Agora clique na sua tabela e clique na seta > para que sua tabela vá para o lado direito conforme abaixo e clique em OK.
Veja abaixo que você fez o import corretamente, já que agora a tabela DEPARTAMENT aparece em nossa tela, agora clique em Next:
A próxima tela clique em Next
Clique em Next novamente
Clique em Next novamente
Clique em Finish
Então teremos o seguinte:
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:
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:
Arraste a setinha que aparece ao lado de seu Invoke para o seu DBAdapter que aparecerá em Partner Links
Após isso será mostrado a tela abaixo:
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
Agora em Name coloque o seguinte: Insert_Invoke e clique em OK
Teremos então a seguinte tela após termos clicado em OK.
Arraste agora um Assign para acima do seu Invoke conforme abaixo:
No Assing1 renomei-o para Variaveis_Entrada para isso basta dar um duplo clique sobre o nome Assign1
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.
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…
Clique em Next
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
Escolha a opção localhost e clique em Next
Clique em Next novamente
Agora clique em Finish
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:
Clique no seu projeto: InsertDBAdapter[1.0]
Clique em Test
Coloque os seguintes valores conforme abaixo e clique em Test Web Service
- numeroDepartamento = 50
- nomeDepartamento = SISTEMAS
- localDepartamento = OSASCO
Se no response aparecer conforme abaixo, seu projeto foi concluído com sucesso.
Para se certificar de que seus dados foram inseridos com sucesso, veja no seu banco de Dados se esta tudo OK
Duvidas ? Deixe seu comentário e faça download deste Projeto
Abraços e até a Próxima
/:-D