Phoenix Criminal Lawyer

Utilizando BPEL com DBAdapter

Neste post, vou explicar como utilizar o DBAdapter com BPEL, para isso, além de utilizar o JDeveloper e o Weblogic, também vou utilizar o SQL Developer.

Primeiramente vamos criar um projeto novo, com o JDeveloper aberto, vá em File > New, escolha Applications e em itens selecione SOA Application.

Na tela seguinte de um nome para sua aplicação (no meu caso BPELWithDBAdapter) e clique em next. Agora, de um nome ao seu projeto (no meu caso BPELWithDBAdapter, você pode alterar conforme a sua necessidade). Selecione um template para o composite que contenha o BPEL e clique em finish.

Feito isso, irá abrir uma janela para que defina um nome ao bpel, sua especificação e template.
OBS.: O template que vamos utilizar nesse exemplo é o Synchronous.

Clique com o botão direiro sobre o BPEL criado e clique em edit, primeiramente, vamos inserir um Assign entre os componentes de entrada e saída e logo após o assign adicione um invoke.
Qualquer dúvida sobre os passos iniciais acima, veja também: http://brunogualda.com.br/introducao-ao-bpel/.

Nesse momento, sua tela deverá estar conforme apresentado abaixo:

Agora vamos adicionar o DBAdapter, este que será responsável pela comunicação entre a base de dados e a requisição do serviço que estamos criando. Vá em BPEL Services e arraste o componente Database Adapter para o Partner Links no canto direito do BPEL. Irá carregar um tela de boas vindas, pode clicar em next. Na tela seguinte, dê um nome para o service name e clique em next.

É chegado o momento de configurarmos uma conexão com a base de dados, para isso, clique no sinal de +, uma tela irá se abrir requisitando que forneça as informações de conexão com sua base de dados, após o fornecimento dos dados você pode checar se está tudo OK clicando em Test Connection, se tudo correr conforme esperado, no campo inferior irá apresentar a mensagem “Sucess!“, então, podemos clicar em OK.

De volta a tela de configuração do service connection, deve-se alterar o nome da JNDI que foi criada juntamente com o data source, no meu caso: eis/DB/DTExample. E clique em next.

Caso ainda não tenha configurado nenhum data source, veja mais sobre em: http://brunogualda.com.br/configuracao-de-data-source-no-weblogic/.

Agora, vamos selecionar o tipo de operação que desejamos efetuar. Neste exemplo irei utilizar a inserção de dados. Para isso, selecione a opção Perform an Operation on a Table e marque a opção Insert Only. Agora clique em next.

Em select table, clique em Import Tables para selecionar a tabela que deseja efetuar a inserção dos dados. Estou utilizando a tabela ‘PESSOA’ para efetuar esta inserção. Clique em next.

Na tela seguinte, marque os campos da tabela que pretende definir as primary keys, neste exemplo, todos e clique em next e next novamente, pois não teremos nenhum relacionamento entre tabelas.

Após o passo acima, pode-se clicar em next até que a opção finish seja ativada e então clique nela para finalizar. Ao efetuar estes passos, deverá constar uma tela conforme apresentada abaixo, onde é definido as informações do WSDL que está sendo criado. Clique em OK.

Nesse momento, vamos efetuar a ligação entre o invoke e o dbadapter. Para isso, clique na seta ao lado do invoke e arraste até o dbAdapter, será aberta uma tela para edição do invoke. Aqui podemos configurar um nome para o invoke, a operação que será executada e a entrada dos dados. Para o exemplo, utilizei o nome InsereDados, em operation mantém-se Insert e np campo input, clique no sinal de + para adicionar a variável de entrada, ao fazer isso você poderá definir um nome para sua variável. No meu caso, irei manter o nome padrão.

A tela de edição do invoke deverá estar igual ou parecida a apresentada abaixo, isso irá depender do nome que você utilizou na variável. Clique em OK.

Agora devemos alterar o valor das variáveis de entrada no XSD criado pelo BPEL, onde elas serão responsáveis pela passagem dos valores a base de dados. Vá em Applicarion Navigatior, abra o arquivo BPELProcessWithDBAdapter.xsd, na parte inferior clique em source, sua tela deverá estar conforme a imagem abaixo:

Altere a variável input adicionando as variáveis que serão responsáveis por passar os dados para a base de dados. Veja abaixo:

