DB Adapter no SOA Suite
Quando você tem um processo BPEL, e ele precisa executar uma operação em uma tabela de banco de dados, por exemplo, inserir um funcionário, você tem que usar o adaptador de banco de dados. O adaptador de banco de dados expõe ao SOA, tabelas e SQL de forma transparente e não intrusiva.
Neste post, vou criar um Processo BPEL para inserir funcionários na tabela EMPLOYEES do HR Schema. Melhores práticas, tais como a utilização de MDS e Mediador, não são o objetivo deste post. Faça o download do aplicativo de amostra:
http://waslleysouza.com.br/wp-content/uploads/2014/09/SOADBAdapterApp.zip
Crie uma aplicação SOA.
No Step 1, defina o Application Name e Application Package Prefix.
No Step 2, defina o Project Name.
No Step 3, escolha Empty Composite e clique em Finish para criar a aplicação.
Crie o XSD de funcionários.
Na janela Applications, clique com o botão direito na pasta Schemas dentro do Projeto e escolha New > From Gallery.
Na caixa de diálogo New Gallery, escolha SOA Tier > Interfaces > XML Schema, e clique em OK.
Defina o File Name e Target Namespace, e clique em OK.
Cole o seguinte código dentro do arquivo XSD:
<xsd:element name="createEmployeeRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="employee" type="employeeType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="createEmployeeResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="status" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="employeeType">
<xsd:sequence>
<xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
<xsd:element name="lastName" type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
<xsd:element name="hireDate" type="xsd:date"/>
<xsd:element name="jobId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Crie o contrato de serviço (WSDL).
Na janela Applications, clique com o botão direito na pasta WSDLs dentro do Projeto e escolha New > From Gallery.
Na janela New Gallery, escolha SOA Tier > Interfaces > SOA WSDL Document, e clique em OK.
Na caixa de diálogo Create WSDL, preencha o formulário e clique em OK.
Abra o arquivo EmployeeProject.
Para criar o processo BPEL, clique com o botão direito na seção Components, e escolha Insert > BPEL Process.
Na caixa de diálogo Create BPEL Process, preencha o formulário e clique em OK.
Para criar o Database Adapter, clique com o botão direito na seção External References e escolha Insert > Database.
No Step 1, defina o DBAdapter Name e clique em Avançar.
No Step 2, escolha a conexão de banco de dados, defina o JNDI Name e clique em Avançar.
No Step 3, escolha a opção Insert Only e clique em Avançar.
No Step 4, clique no botão Import Tables, escolha a tabela EMPLOYEES do HR Schema e clique em Avançar.
No Step 5, clique em Next.
No Step 6, clique em Next.
No Step 7, clique no botão Search, selecione EMPLOYEES_SEQ como Sequence e clique em Avançar.
Desta forma, a operação de inserção, vai usar essa seqüência para gerar uma chave única.
No Step 8, clique em Next.
No Step 9, clique em Finish.
Crie uma ligação entre o CreateEmployeeBPELProcess e o HrDbReference.
Dê um clique duplo no componente CreateEmployeeBPELProcess para criar o fluxo do processo.
Arraste dois compoentes Assign e um Invoke, e solte dentro do processo.
Crie uma ligação entre o Invoke e o HrDbReference.
No Edit Invoke, preencha o formulário, crie as variáveis de entrada e de saída, e clique em OK.
Clique duas vezes no primeiro compotente Assign, ligue os parâmetros e clique em OK.
Clique duas vezes no segundo compotente Assign, ligue uma expressão ‘Sucesso’ para o parâmetro de status da variável de saída, e clique em OK.
Nós terminamos nosso processo BPEL!
Agora, inicie o Integrated WebLogic Server e vá para o WebLogic Server Administration Console.
Vá para Services > Data Sources e crie um novo.
Vá para Deployments e clique em DbAdapter.
Vá para a guia Configuration e, em seguida, Outbound Connection Pools.
Clique no botão New, escolha javax.resource.cci.ConnectionFactory e crie uma nova Outbound Connection.
Clique na Outbound Connection que você criou e defina:
- sequencePreallocationSize para coincidir com o valor de incremento em sua seqüência (que é 1 por padrão).
- XADataSourceName para o JNDI Name de seu Data Source.
Clique em Salvar.
Vá para Deployments e atualize o DbAdapter.
Volte para o JDeveloper e implante seu projeto SOA no Integrated WebLogic Server.
Vá para o Enterprise Manager (EM) e teste o serviço.