Ações

A ação é o efeito de uma condição satisfeita. Uma condição pode ter de zero a várias ações, executadas de cima para baixo, e cada ação enxerga o que as anteriores escreveram.

As regras abaixo valem para todas as ações. A configuração e o comportamento específicos de cada ação estão na sua própria página.

Origem, ajustes e resultado

Três ações consultam um dado e publicam o que encontraram: executar análise, enriquecer e extrair prefixo do IP. Nas três a configuração segue o mesmo formato:

  • Origem: quais campos do evento alimentam a ação, quando a ação lê algum;
  • Ajustes: parâmetros próprios da ação, entre eles o Resultado, nome sob o qual a ação publica as leituras;
  • Publica: as chaves que a ação produz, listadas em Chaves publicadas.

Resultados publicados

Uma ação produtora não grava nada no evento. A ação publica cada leitura como uma variável temporária, no formato %<resultado>.<chave>. As condições e as ações seguintes leem essa variável. Para gravar uma leitura no evento, acrescente um preencher campo em modo expressão depois da ação produtora:

Condição:  $card_bin != null
Ações:     Enriquecer: Emissor pelo BIN               (resultado: issuer_bin)
           Preencher campo: issuer_country = %issuer_bin.issuer_country

A lista Chaves publicadas apresenta cada chave, o seu tipo e quando ela está presente. Um clique na chave insere, logo depois da ação, um Preencher campo com a expressão da chave. Falta apenas escolher o campo de destino.

A separação entre leitura e gravação mantém no evento apenas o que precisa sobreviver a ele. Uma leitura usada só para decidir não ocupa um campo.

O nome do resultado é único na regra. Duas ações não podem publicar sob o mesmo nome, em nenhuma condição. Para executar a mesma análise ou o mesmo enriquecimento duas vezes, informe um Resultado próprio em cada ação.

A ação não publica a chave que não conseguiu resolver. Um Preencher campo que copia uma chave ausente não grava nada, e o campo de destino continua como estava. A escolha é intencional. Um campo em branco continua testável por uma condição posterior ($issuer_country == null), e nenhum palpite é melhor que um dado errado. Já false e 0 são leituras legítimas e são gravadas normalmente.

Valor fixo ou expressão

As duas ações que gravam um valor, preencher campo e definir variável temporária, aceitam esse valor de duas formas, escolhidas em um seletor ao lado do destino:

  • Valor fixo: o conteúdo é gravado exatamente como foi escrito. Nada dentro dele é interpretado: em valor fixo, $amount grava o texto $amount.
  • Expressão: o conteúdo é interpretado, e o que se grava é o resultado.

Ações criadas antes desta opção abrem em Valor fixo e mantêm o comportamento anterior.

Uma expressão pode ser:

Forma Exemplo
um campo do evento $issuer_country
uma variável temporária %bot.score
um texto, número ou booleano "aprovado", 10, true
uma junção com concat concat($order_id, "-", %bot.score_cell)
uma parte de um texto, com split split($user_email, "@", -1)
um conjunto em texto, com join join(%bot.triggered_cells, ",")

A expressão de uma ação segue a mesma sintaxe das condições, com uma diferença: ela produz um valor, não um verdadeiro ou falso, e não há comparações nem and/or. Como em qualquer condição, uma variável temporária lida na expressão precisa ter sido produzida por uma ação anterior.

Tipos compatíveis

Um texto, número ou booleano escrito diretamente na expressão é validado pelo campo de destino, exatamente como um valor fixo seria.

Já um campo, uma variável temporária ou um concat precisam ter tipo compatível com o destino. A conversão só acontece quando não há perda:

Tipo do campo de destino Aceita valor de
Texto qualquer tipo
Inteiro Inteiro
Decimal Decimal, Inteiro
Booleano Booleano
Data e hora Data e hora

Um decimal não é gravado em um campo inteiro: arredondar automaticamente decidiria pelo autor da regra o que fazer com a parte fracionária. O caminho contrário, um inteiro em um campo decimal, é aceito. O resultado de concat, split e join é sempre um texto, e por isso só cabe em campo de texto.

Uma variável temporária não tem tipo de destino. A variável aceita qualquer valor, inclusive um conjunto como %bot.triggered_cells. Copiado sozinho, o conjunto continua sendo um conjunto e segue utilizável à direita de um in. Esse mesmo conjunto não pode ser gravado em um campo, nem usado dentro de um concat. Para gravá-lo em um campo de texto, converta o conjunto com join.

Valores ausentes

Uma expressão que apenas copia um valor, como $campo ou %variavel sozinhos, não grava nada quando esse valor não existe: o campo de destino fica como estava, e a variável temporária continua ausente. É a mesma escolha descrita acima, de não substituir um dado ausente por um palpite. Já false, 0 e um texto vazio são leituras legítimas e são gravados.

Um concat sempre grava, porque constrói um texto novo em vez de copiar um existente. As partes ausentes entram como vazio. Já um split com índice fora do intervalo e um join de conjunto vazio não gravam nada.


Índice