process-mining
2021.10
true
Important :
Veuillez noter que ce contenu a été localisé en partie à l’aide de la traduction automatique.
UiPath logo, featuring letters U and I in white
Process Mining
Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Last updated 2 sept. 2024

Example: Creating a Python Script

Introduction

Cet exemple explique comment interfacer la plate-forme UiPath Process Mining avec des scripts Python externes pour implémenter un traitement de données externe.

Remarque : les exemples de cette section sont basés sur python version 3.

Présentation générale

Un script Python est créé qui :

  • prend en entrée un fichier .CSV , à spécifier sur sa ligne de commande comme seul argument requis,
  • multiplie la valeur du montant par deux,
  • écrit le résultat sur son canal de sortie standard.

Étapes

  1. Configuration des paramètres du serveur ;
  2. Configuration de l'espace de travail ;
  3. Configuration d'une source de données de script ;
  4. Configuration de la source de données ;
  5. Écriture du script.

Configuration des paramètres du serveur

La source de données de script générique nécessite des gestionnaires pour tous les processus externes que vous souhaitez exécuter.

Suivez ces étapes pour ajouter un gestionnaire de script générique.

Étape

Action

1

Accédez à l'onglet Paramètres du Superadmin (Superadmin Settings).

2

Ajoutez un champ GenericScriptHandlers avec comme valeur un objet avec une clé, « py », qui a pour valeur le chemin d'accès à votre exécutable python. Par exemple :

"GenericScriptHandlers": { "py": "P:/Python/bin/python.exe" }

3

Cliquez sur ENREGISTRER (SAVE).

Configuration de l'espace de travail

Commencez par créer un script minimal qui n'effectue encore aucun traitement de données. Ce script sera utilisé pour vérifier que votre configuration python fonctionne et que votre script est appelé depuis la plate-forme UiPath Process Mining .

Cet exemple de script montre comment générer une sortie qui apparaîtra dans le journal d'exécution du script et comment le code de sortie d'un script influence le comportement de la plate-forme UiPath Process Mining .

Étape

Action

1

Dans votre éditeur préféré, démarrez un fichier texte vierge.

2

Saisissez le texte suivant :

#!/usr/bin/python import sys def debug(message): sys.stderr.write(message) debug("Hello world!") exit(1)#!/usr/bin/python import sys def debug(message): sys.stderr.write(message) debug("Hello world!") exit(1)
Remarque : la commande debug(“Hello world!”) est un exemple d'utilisation du canal d'erreur standard pour sortir des messages et déboguer la sortie.

3

Enregistrez le fichier texte sous le nom script.py .

4

Téléchargez le fichier script.py dans votre espace de travail.

Ce script n’imprime qu’un message « Hello world ! message. L'interface de script utilise une sortie standard pour la communication de données entre le script et la plate-forme UiPath Process Mining . Si vous souhaitez inclure des messages d'état dans votre script, vous devez plutôt les écrire dans une erreur standard .

Remarque : l'exemple de script se termine avec le code d'état 1. Tout code de statut autre que 0 sera interprété par la plate-forme UiPath Process Mining comme une condition d'erreur.

Configuration d'une source de données de script

Ensuite, configurez une table de source de données dans l'application qui appellera le script. Commencez avec des données factices, car votre script ne traitera pas encore les données. À ce stade, il sera vérifié que le script est exécuté comme prévu, c'est-à-dire que vous pouvez voir le message « Hello world! message.

Étape

Action

1

Ouvrez l'application dans votre environnement de développement.

2

Accédez à l'onglet Données (Data) et créez une nouvelle table de chaînes de connexion.

3

Renommez New_table en PythonExample .

4

Cliquez avec le bouton droit sur la table PythonExample et sélectionnez Avancé > Options….

5

Dans la boîte de dialogue Options de la table , définissez l' étendue de la table sur Espace de travail.

6

Double-cliquez sur la table PythonExample pour ouvrir la fenêtre Modifier la table de chaînes de connexion ( Edit Connection String Table) .

7

Entrez ce qui suit comme chaîne de connexion:

``'driver={mvscript

8

Entrez ce qui suit en tant que requête:

