Gerenciando Idempotência no SOA Suite

Tweet about this on TwitterShare on Facebook0Share on LinkedIn23Share on Google+0

De acordo com a documentação do SOA Suite 12c, uma atividade idempotente é uma atividade que pode ser repetida de forma segura. Isso significa que se o seu processo BPEL falhar, uma operação de rollback será executada e todos os dados não serão persistidos no banco de dados. OK, mas às vezes você quer persistir alguns dados até mesmo se seu processo BPEL falhar. Como você pode conseguir isso? Defina a operação como nonidempotent e o Dehydration ocorrerá após esta operação.

Neste post, você vai aprender a configurar uma operação como nonidempotent.
Como ponto de partida, vamos usar o aplicativo criado aqui: Usando DB Adapter no SOA Suite 12c.
Nós vamos adicionar um novo adaptador de banco de dados para gerenciar a tabela Jobs, e quando tentarmos adicionar um novo empregado com uma nova ocupação, a ocupação será mantida mesmo que o processo BPEL falhe.

Faça o download do aplicativo de amostra: SOAIdempotentApp.zip.

Abra o arquivo EmployeeProject.
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 nome como JOBSDbReference e clique em Next.

managing-idempotence-in-soa-suite1

No Step 2, escolha a conexão de banco de dados, defina o JNDI Name e clique em Next.
No Step 3, escolha as opções Insert Only e Select By Primary Key, e clique em Next.

managing-idempotence-in-soa-suite2

No Step 4, clique no botão Import Tables, escolha a tabela JOBS e clique em Next.

managing-idempotence-in-soa-suite3

Nos Steps 5, 6, 7 and 8, clique em Next.
No Step 9, clique em Finish.

Crie uma ligação entre o CreateEmployeeBPELProcess e o JOBSDbReference.

managing-idempotence-in-soa-suite5

Clique duas vezes no componente CreateEmployeeBPELProcess e configure o processo de acordo com a imagem abaixo.

managing-idempotence-in-soa-suite6

Crie uma ligação entre o primeiro Invoke e o JOBSDbReference.
Na caixa de diálogo Edit Invoke, preencha o formulário, crie as variáveis de entrada e de saída, e clique em OK.

managing-idempotence-in-soa-suite7

Clique duas vezes no primeiro compotente Assign, ligue os parâmetros e clique em OK.

managing-idempotence-in-soa-suite8

Crie uma ligação entre o segundo Invoke e o JOBSDbReference.
Na caixa de diálogo Edit Invoke, preencha o formulário, crie a variável de entrada, e clique em OK.

managing-idempotence-in-soa-suite9

Clique duas vezes no segundo compotente Assign, ligue os parâmetros e clique em OK.

managing-idempotence-in-soa-suite10

Clique duas vezes no componente If, defina a condição e clique em OK.

managing-idempotence-in-soa-suite11

Para forçar um erro, crie uma nova Assertion que valida o comprimento da string e-mail.
Clique duas vezes no componente Invoke_InsertEmployee, adicione uma nova Assertion e clique em OK.

managing-idempotence-in-soa-suite12

Clique duas vezes no JOBSDbReference e vá para a guia Idempotence.
Desmarque a caixa de seleção Idempotent para operação insert e clique em OK.

managing-idempotence-in-soa-suite13

Nós terminamos nosso processo BPEL!
Implante seu projeto SOA no Integrated WebLogic Server, vá para o Enterprise Manager (EM) e teste o serviço.
Quando você tenta adicionar um novo funcionário e define o email com menos de 5 caracteres, o processo funciona bem.

managing-idempotence-in-soa-suite14

managing-idempotence-in-soa-suite15

Quando você tenta adicionar um novo funcionário e define o email com mais de 5 caracteres, o processo falha, mas o novo trabalho é adicionado.

managing-idempotence-in-soa-suite16

managing-idempotence-in-soa-suite17

Tweet about this on TwitterShare on Facebook0Share on LinkedIn23Share on Google+0

Autor: Waslley Souza

Consultor Oracle com foco em tecnologias Oracle Fusion Middleware e SOA. Certificado Oracle WebCenter Portal, Oracle ADF e Java.

Deixe uma resposta

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