Condiciones en transformaciones: cuándo se ejecuta una regla

Cómo funcionan las condiciones de reglas: cualquiera, igual, mayor que, contiene subcadena, vacío, expresión regular y comprobaciones con otros nodos o columnas.

Una condición en una transformación responde a una pregunta: ¿debe ejecutarse esta regla ahora o Eofferix debe omitirla y continuar con la siguiente? Por ejemplo: si el precio es mayor que 100, añadir margen; si el SKU no está vacío, añadir un prefijo; si el valor contiene USD, eliminar esa subcadena.

Las mismas comprobaciones pueden aparecer en transformaciones y en condiciones de exportación, pero el resultado es distinto. Una transformación cambia el valor de un campo. Una condición de exportación decide si un campo, fila, producto o elemento XML/JSON aparece en el archivo final.

Dónde Se Usa La Condición

En una fila de transformación, la condición está entre la fuente del valor y la acción. Eofferix toma primero el valor de la fuente seleccionada, comprueba la condición y solo después ejecuta la acción.

  • Fuente - el valor actual u otro nodo, atributo, columna o valor del sistema.
  • Condición - la comprobación: cualquiera, igual, mayor que, contiene subcadena, vacío, expresión regular y otras opciones.
  • Valor de condición - el valor usado para comparar. Condiciones como "cualquiera", "vacío" y "no vacío" no lo necesitan.
  • Acción - qué hacer si la condición se cumple: reemplazar, eliminar espacios, aumentar en porcentaje, no cargar el campo, etc.

La condición no tiene que usar el campo actual. Por ejemplo, el valor Disponibilidad puede cambiar según el nodo vecino stock, y el precio puede cambiar según la moneda o una marca de actividad.

Antes O Después De Las Transformaciones

Dentro de una cadena de transformaciones, las reglas se ejecutan de arriba abajo. Cada fila recibe el resultado de la fila anterior. Si necesitas limpiar primero un precio de espacios y moneda y luego comprobarlo como número, coloca las reglas de limpieza por encima de la condición numérica.

Referencia De Condiciones

La referencia deja solo las columnas útiles: nombre de la condición, cuándo usarla y cómo se comporta. No hace falta una columna separada de Ejemplo porque los escenarios prácticos están más abajo.

CondiciónCuándo usarComportamiento
cualquieraLa regla debe ejecutarse siempre.Coincide con cualquier valor, incluso vacío.
igualNecesitas una coincidencia exacta.Compara el valor completo. Las mayúsculas importan solo si se activa la sensibilidad a mayúsculas.
no igualNecesitas procesar todos los valores excepto uno.Coincide cuando el valor es distinto del indicado.
mayor queNecesitas comprobar un número: precio, peso, stock, cantidad.Ambos lados de la comparación se leen como números.
menor queNecesitas encontrar valores por debajo de un umbral.Funciona como comprobación numérica.
mayor o igual queEl propio umbral también debe coincidir.Coincide con un valor igual o superior al umbral.
menor o igual queEl propio umbral también debe coincidir.Coincide con un valor igual o inferior al umbral.
contiene subcadenaNecesitas encontrar un fragmento dentro del texto.Coincide si el texto indicado aparece en cualquier parte del valor.
no contiene subcadenaNecesitas excluir valores con una palabra, código o fragmento concreto.Coincide si el texto indicado no aparece en el valor.
empieza porImporta la primera parte del valor.Coincide si el valor empieza por el texto indicado.
termina enImporta la última parte del valor.Coincide si el valor termina con el texto indicado.
vacíoNecesitas procesar campos sin valor.Una cadena formada solo por espacios se considera vacía.
no vacíoLa acción solo se necesita para valores rellenados.Coincide cuando queda algo después de quitar espacios alrededor del valor.
expresión regularNecesitas comprobar el valor con un patrón.Coincide si la expresión regular encuentra una coincidencia.
no expresión regularNecesitas procesar valores que no encajan con un patrón.Coincide si la expresión regular no encuentra una coincidencia.

Ejemplo Práctico

Abajo hay un fragmento XML de origen y dos variantes de configuración. La primera prepara un precio; la segunda crea el valor de disponibilidad a partir del nodo vecino stock.

<catalog>
  <product>
    <name>Escritorio Nordic</name>
    <sku>SKU-110</sku>
    <price>12 490 USD</price>
    <stock>8</stock>
  </product>
</catalog>
Snapshot XML con valores de producto, precio y stock de origen
El snapshot muestra una versión corta del XML de origen y los valores que pueden usarse en transformaciones.

Variante 1: Preparar El Precio

El precio llega como texto: 12 490 USD. Para obtener un número, las reglas se ejecutan en secuencia: primero limpian el valor y luego comprueban el número preparado.

  1. Condición cualquiera: eliminar espacios del valor actual.
  2. Condición contiene subcadena con valor USD: reemplazar la subcadena por un valor vacío.
  3. Condición mayor que con valor 100: aumentar el precio un 10%.
Ventana de transformación del precio con condiciones cualquiera, contiene subcadena y mayor que
Cada fila recibe el resultado de la fila anterior, por eso la condición numérica se aplica después de limpiar el precio.
AntesReglas EjecutadasDespués
12 490 USDeliminar espacios, quitar USD, aumentar un 10%13739

Variante 2: Crear Disponibilidad A Partir Del Stock

La disponibilidad puede rellenarse no desde su valor actual, sino desde el nodo vecino stock. Es útil cuando el archivo final necesita un estado textual y el origen contiene solo una cantidad.

  1. Primero, una regla con condición cualquiera define el valor base in_stock.
  2. La regla siguiente comprueba {/catalog/product/stock}. Si el stock es menor o igual que 0, el valor se reemplaza por out_of_stock.
Ventana de transformación de disponibilidad con condición basada en el nodo vecino stock
La fuente de la condición puede ser distinta del campo que se transforma.
Stock De OrigenResultado De Disponibilidad
8in_stock
0out_of_stock

Qué Recordar

  • Para condiciones numéricas, elimina primero moneda, espacios, unidades y otro texto.
  • Para "contiene subcadena", "empieza por" y "termina en", el valor de búsqueda no debe estar vacío.
  • Si necesitas eliminar todo el producto, fila o elemento XML/JSON, usa condiciones de exportación en lugar de transformar solo un campo.
  • Si una regla no se ejecutó, revisa el orden de las filas: quizá la limpieza necesaria debe ocurrir antes.