ThingWorx Flow > Creación y gestión de acciones personalizadas > Creación de una acción personalizada en ThingWorx Flow 8.4.x
Creación de una acción personalizada en ThingWorx Flow 8.4.x
Las acciones personalizadas se pueden crear en la página Configuración de ThingWorx Flow o en un flujo de trabajo de la ficha Personalizado del panel Acciones.
Complete los siguientes pasos para crear una acción personalizada:
1. Para añadir una acción personalizada a ThingWorx Flow, realice una de las siguientes acciones:
En la página Configuración de ThingWorx Flow, vaya a Acciones personalizadas y pulse en .
En el editor de flujos de trabajo, en el panel Acciones, vaya a la ficha Personalizado y pulse en .
Se abre la ventana Acción personalizada.
2. En el campo Rótulo, introduzca un nombre adecuado para la acción. Este campo es obligatorio.
3. En el editor de código, edite la plantilla rellenada previamente para escribir el código de la acción. Para obtener información detallada sobre cómo definir las distintas partes de la acción, consulte Definición de una acción personalizada.
4. Pulse en Compilar. Si hay errores en el código, se realzan en el editor de código. Después de una compilación correcta, todos los campos de entrada definidos en la sección de entrada de la acción personalizada aparecen en el panel izquierdo.
5. Pulse en Guardar. La acción se añade a la lista de acciones disponibles en la ficha Personalizado del panel Acciones y se puede arrastrar al lienzo para usarla en el flujo de trabajo.
Definición de una acción personalizada
Una acción personalizada es una función JavaScript de Node.js que define la acción. Al crear una nueva acción personalizada, se rellena previamente una plantilla de ejemplo en el editor de código. Utilice esta plantilla como punto de partida para crear la acción personalizada.
Número
Descripción
1
Utilice la función require() del principio del código para importar módulos Node.js para su uso en la acción personalizada. En el código de muestra, la acción importa el módulo request que se puede utilizar para realizar llamadas HTTP simples a sistemas de terceros.
* 
Como protección contra posibles usos incorrectos, solo se pueden importar los siguientes módulos Node.js para su uso en acciones personalizadas:
assert, buffer, crypto, events, http, https, lodash, path, punycode, querystring, request, soap, string_decoder, url, ws, xml2js, zlib
2
this.id: atributo que se utiliza como identificador único para la acción personalizada.
3
this.label: atributo que especifica el nombre de la acción personalizada.
* 
Si se utiliza this.label para definir el título de la acción, sustituye automáticamente el rótulo de acción que se ha introducido en la ventana de la acción personalizada.
4
this.input: atributo JSON que define los campos de entrada que se deben mostrar al configurar la acción de un flujo de trabajo. Hay tres claves JSON para las que se deben asignar valores:
title: (obligatorio) se utiliza internamente como identificador.
type: (obligatorio) se utiliza internamente. El valor de esta clave se debe definir siempre en objeto y no se debe cambiar.
properties: (obligatorio) un atributo JSON que define los campos de entrada y las condiciones de validación, si procede, que aparecen para la acción. Cada campo de entrada debe tener una clave única, por ejemplo, nombre, y definir los valores de los siguientes elementos:
title: (obligatorio) el rótulo que aparece para el campo, como Nombre.
type: (obligatorio) el tipo del campo. Los tipos válidos son cadena, objeto, matriz y cualquiera.
description: (opcional) un mensaje que aparece como sugerencia.
minLenght: (opcional) especifica el número mínimo de caracteres que se deben especificar.
* 
Para que un campo sea obligatorio, defina el valor de minLength en 1.
5
this.output: un atributo JSON que define los campos de salida que devuelve la acción y están disponibles en el resto del flujo de trabajo. Hay tres claves JSON para las que se deben asignar valores:
title: (obligatorio) se utiliza internamente como identificador.
type: (obligatorio) se utiliza internamente. El valor de esta clave se debe definir siempre en objeto y no se debe cambiar.
properties: (obligatorio) un atributo JSON que define los campos de salida. Cada campo de salida debe tener una clave única, por ejemplo, estado, y definir los valores de los siguientes elementos:
title: (obligatorio) el rótulo que aparece para el campo, como estado.
type: (obligatorio) el tipo del campo. Los tipos válidos son cadena, objeto, matriz y cualquiera.
6
this.execute: función que define la lógica del programa que se ejecuta cuando se ejecuta la acción dentro de un flujo de trabajo. La función debe definir los dos parámetros de función siguientes:
input: un objeto JSON que contiene los valores de los parámetros de entrada en tiempo de ejecución del flujo de trabajo. Se puede hacer referencia a los valores mediante las claves de campo de entrada definidas en el atributo this.input de la acción.
output: una función de llamada que se debe llamar para pasar los valores de salida al flujo de trabajo. Indica que se ha completado la acción. La función tiene el formato callback(err,output):
err: se utiliza para informar de los errores que se hayan producido en el flujo de trabajo. Si no se producen errores, se utiliza nulo.
output: un objeto JSON con valores para cada una de las claves definidas en el atributo this.output de la acción.
* 
Si se migra de ThingWorx Flow 8.4.x a ThingWorx Flow 8.5, las acciones personalizadas que se han creado en ThingWorx Flow 8.4.x siguen funcionando en ThingWorx Flow 8.5. Se puede añadir soporte de localización para los campos de entrada y salida de la acción personalizada. Sin embargo, no se puede localizar el rótulo de la acción personalizada que se ha creado en ThingWorx Flow 8.4. x.