UIPath invoke python method

uipath是不错的RPA(Robotic Process Automation) 工具和平台,并且有开源社区版本可以方便RPA爱好者去尝试,本文是介绍如何在UIPath下调用python的脚本中的方法并提取返回值

模拟问题场景

uipath加载python脚本,并根据传入的配置文件,返回配置文件中的符合条件的配置信息

解决步骤

  1. 预置条件:

a. python脚本pmt_detection.py, 内容如下:

 from configparser import ConfigParser
 def getPmtReqsStatToBeSync(configFilePath):
    """
    read config item in rpa-config.ini
    :param: configFilePath - config file
    :return: PMT.sync_scan_on_status
    """
    cfg = ConfigParser()
    cfg.read(configFilePath)

    return cfg.get("PMT", "sync_scan_on_status").split(',')

b. 配置文件rpa-config.ini,内容如下:

[PMT]
sync_scan_on_status=SUBMITTED,INPROGRESS
rm_scan_on_status=CANCELLED,COMPLETED

[XXX]
doc_type_list=ID,PASSPORT

我们本次的目标是,用getPmtReqsStatToBeSync去拿到配置文件中的key sync_scan_on_status对应的value,即SUBMITTED,INPROGRESS
c.uipath项目已创建且python activities已安装

  1. 设置PYTHON_HOME并用变量保存

避免每次调用python脚本的时候都要hardcode python env home 地址,及python.exe所在的目录
a. 我们现在系统环境变量中设置PYTHON_HOME,如下图


image.png

b.在UIpath activities中找到'Get Environment Variable'并拖入使用,配置如下图,用变量保存下python home的地址


图-Python_Home设置
  1. 使用Python activities下面的组件来调用python脚本

a. 添加python scope及配置


图-python scope

截了其它例子中的图(请姑且认为py_home跟python_home是同一个变量)
需要补充说明的是,除了Path需要配置之外,Target和Version也请选择正确否则会得到无法加载script的错误且没有具体的错误日志
b.在python scope的Do区域添加Load Python Script并设置脚本路径和result - 变量保存python object


图-Load Python Script

c. 在添加invoke python method组件,配置如下
图-Invoke Python Method

Instance即 在上一步加载进来的脚本对象,Name即方法名,本例中方法名为:getPmtReqsStatToBeSync,输出同样是pythonObject

在我们的需求场景中,需要传递一个配置文件地址,即使它与脚本放在同一个目录下(e.g 项目的根目录,与Main.xaml),uipath-python也无法加载到(os.path.dirname(os.path.abspath(file)) or os.getcwd(), both failed)
所以我们假设rpa-config.ini 和pmt_detection.py放在项目的根目录下,首先需要获取项目的当前path,所以最后Input parameters的配置为:{Environment.CurrentDirectory + “/rpa-config.ini”}

image.png

d. 拿到了方法的执行之后的返回对象之后,我们还需要添加get python object来获取到返回值,我们的例子中返回值是个tuple即数组或者ArrayList。


图-Get Python Object

Input 为‘invoke python method’的返回对象,TypeArgument是要转化的对象类型,本例为:System.String[],输出到变量中。
至此,调用python 方法完成,返回结果变量可以在后面的flow正常使用了

打印日志可以查看输出结果:

"[" +correlationid +"] Payment sync config loaded, payment sync status are: " +"".Join(",",pmt_sync_status) 
图-运行结果

备注
欢迎多多指正

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,875评论 0 10
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,247评论 1 19
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,257评论 4 16
  • 我今天认识了一个,演员朋友。 她叫,娜娜! 她真的又高又瘦又美人又好! 演员是一个怎样的职业呀!我真的很好奇!!我...
    天啊我才是七七阅读 306评论 0 1
  • 现在的朋友圈很多都是只展示仅三天可见,为什么会出现这种情况呢? 第一种,往事不堪回首 每个人都有一段时期是不愿意让...
    laviqx阅读 621评论 0 1