ThingWorx Flow > Creación y gestión de acciones personalizadas > Creación de una acción personalizada en ThingWorx Flow
Creación de una acción personalizada en ThingWorx Flow
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 el tablero 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 .
Utilice uno de los siguientes métodos para crear la estructura de código en la acción personalizada:
Editar la plantilla por defecto rellenada previamente para escribir código propio.
Heredar o copiar una acción existente. Para obtener más información, consulte Diferencias entre heredar y copiar.
2. Para heredar o copiar una acción existente, realice lo siguiente:
a. En la lista Seleccionar la acción de entre las acciones existentes, busque el servicio de terceros cuya acción desea heredar o copiar.
b. Pulse en para expandir la lista de acciones del servicio.
c. Seleccione la acción que desea heredar o copiar.
d. En el campo Usar acción existente para, seleccione Heredar o Copiar.
Si no desea heredar o copiar una acción existente, se puede editar la plantilla rellenada previamente por defecto para escribir el código de la acción personalizada.
3. En el campo Incluir acción en, seleccione una de las siguientes opciones:
Acciones personalizadas: permite añadir la acción personalizada en el grupo Acciones personalizadas de la ficha Personalizado en el editor de flujos de trabajo.
Grupo personalizado: permite añadir la acción personalizada a un grupo personalizado propio. Introduzca el nombre del grupo personalizado en el campo que hay junto a esta opción. El nombre del Grupo personalizado está disponible en la ficha Servicios del editor de flujos de trabajo.
* 
Se pueden añadir acciones personalizadas heredadas o copiadas que no requieran autenticación en ningún grupo personalizado.
No se pueden tener varias acciones con distintos tipos de conector en el mismo grupo personalizado.
Si se ha copiado o heredado una acción existente, la acción personalizada se añade en el mismo servicio por defecto. Por ejemplo, si se ha seleccionado la acción Detector de anomalías en Azure, se selecciona Azure por defecto para el campo Incluir acción bajo.
* 
Esta opción solo aparece si se copia o hereda una acción existente.
4. En el campo Elegir icono, pulse en Inspeccionar para seleccionar un icono para la acción personalizada. Asegúrese de elegir una imagen JPEG o PNG 128 x 128.
* 
Si no se proporciona ningún icono, se utiliza el icono de acción personalizada por defecto.
Si se hereda o copia una acción existente, el icono de acción se utiliza como icono de acción personalizada por defecto.
5. 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.
6. 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 derecho.
7. Pulse en Guardar para guardar la acción personalizada.
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.
En la siguiente tabla se proporciona información sobre las distintas secciones del código rellenadas previamente:
Legend
Descripción
1
Utilice la función require() para importar los 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 para realizar llamadas HTTP simples a sistemas de terceros.
* 
Aquí está disponible la lista de módulos de nodo que se pueden utilizar en las acciones personalizadas.
Para obtener información sobre el uso de estos módulos de nodo en las acciones personalizadas, consulte Personalización de las acciones personalizadas.
2
this.localization.namespace:label: atributo que especifica el nombre de la acción personalizada. En this.localization, en la configuración regional específica, el valor de la variable label define el nombre de la acción personalizada para esa configuración regional.
* 
Si el soporte de localización no es necesario, se puede especificar aquí el nombre de la acción personalizada aquí.
3
this.input: atributo que define los campos de entrada que aparecen al configurar la acción de un flujo de trabajo. Este es un esquema JSON y debe ser válido. Asigne valores para los siguientes parámetros:
title (obligatorio): se utiliza internamente como identificador.
En el código de ejemplo, el valor del campo title es this.localization.namespace:sample_input. En this.localization, en la configuración regional específica, el valor de la variable sample_input define el valor de title para esa configuración regional.
type (obligatorio): se utiliza internamente. Este valor siempre se debe definir en object. No cambie este valor.
properties (obligatorio): permite definir varios campos de entrada y condiciones de validación, si existen, para la acción. Defina una clave única para cada campo de entrada, por ejemplo, first_name, y los siguientes valores para cada campo de entrada:
title: nombre del campo de entrada.
En el código de ejemplo, el valor del campo title es this.localization.namespace:Custom_Action_First_Name. En this.localization, en la configuración regional específica, el valor de la variable Custom_Action_First_Name define el valor de title para esa configuración regional.
* 
Si no se necesita soporte de localización, se puede especificar aquí el nombre del rótulo.
type: tipo del campo. Por ejemplo: string, integer, number, etc.
description: mensaje que aparece como sugerencia.
En el código de ejemplo, el valor del campo description es this.localization.namespace:Enter_Custom_Action_First_Name. En this.localization, en la configuración regional específica, el valor de la variable Enter_Custom_Action_First_Name define el valor de description para esa configuración regional.
minLength: el valor de este campo se debe definir en 1 solo si desea convertir un campo de entrada en obligatorio. Si no desea que un campo de entrada sea obligatorio, quite el atributo del campo de entrada.
4
this.output: atributo que define los campos de salida que la acción devuelve y hace que esté disponible para las demás acciones del flujo de trabajo. Este es un esquema JSON y debe ser válido. Asigne valores para los siguientes parámetros:
title (obligatorio): se utiliza internamente como identificador.
En el código de ejemplo, el valor del campo title es this.localization.namespace:output. En this.localization, en la configuración regional específica, el valor de la variable output define el valor de title para esa configuración regional.
type (obligatorio): se utiliza internamente. Este valor siempre se debe definir en object. No cambie este valor.
properties (obligatorio): permite definir varios campos de salida para la acción. Defina una clave única para cada campo de salida, por ejemplo, status, y los siguientes valores para cada campo de salida:
title: nombre del campo de salida.
En el código de ejemplo, el valor del campo title es this.localization.namespace:status. En this.localization, en la configuración regional específica, el valor de la variable status define el valor de title para esa configuración regional.
* 
Si no se necesita soporte de localización, se puede especificar aquí el nombre del rótulo.
type: tipo del campo. Por ejemplo: string, integer, number, etc.
5
this.localization: atributo que define un token único para la acción personalizada y los campos de entrada y salida en inglés y localizados. Asigne valores para los siguientes parámetros:
namespace (obligatorio): token generado automáticamente para la acción personalizada. El valor del parámetro namespace debe ser exclusivo en todas las acciones personalizadas.
* 
No modifique este valor.
en (obligatorio): nombres de campo y nombres de identificador utilizados internamente. En la siguiente imagen se muestran los nombres de campo y sus valores en inglés:
de: nombres de campo y nombres de identificador utilizados internamente para un idioma. En el código de ejemplo se proporcionan valores equivalentes en alemán. Se pueden añadir varios idiomas y sus valores equivalentes.
* 
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.
6
this.execute: atributo 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: objeto JSON que contiene los valores de los parámetros de entrada en tiempo de ejecución del flujo de trabajo. Haga referencia a estos valores mediante las claves de campo de entrada, tal como se define 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. Asegúrese de que el código produzca un JSON de salida que coincida con el esquema JSON de this.output. La función tiene el formato callback(err,output):
err: se informa de los errores que se hayan podido producir en el flujo de trabajo. Si no se produce ningún error, especifique null.
output: objeto JSON con valores para cada una de las claves definidas en el atributo this.output de la acción.
¿Fue esto útil?