``''

  • '&scriptFile=' + urlencode("script.py")
  • '&inputData=' + urlencode("a;b;c"+#10+"1;2;3"+#10+"4;5;6"+#10)``

Le « #10 » dans l’exemple inputData indique des caractères de nouvelle ligne. C'est-à-dire nous définissons les données CSV factices suivantes :

"a";"b";"c"

"1";"2";"3"

"4";"5";"6

9

Cliquez sur OK.

10

Cliquez sur OUI (YES).

L'actualisation de la table échoue et le message « Hello World ! message

L'emplacement du fichier de script est déterminé par l'étendue de la table. Cela peut être défini sur Serveur (Server), Espace de travail ( Workspace) ou Aucun(Aucun). S'il est défini sur Aucun, le chemin d'accès au fichier de script est absolu. S'il est défini sur Serveur ou Espacede travail , l'emplacement du script est interprété comme un chemin d'accès relatif.

Important : vous devez obtenir le message « Hello World ! exemple de travail pour pouvoir terminer avec succès les étapes restantes pour configurer une interface avec un script Python externe.

Configuration de la source de données

Pour exporter les données que vous souhaitez traiter dans un script externe, la première étape consiste à sélectionner les champs dont vous avez besoin dans votre script python. Pour ce faire, créez une nouvelle table contenant tous les champs nécessaires au script python. Ce tableau sera exporté au format .CSV ultérieurement afin que le script python puisse le lire.

Pour cet exemple, nous avons une application avec une table Cases (Cas) et une table Events (Événements). Voir l'illustration ci-dessous.



Suivez ces étapes.

Étape

Action

1

Créez une table globale , PythonInputData .

2

Ajoutez un nouvel attribut d'expression, PythonInputData_Amount .

3

Définissez le Type sur Recherche (Lookup).

4

Définissez la table d' entrée sur Base_cas.

5

Définissez l'expression sur listtojson(text(double(records.Amount))) .

6

Définissez le niveau d'expression sur root.

7

Cliquez sur OK.

8

Ajoutez un autre attribut d'expression de recherche pour Case_ID.

Définissez l'expression sur listtojson(text(double(records.Case_ID))) .
Remarque :
Le format de l'attribut d'expression de recherche doit être une liste de chaînes. En effet, la fonction csvtable() sera utilisée pour transformer les données au format .CSV , qui attend une liste d'enregistrements (textes).
Étant donné que la fonction listtojson() nécessite que son entrée soit de type texte, le format des enregistrements dans le fichier CSV résultant dépend du type de l'attribut sélectionné (dans ce cas, Montant est de type Devise) et de l'affichage actuellement actif formater. Ici, le type de devise est converti en double, pour faciliter l'analyse ultérieure des enregistrements dans le script python.

Écriture du script

Dans votre éditeur de texte, mettez à jour le fichier script.py avec le code suivant.

#!/usr/bin/python
import csv
import sys
def debug(message):
    sys.stderr.write(message)
# Read the CSV header. This is used so that the script will output the fields
# in the same order that they were read in. This step is optional.
column_order = [];
with open(sys.argv[1]) as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    column_order = next(reader)
# Process the input file
with open(sys.argv[1]) as csv_file:
    reader = csv.DictReader(csv_file, delimiter=';')
    # Construct the output writer.
    writer = csv.DictWriter(
        sys.stdout,
        column_order,
        delimiter=';',
        restval='',
        quoting=csv.QUOTE_ALL
    )
    writer.writeheader()
    for row in reader:
        # Get data from row
        case_id = row['Case_ID']
        amount = int(row['Amount'])
        # Do computation
        amount = amount * 2
        # Write results
        writer.writerow({'Case_ID': case_id, 'Amount': amount})
# Exit indicating success
exit(0)#!/usr/bin/python
import csv
import sys
def debug(message):
    sys.stderr.write(message)
# Read the CSV header. This is used so that the script will output the fields
# in the same order that they were read in. This step is optional.
column_order = [];
with open(sys.argv[1]) as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    column_order = next(reader)
# Process the input file
with open(sys.argv[1]) as csv_file:
    reader = csv.DictReader(csv_file, delimiter=';')
    # Construct the output writer.
    writer = csv.DictWriter(
        sys.stdout,
        column_order,
        delimiter=';',
        restval='',
        quoting=csv.QUOTE_ALL
    )
    writer.writeheader()
    for row in reader:
        # Get data from row
        case_id = row['Case_ID']
        amount = int(row['Amount'])
        # Do computation
        amount = amount * 2
        # Write results
        writer.writerow({'Case_ID': case_id, 'Amount': amount})
# Exit indicating success
exit(0)

Suivez les étapes ci-dessous :

Étape

Action

1

Téléchargez le nouveau script dans l ' Espacede travail , en écrasant le fichier existant et revenez à l'application.

2

Cliquez avec le bouton droit sur la table PythonExample et sélectionnez Modifier….

3

Modifiez le paramètre inputData de la chaîne de requête de la table PythonExample :

+ '&inputData=' + urlencode(csvtable( "Case_ID", jsontolist(PythonInputData.Case_ID), "Amount" , jsontolist(PythonInputData.Amount), ))

Voir illustration ci-dessous.

4

Cliquez sur OK.

5

Cliquez sur OUI (2x).

6

Cliquez sur OK.



La table PythonExample comporte désormais deux attributs de source de données, Amount et Case_ID. Voir l'illustration ci-dessous.


L'inspection de l'attribut Amount révèle que tous les montants ont été multipliés par deux. Consultez l'illustration ci-dessous pour voir un exemple de la sortie générée par le script python.



Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Uipath Logo White
Confiance et sécurité
© 2005-2024 UiPath Tous droits réservés.