De volta ao BPEL, clique com o botão direito no Assign para editá-lo. Na tela que se abre há varias abas, nesses momento vamos trabalhar apenas na aba General onde vamos alterar o nome do Assign para algo mais amigável, por exemplo AtribuiDados. Agora vamos utilizar a aba Copy Rules, nesse ponto vamos fazer a atribuição dos valores que será passado no BPEL e inseridos na base.
No lados esquerdo da tela expanda inputVariable > payload > client:process, e no lado esquerdo expandir InsertDados_insert_InputVariable > PessoaCollection > ns2:PessoaCollection: PessoaCollection > ns2:Pessoa : Pessoa. Agora faça a ligação dos campos correspondentes, a edição do assign deverá ficar da seguinte forma:

Faça o deploy da aplicação. Veja como efetuar deploy da aplicação em: http://brunogualda.com.br/como-efetuar-deploy-do-jdeveloper-no-weblogic/

Acesse a url do servidor em http://localhost:7001/em (no meu caso), clique sobre a aplicação BPELWithDBAdapter, deverá carregar uma tela conforme apresentada abaixo:

Clique em Test, nas variáveis insira os valores correspondentes e clique em Test Web Service

Para verificar se a ação foi bem sucedida, acesse a base de dados na tabela e veja se os dados foram inseridos com sucesso.

Download do projeto
Downlo do script

Configuração de Data Source no Weblogic

Para configurar um data source (para saber mais sobre data source, clique aqui) no weblogic, acesse o servidor na url: http://localhost:7001/console (no meu caso) e faça o login. Deverá visualizar uma tela conforme a imagem abaixo:

Clique em Data Sources, e na tela que será carregada, vá em New > Generic Data Source

Dê um nome para o data source, no meu caso DTExample, e um nome para a JNDI (para saber mais sobre JNDI clique aqui) que aqui coloquei como jdbc/DTExample. Lembre-se bem do nome criado neste JDNI, pois iremos  utiliza-lo novamente mais a frente. Em Database Type deixe Oracle e clique em next.

