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,
$amountgrava 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
- Preencher campo - grava um valor em um campo do evento
- Definir variável temporária - grava um valor temporário, sem persistir no evento
- Somar em variável temporária - soma um passo a um contador temporário, sem persistir no evento
- Enriquecer - consulta um dado externo e publica o resultado
- Extrair prefixo do IP - reduz um endereço IP à rede a que ele pertence
- Adicionar à lista - acrescenta um valor a uma lista da conta, com validade
- Executar análise - avalia uma análise do tipo de evento e publica o resultado
- Registrar análise - alimenta as janelas de uma análise com o evento atual