Saltar al contenido principal
Los mapeos de campos y las transformaciones te permiten remodelar datos entre tu workflow y los servicios externos sin escribir código. Se definen dentro del objeto data de los nodes executor en la definición de tu workflow.
Estos campos viven dentro de la propiedad data del node — un objeto flexible de clave-valor que varía según el tipo de node. No son campos separados de primer nivel en el schema del workflow.

Mapeo de entrada


El mapeo de entrada convierte los campos del workflow en los campos que espera un executor. Flowker aplica los mapeos de entrada antes de llamar al servicio externo. Define un array inputMapping en el objeto data del node executor. Cada entrada especifica un source (una ruta de campo del workflow) y un target (el campo del executor al que se mapea).
{
  "id": "executor-balance",
  "type": "executor",
  "name": "Check Balance",
  "data": {
    "providerConfigId": "a1b2c3d4-e5f6-4789-a012-345678901234",
    "inputMapping": [
      { "source": "workflow.customerId", "target": "executor.accountId" },
      { "source": "workflow.amount", "target": "executor.minimumBalance" }
    ]
  }
}

Campos de una entrada de mapeo

CampoTipoRequeridoDescripción
sourcestringJSONPath al valor de origen (p. ej., workflow.customer.cpf).
targetstringJSONPath al campo destino (p. ej., executor.document).
transformationobjectNoTransformación opcional a aplicar durante el mapeo. Consulta Transformaciones en línea.
requiredbooleanNoSi es true, el mapeo falla cuando la ruta de origen no existe. Por defecto es false.

Mapeo de salida


El mapeo de salida extrae campos de la respuesta del executor y los escribe de vuelta en el contexto del workflow. Los nodes posteriores pueden entonces acceder a los valores mapeados. Flowker aplica los mapeos de salida después de recibir la respuesta.
{
  "data": {
    "outputMapping": [
      { "source": "executor.currentBalance", "target": "workflow.balance" },
      { "source": "executor.accountStatus", "target": "workflow.status" }
    ]
  }
}
Aplican los mismos campos de entrada que en el mapeo de entrada (source, target, transformation, required).

Transformaciones en línea


Cuando un simple mapeo campo-a-campo no es suficiente, adjunta un objeto transformation a una entrada de mapeo. La transformación se aplica al valor de origen antes de escribirlo en el destino.
{
  "source": "workflow.phone",
  "target": "executor.phoneNumber",
  "transformation": {
    "type": "remove_characters",
    "config": {
      "characters": ".- ()"
    }
  }
}

Tipos de transformación disponibles

TipoQué haceCampos de configuración
remove_charactersElimina caracteres especificados de una string.characters — string de caracteres a eliminar.
add_prefixAntepone una string al valor del campo.prefix — string a anteponer.
add_suffixAgrega una string al valor del campo.suffix — string a agregar.
to_uppercaseConvierte una string a mayúsculas.
to_lowercaseConvierte una string a minúsculas.

Transformaciones Kazaam


Para transformaciones avanzadas JSON-a-JSON que van más allá del mapeo de campos, define un array transforms en el objeto data del node executor. Estas usan el motor de transformación Kazaam.
{
  "data": {
    "transforms": [
      {
        "operation": "shift",
        "spec": {
          "outputField": "inputField"
        }
      }
    ]
  }
}

Campos de una operación Kazaam

CampoTipoRequeridoDescripción
operationstringEl tipo de operación Kazaam (p. ej., shift, concat, remove_characters).
specobjectConfiguración específica de la operación.
requirebooleanNoSi es true, todas las rutas referenciadas en spec deben existir. Por defecto es false.
Kazaam soporta operaciones como shift (mover/renombrar campos), concat (combinar campos), coalesce (primer valor no nulo) y default (establecer valores de respaldo). Las operaciones personalizadas listadas en transformaciones en línea también están disponibles como operaciones de Kazaam.
Cuando uses transformaciones personalizadas como remove_characters en operaciones de Kazaam, el objeto spec debe incluir un campo path que apunte a la ruta JSON de los datos a transformar. Esto difiere de las transformaciones en línea, donde la ruta se deriva automáticamente del mapeo source/target.

Orden de ejecución


Cuando Flowker ejecuta un node executor:
  1. Los mapeos de entrada se aplican primero — los datos del workflow se mapean al formato de entrada del executor.
  2. Las transformaciones Kazaam se ejecutan a continuación sobre la entrada mapeada (si están definidas).
  3. Se realiza la llamada al executor hacia el servicio externo.
  4. Los mapeos de salida se aplican a la respuesta — los datos del executor se mapean de vuelta al contexto del workflow.

Solución de problemas


Si una transformación falla durante la ejecución, el paso se marca como failed con un mensaje que indica qué mapeo causó el error. Problemas comunes:
  • La ruta de origen no existe — verifica que el node anterior realmente produzca el campo que estás referenciando. Establece required: true para detectar campos faltantes a tiempo.
  • Desajuste de tipo — las conversiones de string a número no son automáticas. Usa una transformación para convertir formatos.
  • Spec de Kazaam inválido — verifica el nombre de la operación y la estructura del spec contra la documentación de Kazaam.