ThingWorx Flow > Création d'actions personnalisées et gestion des actions personnalisées > Création d'une action personnalisée dans ThingWorx Flow 8.5
Création d'une action personnalisée dans ThingWorx Flow 8.5
Pour créer une action personnalisée, procédez comme suit :
1. Pour ajouter une action personnalisée dans ThingWorx Flow, effectuez l'une des opérations suivantes :
Sur la page des paramètres de ThingWorx Flow, accédez à ACTIONS PERSONNALISEES, puis cliquez sur .
Dans l'éditeur de processus, sur le panneau ACTIONS, accédez à l'onglet Personnalisé, puis cliquez sur .
La fenêtre Action personnalisée s'ouvre.
Utilisez l'une des méthodes suivantes pour créer la structure de code de votre action personnalisée :
Modifiez le modèle par défaut prérempli en y écrivant votre propre code.
Héritez d'une action existante ou copier une action existante.
Pour plus d'informations, consultez la rubrique Différences entre Hériter et Copier.
2. Pour hériter d'une action existante ou copier une action existante, procédez comme suit :
a. Dans la liste Sélectionner action parmi actions existantes, recherchez le connecteur auquel est rattachée l'action dont vous voulez hériter ou que vous voulez copier.
b. Cliquez sur pour développer la liste des actions disponibles sous le connecteur.
c. Sélectionnez l'action dont vous voulez hériter ou que vous voulez copier.
d. Dans le champ Utiliser l'action existante pour, sélectionnez Hériter ou Copier.
Si vous ne souhaitez pas hériter d'une action existante ou en copier une, vous pouvez modifier le modèle par défaut prérempli en y écrivant le code de votre action personnalisée.
3. Dans le champ Inclure action sous, sélectionnez l'une des options suivantes :
Actions personnalisées : ajoutez votre action personnalisée dans le groupe Actions personnalisées de l'onglet Personnalisé dans l'éditeur de processus.
Groupe personnalisé : ajoutez votre action personnalisée à votre propre groupe personnalisé. Indiquez le nom du groupe personnalisé dans le champ en regard de cette option. Le nom du Groupe personnalisé est accessible dans l'onglet Services de l'éditeur de processus.
* 
Vous pouvez ajouter vos actions personnalisées héritées ou copiées qui ne nécessitent pas d'authentification dans n'importe quel groupe personnalisé.
Vous ne pouvez pas avoir plusieurs actions avec différents types d'autorisations ou de connexions dans un même groupe personnalisé.
Si vous avez hérité d'une action de connecteur existante ou copié une action existante, l'action personnalisée est ajoutée par défaut sous le même connecteur. Par exemple, si vous avez sélectionné l'action Détecteur d'anomalies sous le connecteur Azure, par défaut, Azure est sélectionné dans le champ Inclure action sous.
* 
Cette option n'est disponible que si vous copiez une action existante ou en héritez.
4. Dans le champ Choisir une icône, cliquez sur Parcourir pour sélectionner une icône pour votre action personnalisée. Assurez-vous de choisir une image au format JPEG ou PNG de 128 x 128.
* 
Si vous ne spécifiez pas d'icône, l'icône d'action personnalisée par défaut sera utilisée.
Si vous avez choisi d'hériter d'une action existante ou de copier une action existante, par défaut, l'icône de l'action sera utilisée comme icône d'action personnalisée.
5. Dans l'éditeur de code, modifiez le modèle prérempli pour écrire le code de l'action. Pour en savoir plus sur la définition des différents éléments d'une action, consultez la section Définition d'une action personnalisée.
6. Cliquez sur COMPILER. Si le code contient des erreurs, celles-ci sont mises en surbrillance dans l'éditeur de code. Une fois la compilation effectuée, tous les champs d'entrée définis dans la section d'entrée de l'action personnalisée apparaissent dans le volet de droite.
7. Cliquez sur ENREGISTRER pour enregistrer votre action personnalisée.
Définition d'une action personnalisée
Une action personnalisée est une fonction JavaScript Node.js qui définit l'action. Lorsque vous créez une action personnalisée, un modèle de code prérempli vous est proposé dans l'éditeur de code. Utilisez ce modèle comme point de départ pour créer votre action personnalisée.
La table suivante fournit des informations sur les différentes sections du code prérempli :
Légende
Description
1
Utilisez la fonction require() pour importer des modules Node.js à utiliser dans l'action personnalisée. Dans l'exemple de code, l'action importe le module request pour effectuer des appels HTTP simples vers des systèmes tiers.
* 
La liste des modules Node que vous pouvez utiliser dans vos actions personnalisées est disponible ici.
Pour plus d'informations sur l'utilisation de ces modules Node dans vos actions personnalisées, consultez la rubrique relative à la personnalisation des actions personnalisées.
2
this.localization.namespace:label : attribut spécifiant le nom de l'action personnalisée. Sous this.localization, sous le code langue spécifique, la valeur de la variable label définit le nom de l'action personnalisée pour cette langue.
* 
Si la prise en charge de la localisation n'est pas obligatoire, vous pouvez spécifier le nom de l'action personnalisée ici.
3
this.input : attribut qui définit les champs d'entrée à afficher lors de la configuration de l'action dans un processus. Il s'agit d'un schéma JSON qui doit être valide. Attribuez des valeurs aux paramètres suivants :
title (obligatoire) : utilisé en interne comme identificateur.
Dans l'exemple de code, la valeur du champ title est this.localization.namespace:sample_input. Sous this.localization, sous le code langue spécifique, la valeur de la variable sample_input définit la valeur de title pour cette langue.
type (obligatoire) : utilisé en interne. Définissez toujours cette valeur sur object. Ne modifiez pas cette valeur.
properties (obligatoire) : définit un certain nombre de champs d'entrée et conditions de validation, le cas échéant, pour l'action. Définissez une clé unique pour chaque champ d'entrée, par exemple first_name, et les valeurs suivantes pour chaque champ d'entrée :
title : nom du champ d'entrée.
Dans l'exemple de code, la valeur du champ title est this.localization.namespace:Custom_Action_First_Name. Sous this.localization, sous le code langue spécifique, la valeur de la variable Custom_Action_First_Name définit la valeur de title pour cette langue.
type : type du champ. Par exemple : "string", "integer", "number", etc.
description : message qui s'affiche sous la forme d'une info-bulle.
Dans l'exemple de code, la valeur du champ description est this.localization.namespace:Enter_Custom_Action_First_Name. Sous this.localization, sous le code langue spécifique, la valeur de la variable Enter_Custom_Action_First_Name définit la valeur de description pour cette langue.
minLength : définissez la valeur de ce champ sur 1 uniquement si vous souhaitez rendre le champ d'entrée obligatoire. Si vous ne souhaitez pas rendre le champ d'entrée obligatoire, supprimez l'attribut.
4
this.output : attribut qui définit les champs de sortie renvoyés par l'action et rend la sortie disponible pour les autres actions du processus. Il s'agit d'un schéma JSON qui doit être valide. Attribuez des valeurs aux paramètres suivants :
title (obligatoire) : utilisé en interne comme identificateur.
Dans l'exemple de code, la valeur du champ title est this.localization.namespace:output. Sous this.localization, sous le code langue spécifique, la valeur de la variable output définit la valeur de title pour cette langue.
type (obligatoire) : utilisé en interne. Définissez toujours cette valeur sur object. Ne modifiez pas cette valeur.
properties (obligatoire) : définit un certain nombre de champs de sortie pour l'action. Définissez une clé unique pour chaque champ de sortie, par exemple status, et les valeurs suivantes pour chaque champ de sortie :
title : nom du champ de sortie.
Dans l'exemple de code, la valeur du champ title est this.localization.namespace:status. Sous this.localization, sous le code langue spécifique, la valeur de la variable status définit la valeur de title pour cette langue.
type : type du champ. Par exemple : "string", "integer", "number", etc.
5
this.localization : attribut qui définit un jeton unique pour votre action personnalisée, ainsi que les champs d'entrée et de sortie en anglais et localisés. Attribuez des valeurs aux paramètres suivants :
namespace (obligatoire) : jeton généré automatiquement pour votre action personnalisée. La valeur du paramètre namespace doit être unique à l'échelle de toutes les actions personnalisées.
* 
Ne modifiez PAS cette valeur.
en (obligatoire) : noms de champ et noms d'identificateur utilisés en interne. La capture d'écran ci-après montre les noms de champ et leurs valeurs en anglais :
de : noms de champ et noms d'identificateur utilisés en interne pour la langue concernée. L'exemple de code fournit les valeurs équivalentes en allemand. Vous pouvez ajouter plusieurs langues et leurs valeurs équivalentes.
* 
Si vous migrez de ThingWorx Flow 8.4.x vers ThingWorx Flow 8.5, vos actions personnalisées créées dans ThingWorx Flow 8.4.x continueront à fonctionner dans ThingWorx Flow 8.5. Vous pourrez ajouter la prise en charge de la localisation des champs d'entrée et de sortie de l'action personnalisée. Toutefois, vous ne pourrez pas localiser l'étiquette de l'action personnalisée créée dans ThingWorx Flow 8.4.x.
6
this.execute : attribut qui définit la logique de programme qui s'exécute lorsque l'action est exécutée dans un processus. La fonction doit définir les deux paramètres de fonction suivants :
input : objet JSON qui contient les valeurs des paramètres d'entrée au moment de l'exécution du processus. Référencez ces valeurs à l'aide des clés de champ d'entrée définies dans l'attribut this.input de l'action.
output : fonction de rappel qui doit être appelée pour transmettre les valeurs de sortie au processus. Cela indique que l'action est terminée. Veillez à ce que le code produise une sortie JSON correspondant au schéma JSON this.output. La fonction se présente sous la forme callback(err,output) :
err : consigne toute erreur survenue dans le processus. Si aucune erreur ne se produit, spécifie null.
output : objet JSON contenant des valeurs pour chacune des clés définies dans l'attribut this.output de l'action.