Activité personnalisée

L'étape Activité personnalisée vous permet d'utiliser des ressources externes pour traiter des données à partir d'un robot en utilisant des connecteurs. Les connecteurs sont des paquets qui définissent une ou plusieurs activités qu'un robot peut utiliser, et qui contiennent toutes les ressources nécessaires pour mettre en œuvre ces activités.

Les connecteurs peuvent définir des activités qui effectuent des appels à des programmes externes, des commandes shell, ou qui exécutent JavaScript et Python dans des instances privées. Ces activités sont disponibles en tant qu'activités dans l'étape Activité personnalisée dans Design Studio.

Conseil Visitez le Kofax Intelligent Automation SmartHub sur https://smarthub.kofax.com/ pour explorer des solutions, des robots, des connecteurs, etc. supplémentaires.

Configurer les connecteurs

Cette section explique comment configurer les connecteurs pour les utiliser dans l'étape Activité personnalisée.

Pour pouvoir utiliser des connecteurs dans votre robot, sélectionnez Autoriser l'utilisation de connecteurs dans l'onglet Sécurité de l'application Paramètres du RoboServer. L'application Paramètres du RoboServer peut être lancée à partir du menu Démarrer de Windows. Pour plus d'informations, consultez « Configuraton de RoboServer » dans le Guide de l'administrateur de Kofax RPA.

Créer un Connector

Les connecteurs sont distribués sous la forme d'archives .zip avec l'extension .connector. Avant de créer un robot avec une étape d'activité personnalisée, archivez votre Connector au format ZIP, remplacez l'extension du fichier par .connector et ajoutez-le au projet. Lorsque le projet est chargé sur le Management Console, vous pouvez voir les connecteurs disponibles dans l'onglet Répertoire > Ressources. Les connecteurs sont ensuite chargés sur les RoboServers et sur les ordinateurs automatisés si nécessaire.

Chaque fichier .zip doit contenir un fichier manifest.json dans sa racine. Ce dossier doit contenir un manifeste qui définit toutes les activités disponibles du Connector. Consultez la description du manifeste ci-dessous.

Chaque activité définit un ensemble de paramètres, une réponse et une ligne de commande. Les paramètres sont présentés au concepteur du robot et doivent être remplis par le robot. La ligne de commande est composée en utilisant une combinaison des paramètres et utilisée pour exécuter la demande. La sortie de la demande est analysée et utilisée pour remplir les variables définies dans la réponse.

Charger les connecteurs vers la Management Console

Lorsque vous réalisez la conception d'un robot avec une étape d'activité personnalisée dans Design Studio, chargez-la dans la Management Console. Une fois le projet chargé dans la Management Console, vous pouvez voir les connecteurs disponibles dans l'onglet Ressources de Répertoire. Les connecteurs sont ensuite chargés sur les RoboServers et sur les ordinateurs automatisés si nécessaire.

Notez que les connecteurs utilisant Python et NodeJS sont chargés à la demande, et s'ils ne sont pas utilisés, ils ne nécessitent aucune ressource. Chaque Connector reçoit sa propre instance python ou node.js, et vous pouvez exécuter plusieurs connecteurs de ces types, chacun avec une version différente, si nécessaire.

Exécution d'un programme (type : programme)

Les activités de programme appellent directement le programme indiqué avec le répertoire de travail actuel défini dans le fichier Connector extrait. Si l'exécutable fait partie du paquet Connector, le manifeste doit l'indiquer explicitement avec un chemin relatif, tel que ./executable. Autrement, le robot peut ne pas localiser le fichier exécutable.

Si une configuration supplémentaire (paramètres PATH ou paramètres du chargeur dynamique Linux) est nécessaire, il est recommandé d'utiliser un encapsuleur de shell pour configurer les paramètres et ensuite appeler l'exécutable. Les paramètres sont transmis directement au programme sans autre échappement.

Exécution d'une commande shell (type : shell)

Les interfaces shell démarrent un shell pour exécuter la ligne de commande directement avec le répertoire de travail actuel défini dans le fichier Connector extrait. Le traitement de cette ligne de commande est géré par le shell lui-même et dépend donc de la plate-forme :

  • Sous Windows, l'activité appelle CMD /C et passe tous les éléments de la ligne de commande directement au shell.

  • Sous Linux, l'activité appelle bash -c et passe chaque élément de la ligne de commande comme un argument séparé. Les paramètres sont transmis directement au shell sans autre échappement. Consultez la documentation de l'option bash -c pour plus d'informations.

Exécution de JavaScript (type : nœud)

Les demandes JavaScript Node.js sont encapsulées dans un contexte function() et exécutées. Si le code contient des instructions require, elles sont résolues en utilisant le répertoire node_modules dans la racine du paquet Connector.

