Implementando Commit e Rollback programaticamente em ADF Task Flow

Tweet about this on TwitterShare on Facebook5Share on LinkedIn2Share on Google+0

Algumas vezes o componente Task Flow Return do ADF Task Flow, não se encaixa nos nossos requisitos de caso de uso, e ai temos que fazer o commit ou rollback da transação programaticamente. Dois casos que você provavelmente irá usar esse recurso são:

  • Fazer o commit ou rollback da transação e permanecer no mesmo Task Flow.
  • Adicionar algum código mais complexo para essas operações (Commit e Rollback).

Nesse post iremos fazer commit de uma transação programaticamente permanecendo na mesma página. Nós também iremos fazer rollback programaticamente.
Baixe a aplicação de exemplo: CommitRollbackProgrammaticApp.zip

Crie uma aplicação de acordo com a imagem abaixo.

implementing-commit-and-rollback-programmatically-in-adf-task-flow1

Configure a Task Flow.

implementing-commit-and-rollback-programmatically-in-adf-task-flow2

implementing-commit-and-rollback-programmatically-in-adf-task-flow3

Clique duas vezes em ViewDepartment e crie a página.
Arraste o DepartmentView1 do painel Data Controls e solte dentro da página ViewDepartment. Selecione Table | ADF Read-only Table.
Selecione Single Row e clique em OK.
Inclua um botão após a tag af:table, e configure-o.

implementing-commit-and-rollback-programmatically-in-adf-task-flow4

Vá até o DepartmentTaskFlow, clique duas vezes em EditDepartment e crie a página.
Arraste o DepartmentView1 do painel Data Controls e solte dentro da página EditDepartment. Selecione Form | ADF Read-only Form, e clique em OK.
Inclua dois botões após a tag af:panelFormLayout, e configure-os.

implementing-commit-and-rollback-programmatically-in-adf-task-flow5

Vá até o DepartmentTaskFlow, clique duas vezes em Commit e crie o DepartmentBean.
Crie o método commit também.

implementing-commit-and-rollback-programmatically-in-adf-task-flow6

implementing-commit-and-rollback-programmatically-in-adf-task-flow7

Vá até o DepartmentTaskFlow, clique duas vezes em Rollback e selecione o DepartmentBean.
Crie o método rollback.

implementing-commit-and-rollback-programmatically-in-adf-task-flow8

Vá até o DepartmentBean e implemente os métodos com esses trechos de código.

public void commit() {
   BindingContext bc = BindingContext.getCurrent();
   String dcfName = bc.getCurrentDataControlFrame();
   DataControlFrame dcf = bc.findDataControlFrame(dcfName);
   dcf.commit();
}

public void rollback() {
   BindingContext bc = BindingContext.getCurrent();
   String dcfName = bc.getCurrentDataControlFrame();
   DataControlFrame dcf = bc.findDataControlFrame(dcfName);
   if (dcf.isTransactionDirty()) {
      dcf.rollback();
   }
}

implementing-commit-and-rollback-programmatically-in-adf-task-flow9

Agora temos que definir a propriedade Fixed Outcome dos componentes Commit e Rollback.
Vá até o DepartmentTaskFlow, selecione o componente Commit e altere a propriedade Fixed Outcome para commit. Depois, selecione o componente Rollback e altere a propriedade Fixed Outcome para goViewDepartment.

implementing-commit-and-rollback-programmatically-in-adf-task-flow10

implementing-commit-and-rollback-programmatically-in-adf-task-flow11

Salve tudo, e execute o Task Flow.
Para testar a operação de commit, selecione um departamento e clique em Edit.

implementing-commit-and-rollback-programmatically-in-adf-task-flow12

Faça algumas alterações e clique em Save.

implementing-commit-and-rollback-programmatically-in-adf-task-flow13

Clique em Back para ir a lista de departamentos.
Observe o departamento que você editou.

implementing-commit-and-rollback-programmatically-in-adf-task-flow14

Para testar a operação de rollback, selecione outro departamento e faça algumas alterações.

implementing-commit-and-rollback-programmatically-in-adf-task-flow15

implementing-commit-and-rollback-programmatically-in-adf-task-flow16

Se você apenas clicar em Back, as alterações serão desfeitas.

implementing-commit-and-rollback-programmatically-in-adf-task-flow17

Tweet about this on TwitterShare on Facebook5Share on LinkedIn2Share 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 *