El Flow Definition Language (FDL) de CloudFlow ofrece funciones integradas para el procesamiento de datos dentro de las definiciones de flujo de trabajo. Utilice estas funciones para manipular cadenas, arreglos, mapas y datos JSON sin necesidad de escribir código de funciones externas.
Para usar una función integrada en un constructor de entrada o salida, agregue .$ a la clave del constructor. Esto indica a CloudFlow que evalúe el valor como una expresión. Sin el sufijo .$, el valor se trata como una cadena simple. Se admite un máximo de 10 llamadas a funciones anidadas por expresión.
Ejemplo: Uso de una función integrada en un constructor FDL
{
"inputMappings": {
"greeting.$": "format('Hello, {}', $input.username)"
}
}
En este ejemplo, greeting.$ indica a CloudFlow que el valor es una expresión que contiene la función format, no una cadena literal.
Referencia de funciones
A continuación se presentan tablas con todas las funciones integradas, agrupadas por categoría.
Operaciones comunes
|
Función |
Propósito |
|
Formatea una cadena mediante marcadores de posición |
|
|
Obtiene la longitud de una cadena, un arreglo o un mapa |
|
|
Compara una cadena con una expresión regular |
|
|
Divide una cadena según un delimitador |
Operaciones con arreglos
|
Función |
Propósito |
|
Comprueba si un arreglo contiene un elemento específico |
|
|
Elimina elementos duplicados de un arreglo |
|
|
Convierte un número variable de argumentos en un arreglo |
Operaciones con mapas
|
Función |
Propósito |
|
Extrae todas las claves de un objeto JSON o mapa como un arreglo |
|
|
Extrae todos los valores de un objeto JSON o mapa como un arreglo |
|
|
Extrae valores de un mapa y los divide en subarreglos según un tamaño de paso |
Codificación y decodificación de datos
|
Función |
Propósito |
|
Codifica una cadena a Base64 |
|
|
Decodifica una cadena codificada en Base64 |
Cálculo de hash y generación de UUID
|
Función |
Propósito |
|
Genera un valor hash mediante un algoritmo especificado |
|
|
Genera un identificador único universal (UUID) |
Operaciones con datos JSON
|
Función |
Propósito |
|
Convierte un objeto JSON o mapa en una cadena JSON |
|
|
Analiza sintácticamente una cadena JSON para convertirla en un objeto JSON o mapa |
|
|
Combina dos objetos JSON o mapas en uno solo |
Operaciones comunes
format
Formatea una cadena al reemplazar los marcadores de posición {} con los argumentos proporcionados, en orden.
Sintaxis
format(template, arg1, arg2, ...)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
template |
|
Sí |
Una cadena plantilla que contiene marcadores de posición |
|
arg1, arg2, ... |
|
Sí |
Valores para sustituir en los marcadores de posición, en orden |
Tipo de retorno: string
Ejemplos
format("hello {}", "world")
// Returns: "hello world"
Uso en FDL:
{
"message.$": "format('Task {} completed at {}', $input.taskName, $input.timestamp)"
}
length
Devuelve la longitud de una cadena, un arreglo o un mapa.
Para una cadena, devuelve el número de caracteres.
Para un arreglo, devuelve el número de elementos.
Para un mapa, devuelve el número de pares clave-valor.
Sintaxis
length(value)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
value |
|
Sí |
La cadena, arreglo o mapa que se va a medir |
Tipo de retorno: int
Ejemplos
length([1, 2, 3])
// Returns: 3
length({"name": "Tom", "age": 10})
// Returns: 2
length("name")
// Returns: 4
Uso en FDL:
{
"itemCount.$": "length($input.orderItems)"
}
regexMatchString
Comprueba si una cadena coincide con un patrón de expresión regular. Devuelve true si el patrón coincide; de lo contrario, devuelve false.
Sintaxis
regexMatchString(pattern, value)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
pattern |
|
Sí |
El patrón de expresión regular |
|
value |
|
Sí |
La cadena que se va a comparar con el patrón |
Tipo de retorno: bool
Ejemplos
regexMatchString("p([a-z]+)ch", "peach")
// Returns: true
regexMatchString("p([a-z]+)ch", "p123ch")
// Returns: false
Uso en FDL:
{
"isValid.$": "regexMatchString('^[a-zA-Z0-9]+$', $input.userId)"
}
split
Divide una cadena en un arreglo de subcadenas según un delimitador.
Sintaxis
split(value, delimiter)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
value |
|
Sí |
La cadena que se va a dividir |
|
delimiter |
|
Sí |
El delimitador para realizar la división |
Tipo de retorno: []string
Ejemplos
split("item1,item2,item3", ",")
// Returns: ["item1", "item2", "item3"]
Uso en FDL:
{
"tags.$": "split($input.tagString, ',')"
}
Operaciones con arreglos
arrayContains
Verifica si un arreglo contiene un elemento específico. Devuelve true si encuentra el elemento; de lo contrario, devuelve false.
Sintaxis
arrayContains(array, element)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
array |
|
Sí |
El arreglo donde se realizará la búsqueda |
|
element |
|
Sí |
El elemento que se va a buscar |
Tipo de retorno: bool
Ejemplos
arrayContains(["Tom", 10], 10)
// Returns: true
arrayContains(["Tom", 10], "Jack")
// Returns: false
Uso en FDL:
{
"isAllowed.$": "arrayContains($input.allowedRegions, $input.targetRegion)"
}
arrayUnique
Elimina los elementos duplicados de un arreglo y devuelve el resultado sin duplicados.
Sintaxis
arrayUnique(array)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
array |
|
Sí |
El arreglo al que se eliminarán los duplicados |
Tipo de retorno: []any
Ejemplos
arrayUnique([1, 2, 3, 1])
// Returns: [1, 2, 3]
toArray
Convierte un número variable de argumentos en un solo arreglo.
Sintaxis
toArray(arg1, arg2, ...)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
arg1, arg2, ... |
|
Sí |
Uno o más valores para combinar en un arreglo |
Tipo de retorno: []any
Ejemplos
toArray(1,'strig',$Input.var)
// Returns: []any{1, 'string', $valueOfVar}
Operaciones con mapas
mapKeys
Extrae todas las claves de un objeto JSON o mapa y las devuelve como un arreglo de cadenas.
Sintaxis
mapKeys(map)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
map |
|
Sí |
El objeto JSON o mapa del cual extraer las claves |
Tipo de retorno: []string
Ejemplos
mapKeys({"name": "Tom", "age": 10})
// Returns: ["name", "age"]
mapValues
Extrae todos los valores de un objeto JSON o mapa y los devuelve como un arreglo.
Sintaxis
mapValues(map)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
map |
|
Sí |
El objeto JSON o mapa del cual extraer los valores |
Tipo de retorno: []any
Ejemplos
mapValues({"name": "Tom", "age": 10})
// Returns: ["Tom", 10]
mapValuesPartition
Extrae todos los valores de un objeto JSON o mapa y los particiona en subarreglos de un tamaño especificado.
Sintaxis
mapValuesPartition(map, stepSize)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
map |
|
Sí |
El objeto JSON o mapa del cual extraer los valores |
|
stepSize |
|
Sí |
El número de elementos por subarreglo |
Tipo de retorno: [][]any
Ejemplos
mapValuesPartition({"name": "Tom", "age": 10}, 1)
// Returns: ["Tom"],[10]
Codificación y decodificación de datos
toBase64
Codifica una cadena a Base64.
Sintaxis
toBase64(value)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
value |
|
Sí |
La cadena que se va a codificar |
Tipo de retorno: string
Ejemplos
toBase64("FnF")
// Returns: "Rm5G"
fromBase64
Decodifica una cadena codificada en Base64 a su valor original.
Sintaxis
fromBase64(value)ParametersParameterTypeRequiredDescriptionvaluestringYesThe Base64-encoded string to decodeReturn type: stringExamplesfromBase64("Rm5G")
// Returns: "FnF"
Cálculo de hash y generación de UUID
hash
Genera un valor hash para la entrada dada mediante un algoritmo especificado.
Sintaxis
id="dfc2079465bd1_19"Code" data-tag="codeblock" id="dfc2079465bd1" outputclass="language-bash">hash(input, algorithm)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
input |
|
Sí |
La cadena para calcular el hash |
|
algorithm |
|
Sí |
El algoritmo de hash. Valores compatibles: |
Tipo de retorno: string
Ejemplos
hash("abc", "MD5")
// Returns: "900150983cd24fb0d6963f7d28e17f72"
Uso en FDL:{ "checksum.$": "hash($input.payload, 'SHA-256')" }
uuid
Genera un identificador único universal (UUID).
Sintaxisuuid()
**Parámetros**
Ninguna.
**Tipo de retorno: string**
**Ejemplos**
uuid()
// Returns: "159fd8c1-2ec3-4d7b-b9fd-60b9d8841000"
Uso en FDL uid="dfc2079465bd1_22"e-type="xCode" data-tag="codeblock" id="dfc2079465bd1" outputclass="language-json">{ "requestId.$": "uuid()" }
Operaciones con datos JSON
jsonToString
Convierte un objeto JSON o mapa en su representación de cadena.
Syid="dfc2079465bd1_23"code-type="xCode" data-tag="codeblock" id="dfc2079465bd1" outputclass="language-bash">jsonToString(value)
**Parámetros**
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
value |
|
Sí |
El objeto JSON o mapa que se va a serializar |
**Tipo de retorno: string**
**Ejemplos**
toJSON({"name": "Tom", "age": 10})
// Returns: '{"name": "Tom", "age": 10}'
stringToJson
Analiza sintácticamente una cadena JSON para convertirla en un objeto JSON o mapa.
Sintaxis
stringToJson(value)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
value |
|
Sí |
Una cadena JSON válida |
Tipo de retorno: map[string]any
Ejemplos
stringToJson('{"name": "Tom", "age": 10}')
// Returns: {"name": "Tom", "age": 10}
Uso en FDL:
{
"parsedBody.$": "stringToJson($input.responseBody)"
}
jsonMerge
Combina dos objetos JSON o mapas en uno solo.
jsonMerge(object1, object2)
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
object1 |
|
Sí |
El primer objeto JSON o mapa |
|
object2 |
|
Sí |
El segundo objeto JSON o mapa |
Tipo de retorno: map[string]any
Ejemplos
jsonMerge({"name": "Tom", "age": 10}, {"name": "Tom", "address": "beijing"})
// Returns: {"name": "Tom", "age": 10, "address": "beijing"}
{
"mergedConfig.$": "jsonMerge($input.defaultConfig, $input.userOverrides)"
}