Par défaut, les paramètres sont convertis en chaînes de caractères et échappés avant d'être insérés dans la ligne de commande. La ligne de commande n'est pas échappée.

Si l'interface est synchrone, le robot reçoit à la fois la valeur renvoyée par JavaScript et une valeur d'exception. Un seul de ces deux champs a une valeur non vide. Un objet est sérialisé dans JSON avant d'être renvoyé au robot.

Un exécutable Node.js spécifique peut être intégré dans le paquet en le plaçant à la racine. Si aucun exécutable n'est présent, la version LTS de Node.js incluse avec Kofax RPA est utilisée.

Exécution de Python (type : python)

Les demandes Python sont exécutées en utilisant l'instruction exec() avec un dictionnaire global( ) privé persistant. La racine du paquet de connecteur est ajoutée devant sys.path pour permettre au connecteur de fournir ses propres modules.

Par défaut, les paramètres sont convertis en chaînes de caractères et échappés avant d'être insérés dans la ligne de commande. La ligne de commande n'est pas échappée.

Comme l'instruction Python exec() ne permet pas l'instruction return au niveau supérieur, la demande doit affecter son résultat à la variable globale rpa_return à la place. Cette variable est retirée de la portée globale entre les demandes. Si l'interface est synchrone, le robot reçoit la valeur de la variable rpa_return et une valeur d'exception. Un seul de ces deux champs a une valeur non vide. Un objet est sérialisé dans JSON avant d'être renvoyé au robot.

Le nom RPAConnector est réservé à un usage interne. Ne l'utilisez pas comme nom de module ou ne créez pas de répertoire RPAConnector dans le paquet Connector.

Kofax RPA utilise l'interpréteur Python par défaut. Vous pouvez remplacer ce paramètre dans le manifeste en utilisant un nom ou un chemin différent, comme « python3.8 » ou « /usr/bin/python3 ». Il appartient au système de résoudre l'interpréteur spécifié.

Le paquet doit être configuré pour la version majeure de Python qui est utilisée, en raison des différences de langage entre Python 2 et Python 3. Seules les version Python 2.7 et Python 3 3.5 et les versions ultérieures sont prises en charge. Le paquet six doit être présent dans l'installation Python.

Exécuter des connecteurs sur des dispositifs locaux

Pour utiliser vos connecteurs personnalisés avec le dispositif local dans votre robot, sélectionnez l'option Autoriser l'utilisation des connecteurs dans l'application Paramètres de RoboServer du dispositif local RoboServer.

Manifeste

Le fichier manifest.json doit contenir les éléments JSON suivants :

Champ

État

Description

activités

requis

Tableaux d'activités.

nom

requis

Nom du Connector indiqué dans l'étape Activité personnalisée.

python

facultatif

Chaîne

Spécifie l'exécutable à exécuter pour les activités Python. Ce paramètre s'applique à toutes les plates-formes mais peut être modifié en utilisant l'un des paramètres suivants spécifiques à la plateforme.

Par défaut : « python »

python-windows

facultatif

Chaîne

Si présent, spécifie l'exécutable à exécuter pour les activités Python sur la plate-forme Windows.

python-linux

facultatif

Chaîne

Si présent, spécifie l'exécutable à exécuter pour les activités Python sur la plate-forme Linux.

python-support

facultatif

Entier

Spécifie la version majeure de Python qui est utilisée. Les valeurs prises en charge sont 2 pour Python 2.7 et 3 pour Python 3.x.

Par défaut : 3

Activité

Le format des activités est détaillé dans le tableau suivant.

Tableau 1. Format d'activité

Champ

État

Description

nom

requis

Nom de l'activité.

type

requis

Type de l'activité. Il doit s'agir d'un des éléments suivants : « program », « shell », « node » ou « python ».

paramètres

facultatif

Ensemble de paramètres représentés dans l'étape d'activité personnalisée sous forme de champs d'entrée.

réponse

facultatif

Ensemble de réponses représentées dans l'étape d'activité personnalisée comme champs de sortie. Si ce champ est omis, un ensemble de réponses par défaut est utilisé en fonction de la définition de l'activité.

commandline

requis

Ensemble de chaînes de caractères représentant les paramètres de la commande de demande. Pour les activités « program », le premier paramètre est l'exécutable. Les paramètres peuvent être insérés en utilisant des échappements %n (insertion de la nième valeur du tableau des paramètres). Utilisez %% pour insérer un signe de pourcentage.

Les éléments qui sont vides après la substitution de paramètres sont supprimés.

Pour les demandes « node » et « python », il est permis d'envoyer des scripts complets.

prune

facultatif

Booléen

