Process Mining
2021.10
False
横幅背景图像
Process Mining
上次更新日期 2024年4月2日

Example: Creating a Python Script

简介

此示例说明如何将 UiPath Process Mining 平台与外部 Python 脚本接口,以实现外部数据处理。

注意: 本节中的示例基于 Python 版本 3。

简要概述

系统将创建一个 Python 脚本,该脚本:

  • .CSV文件作为输入,该文件将在其命令行中指定为唯一的必需参数,
  • 将“ 金额 ”值乘以 2,
  • 将结果写入其标准输出通道。

步骤

  1. 设置服务器设置;
  2. 设置工作区;
  3. 设置脚本数据源;
  4. 设置数据源;
  5. 编写脚本。

设置服务器设置

通用脚本数据源需要用于要运行的所有外部流程的处理程序。

请按照以下步骤添加通用脚本处理程序。

步骤

操作

1

转到“超级管理员设置”选项卡。

2

添加一个字段GenericScriptHandlers ,并将一个具有一个键“py”的对象作为值,该键将 Python 可执行文件的路径作为值。 例如:

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

3

单击“保存”

设置工作区

首先创建一个尚未执行任何数据处理的最小脚本。 此脚本将用于验证您的 Python 设置是否正常运行,以及是否从 UiPath Process Mining 平台调用您的脚本。

此示例脚本说明如何生成将显示在脚本执行日志中的输出,以及脚本的退出代码如何影响 UiPath Process Mining 平台的行为。

步骤

操作

1

在您喜欢的编辑器中,启动一个空白文本文件。

2

输入以下文本:

#!/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)
注意: debug(“Hello world!”)命令是如何使用标准错误通道输出消息和调试输出的示例。

3

将文本文件另存为script.py

4

script.py文件上传到您的工作区。

此脚本仅打印“Hello world!”消息。 脚本界面使用 标准输出 进行从脚本到 UiPath Process Mining 平台的数据通信。 如果要在脚本中包含状态消息,则应将其写入 标准错误

注意: 示例脚本退出时状态码为 1。 UiPath Process Mining 平台会将 0 以外的任何状态代码解释为错误条件。

设置脚本数据源

接下来,在将调用脚本的应用程序中设置一个数据源表。 从一些虚拟数据开始,因为您的脚本尚未处理数据。 在此阶段,将验证脚本是否按预期执行,即您是否可以看到“Hello world!”消息。

步骤

操作

1

在开发环境中打开应用程序。

2

转到“ 数据 ” 选项卡,然后创建一个新的“连接字符串”表。

3

New_table重命名为PythonExample

4

右键单击PythonExample表格,然后选择 “高级” >“选项…”

5

在“ 表格选项 ”对话框中,将“ 表格作用域 ”设置为“ 工作区”。

6

双击PythonExample表格以打开“ 编辑连接字符串表格” 窗口。

7

输入以下内容作为“ 连接字符串”:

``'driver={mvscript

8

输入以下内容作为 Query:

“”

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

inputData 示例中的“#10”表示换行符。 即 我们定义以下虚拟 CSV 数据:

"a";"b";"c"

"1";"2";"3"

"4";"5";"6

9

单击“确定”

10

单击“是”

表格刷新失败,您应该会在错误日志中看到“Hello World!”消息

脚本文件的位置由表作用域确定。 这可以设置为“ 服务器 ”或“ 工作区”,或“ ”。 如果设置为“ ”,则脚本文件的路径为绝对路径。 如果将其设置为 ServerWorkspace,则脚本的位置将解释为相对路径。

重要提示: 您需要获取“Hello World!”示例工作,以便能够成功完成剩余步骤,以使用外部 Python 脚本设置界面。

设置数据源

要导出要在外部脚本中处理的数据,第一步是在 Python 脚本中选择所需的字段。 方法是创建一个新表,其中包含 Python 脚本所需的所有字段。 稍后将以.CSV格式导出此表格,以便 Python 脚本可以读取该表格。

在此示例中,我们有一个包含“ 案例 ”表和“ 事件 ”表的应用程序。 请参见下图。



请执行以下步骤:

步骤

操作

1

创建一个新的 全局PythonInputData

2

添加新的表达式属性PythonInputData_Amount

3

将“ 类型 ”设置为“ 查找”。

4

输入 表设置为 Cases_base

5

将表达式设置为listtojson(text(double(records.Amount)))

6

将表达式级别设置为 root

7

单击“确定”

8

Case_ID添加另一个查找表达式属性。

将表达式设置为listtojson(text(double(records.Case_ID)))
备注:
查找表达式属性的格式应为字符串列表。 这是因为csvtable()函数将用于将数据转换为.CSV格式,该格式需要(文本)记录列表。
由于listtojson()函数要求其输入为文本类型,因此生成的 CSV 文件中记录的格式取决于所选属性的类型(在本例中, Amount 的类型为 Currency)和当前活动的显示格式。 此处,货币类型将转换为双精度,以便稍后在 Python 脚本中解析记录。

编写脚本

在文本编辑器中,使用以下代码更新 script.py 文件。

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

请按照以下步骤操作。

步骤

操作

1

将新脚本上传到 工作区,覆盖现有文件并返回到应用程序。

2

右键单击PythonExample表格,然后选择 “编辑…”

3

修改PythonExample表的查询字符串的inputData参数:

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

请参见下图。

4

单击“确定”

5

单击“ 是” (2x)。

6

单击“确定”



PythonExample表现在具有两个数据源属性,即“ 金额 ”和 “案例 ID”。 请参见下图。


检查“ 金额 ” 属性可以发现,所有金额都已乘以 2。 请参见下图,这是 Python 脚本生成的输出示例。



  • 简介
  • 简要概述
  • 步骤
  • 设置服务器设置
  • 设置工作区
  • 设置脚本数据源
  • 设置数据源
  • 编写脚本

此页面是否有帮助?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath 白色徽标
信任与安全
© 2005-2024 UiPath. All rights reserved.