Process Mining
2021.10
False
Imagen de fondo del banner
Process Mining
Última actualización 2 de abr. de 2024

Example: Creating a Python Script

Introducción

Este ejemplo explica cómo interactuar la plataforma UiPath Process Mining con scripts externos de Python para implementar el procesamiento de datos externos.

Nota: Los ejemplos de esta sección se basan en la versión 3 de Python.

Información general de alto nivel

Se crea un script de Python que:

  • toma como entrada un archivo .CSV , que se especificará en su línea de comandos como único argumento requerido,
  • multiplica el valor de la Cantidad por dos,
  • escribe el resultado en su canal de salida estándar.

Pasos

  1. Configurar los ajustes del servidor;
  2. Configurar el espacio de trabajo;
  3. Configurar una fuente de datos de script;
  4. Configurar el origen de datos;
  5. Escribiendo el script.

Configurar los Ajustes de servidor

El origen de datos de script genérico requiere controladores para todos los procesos externos que desea ejecutar.

Sigue estos pasos para añadir un controlador de script genérico.

Paso

Acción

1

Ve a la pestaña Ajustes de superadministrador.

2

Añade un campo GenericScriptHandlers con un valor de un objeto de una clave, "py", que tiene como valor la ruta a tu ejecutable de Python. Por ejemplo:

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

3

Haz clic en GUARDAR.

Configurar el espacio de trabajo

Comience creando un script mínimo que aún no procese datos. Este script se utilizará para verificar que su configuración de Python funciona y que se llama a su script desde la plataforma UiPath Process Mining .

Este script de ejemplo muestra cómo generar una salida que aparecerá en el registro de ejecución del script, y cómo el código de salida de un script influye en el comportamiento de la plataforma UiPath Process Mining .

Paso

Acción

1

En su editor favorito, cree un archivo de texto en blanco.

2

Introduce el siguiente texto:

#!/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)
Nota: El comando debug(“Hello world!”) es un ejemplo de cómo usar el canal de error estándar para generar mensajes y depurar la salida.

3

Guarda el archivo de texto como script.py.

4

Cargue el archivo script.py a su espacio de trabajo.

Este script solo imprime un mensaje de "¡Hola, mundo!" Mensaje La interfaz del script utiliza una salida estándar para la comunicación de datos desde el script a la plataforma Process Mining de UiPath . Si quieres incluir mensajes de estado en tu script, debes escribirlos en error estándar .

Nota: El script de ejemplo existe con el código de estado 1. La plataforma de UiPath Process Mining interpretará cualquier código de estado distinto de 0 como una condición de error.

Configurar un origen de datos Script

A continuación, configure una tabla de fuentes de datos en la aplicación que llamará al script. Comience con algunos datos ficticios, ya que su script aún no los procesará. En esta etapa, se verificará que el script se ejecuta como se esperaba, es decir, que puede ver el mensaje "¡Hola, mundo!" Mensaje

Paso

Acción

1

Abra la aplicación en su entorno de desarrollo.

2

Ve a la pestaña Datos y crea una nueva tabla de cadenas de conexión.

3

Cambia el nombre de New_table a PythonExample.

4

Haga clic con el botón derecho en la tabla PythonExample y seleccione Avanzado> Opciones…

5

En el cuadro de diálogo Opciones de tabla, establece el Ámbito de la tabla en Espaciode trabajo.

6

Haz doble clic en la tabla PythonExample para abrir la ventana Editar tabla de cadenas de conexión .

7

Introduzca lo siguiente como cadena de conexión:

``'driver={mvscript

8

Introduzca lo siguiente como Consulta:

`` ''

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

El "n. ° 10" en el ejemplo inputData indica caracteres de nueva línea. Es decir definimos los siguientes datos CSV ficticios:

"a";"b";"c"

"1";"2";"3"

"4";"5";"6

9

Haz clic en Aceptar.

10

Haz clic en SI.

La actualización de la tabla falla y en el registro de errores debería ver el mensaje "¡Hola, mundo!" mensaje

La ubicación del archivo de script está determinada por el ámbito de la tabla. Esto se puede establecer como Servidor , Espaciode trabajo o Ninguno. Si se establece en Ninguno, la ruta del archivo de script es absoluta. Si está establecido en Servidor o Espaciode trabajo, la ubicación del script se interpreta como una ruta relativa.

Importante: debe obtener el mensaje "¡Hola, mundo!" ejemplo funcionando para poder completar con éxito los pasos restantes para configurar una interfaz con un script de Python externo.

Configurar el origen de datos

Para exportar los datos que desea procesar en un script externo, el primer paso es seleccionar los campos que necesita en su script de Python. La forma de hacerlo es creando una nueva tabla que contenga todos los campos que necesita el script de Python. Esta tabla se exportará en formato .CSV más adelante para que el script de Python pueda leerla.

Para este ejemplo, tenemos una aplicación con una tabla de casos y una tabla de eventos . Consulta la siguiente ilustración.



Sigue estos pasos.

Paso

Acción

1

Crear una nueva tabla global , PythonInputData.

2

Agregue un nuevo atributo de expresión, PythonInputData_Amount.

3

Establece el Tipo en Buscar.

4

Establece la tabla de entrada en Casos_base.

5

Establece la expresión en listtojson(text(double(records.Amount))).

6

Establece el nivel de expresión en raíz.

7

Haz clic en Aceptar.

8

Añade otro atributo de expresión de búsqueda, para Case_ID.

Establece la expresión en listtojson(text(double(records.Case_ID))).
Nota:
El formato del atributo de expresión de búsqueda debe ser una lista de cadenas. Esto se debe a que se utilizará la función csvtable() para transformar los datos al formato .CSV , que espera una lista de registros (de texto).
Dado que la función listtojson() requiere que su entrada sea de tipo texto, el formato de los registros en el archivo CSV resultante depende del tipo de atributo seleccionado (en este caso, la Cantidad es de tipo Moneda) y de la visualización actualmente activa formato. Aquí el tipo de moneda se convierte a doble, para facilitar el análisis de los registros posteriormente en el script de Python.

Escribir el Script

En tu editor de texto, actualiza el archivo script.py con el siguiente código.

#!/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)

Sigue los siguientes pasos.

Paso

Acción

1

Cargue el nuevo script al Workspace, sobrescribiendo el archivo existente y vuelva a la aplicación.

2

Haga clic con el botón derecho en la tabla PythonExample y seleccione Editar…

3

Modifica el parámetro inputData de la cadena de consulta para la tabla PythonExample :

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

Consulta la siguiente ilustración.

4

Haz clic en Aceptar.

5

Haga clic en (2x).

6

Haz clic en Aceptar.



La tabla PythonExample tiene ahora dos atributos de fuente de datos, Amount y Case_ID. Consulta la siguiente ilustración.


La inspección del atributo Cantidad revela que todas las cantidades se han multiplicado por dos. Vea la siguiente ilustración un ejemplo de la salida generada por el script de Python.



Was this page helpful?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Logotipo blanco de UiPath
Confianza y seguridad
© 2005-2024 UiPath. All rights reserved.