TMACUL

TRIGGERS (Parte 02) 21/10/2015

Blog Post created by TMACUL Champion on Jan 1, 2016

Dando continuidade ao assunto, hoje falarei sobre as triggers de ATRIBUTO.

As triggers podem ser utilizadas quando estamos declarando um novo objeto ou quando estamos modificando um já existente. Para isso são usadas duas palavras chave: OBJECT e MODIFY.

Para fins didáticos, vou focar este post utilizando a palavra chave MODIFY devido a algumas diferenças de sintaxe da declaração OBJECT.

Vamos lá...

 

Basicamente, as triggers de atributo possuem uma condição e uma ação, mas algumas delas podem permitir outros parâmetros de execução.

 

Tipos de evento

ON_NEW DEFAULT valor;

ON_CI SET valor;

ON_DB_INIT SET valor;

ON_PRE_VAL metodo( args ) seq [ timeout [ acao_timeout ] ] [ FILTER (condicao) ] ;

ON_POST_VAL metodo( args ) seq [ timeout [ acao_timeout ] ] [ FILTER (condicao) ];

ON_POST_VAL_ASYNC metodo( args ) seq [ timeout [ acao_timeout ] ] [ FILTER (condicao) ] ;

 

Onde:

evento = ON_NEW, ON_CI, etc

valor = valor que será armazenado no atributo. Também podem ser utilizadas as constantes USER e NOW que armazena o nome do usuário que executou a ação ou a data e hora, respectivamente.

 

metodo = Nome do metodo SPEL que será executado.

args = Lista de atributos separados por vírgula que serão repassados ao método como argumento de execução

seq = Número que define a ordem de execução da trigger dentro do evento

timeout = [opcional] Especifica o número máximo de segundos que a trigger pode levar pra ser executada. O valor padrão é definido na variável de ambiente NX_BPTIMEMOUT.

acao_timeout = [opcional] Especifica o que deve ser feito se um erro ocorrer ou o tempo de timeout for atingido. ABORT e IGNORE são as ações possíveis. Se um timeout for especificado, a ação padrão será IGNORE, caso contrário, a ação será ABORT.

FILTER condicao = [opcional]

 

UTILIZAÇÃO:

 

Evento: ON_NEW

Função: Inicializa um atributo definindo um valor quando o objeto estiver sendo criado.

Exemplo: MODIFY chg log_agent { ON_NEW DEFAULT USER; };

 

Evento: ON_CI

Função: Inicializa um atributo definindo um valor que será armazenado quando o objeto for salvo.

Exemplo: MODIFY chg modified_date { ON_CI SET NOW ; };

 

Evento: ON_DB_INIT

Função: Inicializa um atributo de forma similar ao evento ON_CI. Mas não sei a diferença. (???)

Exemplo: MODIFY chg modified_date { ON_DB_INIT SET NOW ; };

 

Evento: ON_PRE_VAL

Função: Valida o valor de um atributo antes que o processo de "check_in" do objeto seja feito. Este evento é executado antes da operação "set_val". Caso este evento de validação retorne um erro, a variável msg[0] será populada.

Exemplo: MODIFY chg sched_start_date {ON_PRE_VAL zvalida_data(open_date, sched_start_date) 100 FILTER (delete_flag != 1); };

 

Evento: ON_POST_VAL

Função: Chamar uma função SPEL depois que um atributo tiver um novo valor definido. Este evento é executado após a operação "set_val". Não existe retorno de erro para este evento.

Exemplo: MODIFY chg sched_start_date {ON_POST_VAL zfazalgo(open_date, sched_start_date) 100 FILTER (delete_flag != 1); };

 

Evento: ON_POST_VAL_ASYNC

Função: Igual ao evento ON_POST_VAL mas é executado de forma ***íncrona.

Exemplo: MODIFY chg sched_start_date {ON_POST_VAL_ASYNC zfazalgo(open_date, sched_start_date) 100 FILTER (delete_flag != 1); };

 

Amanhã falarei sobre os operadores e filtros de condição nas triggers.

Até lá.

 

Publicado Originalmente: 21 de outubro de 2015 às 15:01

Em: CA SDM Brasil - facebook

Por: daniel-bighelini

Outcomes