Indique que les éléments développés en chaîne vide doivent être supprimés du tableau de la ligne de commande.

Valeur par défaut : true

attendre

facultatif

Booléen

Indique que le robot doit attendre la fin de l'activité. Ce paramètre est ignoré pour les activités « node » et « python » ou si l'activité possède un tableau de réponse.

Valeur par défaut : true

stdout

facultatif

Booléen

Permet la capture du flux de sortie standard à partir d'une activité « program » ou « shell » dans une variable. Ce champ est ignoré si « wait » a la valeur false.

Valeur par défaut : false

stderr

facultatif

Booléen

Permet la capture du flux d'erreur standard à partir d'une activité « program » ou « shell » dans une variable. Ce champ est ignoré si « wait » a la valeur false.

Valeur par défaut : false

Paramètre
Le format des paramètres est détaillé dans le tableau suivant.
Tableau 2. Format des paramètres

Champ

État

Description

nom

requis

Nom du paramètre. Le nom est indiqué dans l'étape d'activité personnalisée.

type

requis

Type du paramètre. Le type doit être l'un des types suivants : « chaîne » ou « nombre » Les paramètres « number » sont limités aux nombres entiers.

default

facultatif

Valeur par défaut du paramètre.

Par défaut : "" ou 0 selon le type de paramètre.

min

facultatif

Nombre

Valeur minimale autorisée pour le paramètre. Cet attribut n'est pris en charge que pour les paramètres « number » ; il est ignoré pour les autres types.

Par défaut : -2147483648

max

facultatif

Nombre

Valeur maximale autorisée pour le paramètre. Cet attribut n'est pris en charge que pour les paramètres « number » ; il est ignoré pour les autres types.

Par défaut : +2147483647

facultatif

facultatif

Booléen

Les paramètres facultatifs peuvent être laissés non assignés ou vides dans le robot.

Valeur par défaut : false

escape

facultatif

Booléen

Placez la valeur entre guillemets et échappez les caractères spéciaux. Cet attribut est actuellement pris en charge pour les paramètres de chaîne « node » et « python » ; il est ignoré dans tous les autres cas.

Valeur par défaut : true

Pour les paramètres numériques, la valeur par défaut doit être comprise entre les valeurs min et max (incluses). Les trois valeurs doivent être comprises entre -2147483648 et +2147483647 (inclus).

Réponse
Le tableau suivant décrit le format de la réponse.
Tableau 3. Format de la réponse

Champ

État

Description

nom

requis

Nom de la réponse. Le nom est indiqué dans l'étape d'activité personnalisée.

type

requis

Type de réponse. Le type doit être l'un des types suivants : « chaîne » ou « nombre » Les réponses « nombre » sont converties en nombres entiers.

facultatif

facultatif

Booléen

Indique que la réponse n'a pas à être présente dans la sortie. Si la réponse est omise, la variable est remplie avec sa valeur par défaut.

Valeur par défaut : false

default

facultatif

Valeur par défaut du paramètre.

Cette valeur est utilisée si un paramètre facultatif est omis dans la réponse.

Par défaut : "" ou 0 selon le type de paramètre.

Les valeurs numériques à virgule flottante dans la réponse de l'application sont converties en nombres entiers.

exemples manifest.json

Les exemples suivants, basés sur Linux, utilisent différents connecteurs (shell, node, python, programme) qui appellent des fonctions correspondantes pour ajouter deux nombres. Les paramètres de la fonction sont définis dans l'ordre dans lequel ils sont transmis à cette fonction, par exemple : Premier numéro et deuxième numéro. Le résultat du calcul est renvoyé au robot dans la variable affectée de la valeur Sum. La valeur de sortie est attribuée différemment selon les connecteurs.

python.connector

Pour que ce connecteur fonctionne, installez la dernière version de Python sur l'ordinateur où un robot doté de ce connecteur s'exécute.

{"actions": [
    {
      "name": "Adder",
      "type": "python",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
        "rpa_return = { 'Sum': %1 + %2 }"
      ]
    }
  ],
  "name": "Adder Function (python)"
}
shell.connector
{
  "actions": [
    {
      "name": "Adder",
      "type": "shell",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
	"echo \"{ \\\"Sum\\\": $((%1 + %2)) }\""
      ]
    }
  ],
  "name": "Adder Function (shell)"
}
node.connector
{
  "actions": [
    {
      "name": "Adder",
      "type": "node",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
        "return { Sum: %1 + %2 };"
      ]
    }
  ],
  "name": "Adder Function (node)"
}
program.connector

Ce connecteur utilise un programme exécutable « add » appelé par le connecteur.