Defina o driver que será utilizado: “Oracle Driver (Thin XA for Service connections; Version:9.0.1 and later” e clique em next e next novamente. Agora é necessário a configuração de conexão com a base de dados. Lembrando que o nome de usuário e senha são as informações que você criou na sua base de dados e database name está como “XE“, pois o padrão da base oracle na versão gratuíta é desta forma. Clique em next.

Nesta tela é exibido um resumo com as informações fornecidas e cria a classe e url para a conexão. Aqui podemos checar se está tudo OK clicando em Test Configuration. Se tudo estiver bem, deverá ser apresentada a mensagem “Connection test succeded” no topo da página, então podemos clicar em next. Caso apresente algum erro, volte a tela anterior e reveja as informações fornecidas para a conexão.

Marque o servidor que deseja fazer a implantação do data source criado, no meu caso tenho apenas o AdminServer e clique em finish. Note agora que o data source DTExample, já consta na lista.

Feito isso, agora em Deployments e clique em DbAdapter. Na tela que se abre, clique em Configuration > Outbound Connection Pools > New, marque a opção javax.resource.cci.ConnectionFactory e clique em next, de um nome para o conjunto de conexões que está sendo criado, no meu caso eis/DB/DTExample. Sua tela deverá ficar como apresentado abaixo:

Clique em finish.

Para ver se a configuração ocorreu com sucesso, exapanda javax.resource.cci.ConnectionFactory. Você irá notar que o nome do conjunto de conexões constará na lista, conforme apresentado abaixo:

Logo após, clique em eis/DB/DTExample, uma tela com suas propriedades deverá abrir, neste ponto, vamos definir um valor para xADataSourceName que é o mesmo passado na JNDI no início do post jdbc/DTExample.

Agora, clique em deployments novamente e selecione DbAdapter, com ele selecionado, clique sobre o botão de update para atualizar as modificações efetuadas. Nas telas que serão apresentadas pode-se manter o valor padrão e clicar em next e finish para concluir a atualização.

Alterando Sequence no Weblogic

Por padrão, todo conjunto de conexão criado no weblogic tráz em sua sequence o valor 50, como valor inicial. Para resolver isso, clique em Deployments > DbAdapter > Configuration > Outbound Connection Pools, exapandir javax.resource.cci.ConnectionFactory e selecionar a conexão que deseja alterar, que no meu caso é o eis/DB/DTExample.

Na propriedade sequencePreallocationSize altere o valor de 50 para 1, assim, quando a sequence for requisitada iniciará a partir do número 1 e não mais de 50.

Agora, clique em deployments novamente e selecione DbAdapter, com ele selecionado, clique sobre o botão de update para atualizar as modificações efetuadas. Nas telas que serão apresentadas, pode-se manter o valor padrão e clicar em next e finish para concluir a atualização.

Introdução ao BPEL

Nos últimos tempos tenho trabalho com conceitos inerentes a arquitetura SOA-Service Oriented Architecture (veja mais aqui). Trata-se de uma arquitetura que permite a criação de serviços de negócios que podem ser reutilizados e compartilhados. Dentre os serviços, temos o BPEL-Business Process Execution Language (veja mais aqui). BPEL é uma linguagem de orquestração baseada em XML que descreve processos de negócios executáveis.
Bem, mas nesse momento, não entrarei em méritos explicativos, vamos colocar a mão na massa que é mais interessante.

Já com o JDeveloper aberto, vá em File > New, escolha Applications e em itens selecione SOA Application, conforme apresentado abaixo:

Na tela seguinte de um nome para sua aplicação.

Agora um nome para o projeto, em available e selected, marque as opções conforme a figura abaixo:

Na tela seguinte você pode definir um nome para o composite, e o template que deseja iniciar. Para o nosso exemplo, selecione a opção Composite With BPEL Process, feito isso, clique em finish.

Deverá apresentar uma tela conforme figura abaixo:

Essa tela é apresentada porque selecionamos a opção de inserir um BPEL no composite. Nela, podemos definir algumas informações, como o nome do BPEL, a url, o template do BPEL e sua especificação. Para o nosso exemplo, irei utilizar a especificaçao 2.0, o nome do BPEL será BPELIntroducao, nosso Namespace http://introducao.bpel.gualda.com.br/IntroducaoBPEL/IntroducaoBPEL/BPELIntroducao (o namespace pode ser matindo de forma original ou alterado conforme sua necessidade). O próximo passo é a definição do nosso template, veja na figura abaixo que temos várias definições, como por exemplo, Asynchronous e Synchronous, onde o primeiro envia uma requisição e não espera resposta para prosseguir, caso contrário ocorre no segundo. Neste nosso exemplo, vamos escolher a opção Synchronous e clicar em OK.

Sua tela deverá estar assim:

Clique com o botão direiro sobre o BPEL e clique em edit, é a partir desse ponto que vamos começar a definir o que o serviço deverá executar. Primeiramente, vamos inserir um Assign entre os componentes de entrada e saída.

Agora vamos alterar o nome da variável de entrada para ficar uma coisa mais amigável. Em Application Navigator, abra o arquivo BPELIntroducao.xsd, este foi criado juntamente com o BPEL, na parte inferior e clique em source, sua tela deverá estar conforme a imagem abaixo:

Altere a variável input para o nome que desejar, em meu caso, irei substituir por nome. Devolta ao BPEL, vamos agora editar o Assign que inserimos, clique com o botão direito, edit. Na tela em que se abre, no lado direito expanda inputVariable > paylod > client:process > client:nome e do lado esquerdo, outputVariable > payload > client:processResponse > client:result. Faça a ligação entre a variável nome criada e a variável result, conforme apresentado abaixo:

Agora, vamos adicionar uma expressão. Arraste a expression builder sobre o result, uma tela conforme abaixo deverá ser apresentada:

Em Functions, selecione String Functions e dê duplo clique sobre concat para adicionar ao campo Expression na parte superior. Dentro do concat, insira a mensagem que desejar entre aspas simples e coloque uma vírgula logo em seguida. Agora, em BPEL Variables selecione client:nome e dê duplo clique para adicionar após a mensagem inserida.

Clique em OK e OK novamente.

Agora efetue o deploy da aplicação. Veja aqui como fazer deploy: http://brunogualda.com.br/como-efetuar-deploy-do-jdeveloper-no-weblogic/.

Após efetuar o deploy, clique sobre a aplicação, deverá carregar uma tela conforme apresentada abaixo.

Clique em Test, na variável nome, insira o nome e clique em Test Web Service:

Veja agora que o valor passado na variável foi concatenado com o valor passado no assing.

Download do projeto

Como efetuar deploy do Jdeveloper no Weblogic

Neste post irei explicar como efetuar o deploy de aplicações do Jdeveloper no Weblogic. Vá em Application Navigator clique com o botão direito sobre o projeto, deploy e o nome da aplicação:

Na tela seguinte, selecione Deploy to Application Server:

Agora, selecione a número da versão, pode deixar 1.0 mesmo e marque a opção Overwrite any existing composites with the same revision ID.

Selecione o servidor que está startado. Caso não apareça nenhum servidor, basta adicionar um clicando no sinal de +.

Confirme os dados, clique em next e finish.

Aguarde o deploy terminar, acesse o servidor na url: http://localhost:7001/em (no meu caso), e faça o login.

Bom pessoal, é isso ai, até mais….

Testebot