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.
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.
No Step 4, clique no botão Import Tables, escolha a tabela JOBS e clique em Next.
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.
Clique duas vezes no componente CreateEmployeeBPELProcess e configure o processo de acordo com a imagem abaixo.
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.
Clique duas vezes no primeiro compotente Assign, ligue os parâmetros e clique em OK.
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.
Clique duas vezes no segundo compotente Assign, ligue os parâmetros e clique em OK.
Clique duas vezes no componente If, defina a condição e clique em OK.
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.
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.
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.
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.