{
  "actions": [
    {
      "name": "Adder",
      "type": "program",
      "parameters": [
        {
          "name": "First number",
          "type": "number"
        },
        {
          "name": "Second number",
          "type": "number",
          "min": 1,
          "default": 1000
        }
      ],
      "response": [
        {
          "name": "Sum",
          "type": "number"
        }
      ],
      "commandline": [
        "./add", "%1", "%2"
      ]
    }
  ],
  "name": "Adder Function (program)"
}
Définitions des réponses
Programme
  • Si l'activité comporte un tableau de réponses, le champ d'attente est ignoré et le robot attend que le programme se termine. La sortie standard du programme est capturée et analysée comme une chaîne JSON, et les variables sont remplies avec les champs respectifs de cette chaîne. Le robot échoue si le programme ne produit pas une chaîne JSON valide.
  • Si l'activité n'a pas de tableau de réponses et que le champ d'attente est faux, l'étape n'a pas de variables de réponse.
  • Si l'activité n'a pas de tableau de réponses et que le champ d'attente est vrai, l'étape a les variables de réponse suivantes :
    • rc : Code de retour du programme.
    • stdout : Flux de sortie standard du programme (fourni uniquement si stdout est vrai).
    • stderr : Flux d'erreur standard du programme (fourni uniquement si stderr est vrai).

Quelle que soit la configuration du connecteur, le flux de sortie standard et le flux d'erreur standard sont enregistrés au niveau INFO dans les journaux Kofax RPA.

Shell

Les activités de shell sont exécutées en utilisant CMD.EXE sous Windows, et bash sous Linux.

  • Si l'activité possède un tableau de réponses, le champ d'attente est ignoré et le robot attend que le shell se termine. La sortie standard du shell est capturée et analysée comme une chaîne JSON, et les variables sont remplies avec les champs respectifs de cette chaîne. Le robot échoue si le programme ne produit pas une chaîne JSON valide.
  • Si l'activité n'a pas de tableau de réponses et que le champ d'attente est faux, l'étape n'a pas de variables de réponse.
  • Si l'activité n'a pas de tableau de réponses et que le champ d'attente est vrai, l'étape a les variables de réponse suivantes :
    • rc : Code de retour du shell.
    • stdout : Flux de sortie standard du shell (fourni uniquement si stdout est vrai).
    • stderr : Flux d'erreur standard du shell (fourni uniquement si stderr est vrai).

Quelle que soit la configuration du connecteur, le flux de sortie standard et le flux d'erreur standard sont enregistrés au niveau INFO dans les journaux Kofax RPA.

NodeJS

La ligne de commande est exécutée dans le contexte d'une fonction. La commande doit utiliser l'instruction return pour renvoyer ses résultats au robot.

  • Si l'activité comporte un bloc de réponse, elle est censée renvoyer un objet ou une chaîne JSON, et les variables sont remplies avec les champs respectifs de cet objet. Le robot échoue si une exception est émise et qu'elle n'est pas traitée.
  • Si l'activité ne comporte pas de bloc de réponse, l'étape comporte les deux variables de réponse suivantes :

    result : Si l'instruction a abouti, cette variable reçoit la valeur qu'elle renvoie.

    error : Si une exception est émise et qu'elle n'est pas traitée dans le code JavaScript, cette variable contient le texte de l'exception.

Python

La ligne de commande est exécutée à l'aide de la fonction exec(). La commande doit attribuer une valeur à la variable globale rpa_return pour renvoyer ses résultats au robot.

  1. Si l'activité comporte un bloc de réponse, rpa_return doit contenir un objet ou une chaîne JSON, et les variables sont remplies avec les champs respectifs de cet objet. Le robot échoue si une exception est émise et qu'elle n'est pas traitée.

  1. Si l'activité ne comporte pas de bloc de réponse, l'étape comporte les deux variables de réponse suivantes :
    • result : Si l'instruction a abouti; cette variable reçoit la valeur rpa_return.

    • error : Si une exception est émise et n'est pas traitée dans le code Python, cette variable contient le texte de l'exception.

Informations sur la mise en œuvre

Les éléments suivants du fichier .zip sont réservés :

Type

Chemin

Description

fichier

/manifest.json

Manifeste

fichier

/node

Exécutable Node.js pour la plate-forme Linux. Si ce fichier n'est pas présent, l'instance Node.js incluse avec Kofax RPA est utilisée.

fichier

/node.exe

Exécutable Node.js pour la plate-forme Windows. Si ce fichier n'est pas présent, l'instance Node.js incluse avec Kofax RPA est utilisée.

répertoire

/node_modules

Emplacement des modules de Node.js.

répertoire

/RPAConnector

Réservé à un usage interne.

répertoire

/node_modules/RPAConnector

Réservé à un usage interne.