Acciones

La acción es el efecto de una condición satisfecha. Una condición puede tener de cero a varias acciones, ejecutadas de arriba hacia abajo, y cada acción ve lo que escribieron las anteriores.

Las reglas a continuación valen para todas las acciones. La configuración y el comportamiento específicos de cada acción están en su propia página.

Origen, ajustes y resultado

Tres acciones consultan un dato y publican lo que encontraron: ejecutar análisis, enriquecer y extraer prefijo de IP. En las tres la configuración sigue el mismo formato:

  • Origen: qué campos del evento alimentan la acción, cuando la acción lee alguno;
  • Ajustes: parámetros propios de la acción, entre ellos el Resultado, nombre bajo el cual la acción publica las lecturas;
  • Publica: las claves que produce la acción, listadas en Claves publicadas.

Resultados publicados

Una acción productora no graba nada en el evento. La acción publica cada lectura como una variable temporal, en el formato %<resultado>.<clave>. Las condiciones y las acciones siguientes leen esa variable. Para grabar una lectura en el evento, agregue un completar campo en modo expresión después de la acción productora:

Condición:  $card_bin != null
Acciones:   Enriquecer: Emisor por BIN                 (resultado: issuer_bin)
            Completar campo: issuer_country = %issuer_bin.issuer_country

La lista Claves publicadas presenta cada clave, su tipo y cuándo está presente. Un clic en la clave inserta, justo después de la acción, un Completar campo con la expresión de la clave. Solo falta elegir el campo de destino.

La separación entre lectura y grabación mantiene en el evento solo lo que necesita sobrevivir a él. Una lectura usada solo para decidir no ocupa un campo.

El nombre del resultado es único en la regla. Dos acciones no pueden publicar bajo el mismo nombre, en ninguna condición. Para ejecutar el mismo análisis o el mismo enriquecimiento dos veces, informe un Resultado propio en cada acción.

La acción no publica la clave que no logró resolver. Un Completar campo que copia una clave ausente no graba nada, y el campo de destino queda como estaba. La elección es intencional. Un campo en blanco sigue siendo comprobable por una condición posterior ($issuer_country == null), y ninguna suposición es mejor que un dato equivocado. En cambio, false y 0 son lecturas legítimas y se graban normalmente.

Valor fijo o expresión

Las dos acciones que graban un valor, completar campo y definir variable temporal, aceptan ese valor de dos formas, elegidas en un selector al lado del destino:

  • Valor fijo: el contenido se graba exactamente como fue escrito. Nada dentro de él se interpreta: en valor fijo, $amount graba el texto $amount.
  • Expresión: el contenido se interpreta, y lo que se graba es el resultado.

Las acciones creadas antes de esta opción abren en Valor fijo y mantienen el comportamiento anterior.

Una expresión puede ser:

Forma Ejemplo
un campo del evento $issuer_country
una variable temporal %bot.score
un texto, número o booleano "aprobado", 10, true
una unión con concat concat($order_id, "-", %bot.score_cell)
una parte de un texto, con split split($user_email, "@", -1)
un conjunto en texto, con join join(%bot.triggered_cells, ",")

La expresión de una acción sigue la misma sintaxis de las condiciones, con una diferencia: produce un valor, no un verdadero o falso, y no hay comparaciones ni and/or. Como en cualquier condición, una variable temporal leída en la expresión debe haber sido producida por una acción anterior.

Tipos compatibles

Un texto, número o booleano escrito directamente en la expresión es validado por el campo de destino, exactamente como lo sería un valor fijo.

En cambio, un campo, una variable temporal o un concat necesitan tener un tipo compatible con el destino. La conversión solo ocurre cuando no hay pérdida:

Tipo del campo de destino Acepta valor de
Texto cualquier tipo
Entero Entero
Decimal Decimal, Entero
Booleano Booleano
Fecha y hora Fecha y hora

Un decimal no se graba en un campo entero: redondear automáticamente decidiría por el autor de la regla qué hacer con la parte fraccionaria. El camino contrario, un entero en un campo decimal, se acepta. El resultado de concat, split y join siempre es un texto, y por eso solo cabe en un campo de texto.

Una variable temporal no tiene tipo de destino. La variable acepta cualquier valor, incluso un conjunto como %bot.triggered_cells. Copiado solo, el conjunto sigue siendo un conjunto y continúa utilizable a la derecha de un in. Ese mismo conjunto no puede grabarse en un campo, ni usarse dentro de un concat. Para grabarlo en un campo de texto, convierta el conjunto con join.

Valores ausentes

Una expresión que solo copia un valor, como $campo o %variable solos, no graba nada cuando ese valor no existe: el campo de destino queda como estaba, y la variable temporal sigue ausente. Es la misma elección descrita arriba, de no sustituir un dato ausente por una suposición. En cambio, false, 0 y un texto vacío son lecturas legítimas y se graban.

Un concat siempre graba, porque construye un texto nuevo en lugar de copiar uno existente. Las partes ausentes entran como vacío. En cambio, un split con índice fuera del intervalo y un join de un conjunto vacío no graban nada.


Tabla de contenidos