【前沿技术RPA】 一文了解UiPath 机器人企业框架 (REFramework)

简介: 本博文主要介绍 UiPath 机器人企业框架 (REFramework)。我们将讨论事务处理、调度程序和执行程序的概念,还会简要介绍 REFramework 可以完成的任务。
🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。
🦀专栏简介: UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。
🐶座右铭:总有一天你所坚持的会反过来拥抱你。

🌈写在前面:

本博文主要介绍 UiPath 机器人企业框架 (REFramework)。我们将讨论事务处理、调度程序和执行程序的概念,还会简要介绍 REFramework 可以完成的任务。


👉本文关键字:RPA、UiPath、Low-code、No-code、机器人企业框架、REFramework、.Net

1️⃣ 背景

♈ 什么是RPA

RPA(Robotic process automation) 代表机器人过程自动化

它是一种软件程序,可在与计算机应用程序交互时模仿人类行为并实现重复的、基于规则的流程的自动化。

♉ 什么是UiPath

UiPath 是一种机器人流程自动化工具,用于自动化枯燥和重复的任务。它由罗马尼亚企业家 Daniel Dines 和 Marius Trica 于 2005 年创立。它还消除了自动化无聊任务的人工干预,并为所有活动提供了拖放功能,它是最简单的 RPA 工具。

♊ 为什么使用UiPath

UiPath在传统的RPA的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。

♋ 环境

  • UiPath Studio Community 2022.4.3
  • Windows 10
  • .Net

2️⃣ 事务处理

♈ 定义

事务是指对数据进行处理所需要的最小(原子)数据量以及必要的步骤,其目的是为了完成业务流程的一个部分。从邮箱中读取一封电子邮件,然后从电子邮件中提取数据的流程就是一个典型事务示例。

我们把事务数据称为原子数据是因为一旦完成数据处理,即可假设在继续处理业务流程时不再需要这些数据。

考虑到业务流程的步骤及其重复执行方式,我们可以将业务流程分为以下三个类别:

⭐ 线性

流程中的步骤仅执行一次,如果需要处理不同的数据,则需要再次执行自动化。例如,回到在本章简介部分介绍的电子邮件示例,当收到新电子邮件时,系统需要再次执行自动化才能进行处理。

线性流程通常很简单,而且很容易实施,但不太适合需要使用不同数据重复执行步骤的情况。

1.png

⭐ 迭代

流程中的步骤可以执行多次,但每次使用不同的数据项目。例如,自动化可以检索多封电子邮件并迭代执行相同的步骤,而不是每执行一次仅读取一封电子邮件。

这种流程可以通过简单的循环实现,但缺点是,如果在处理一个项目时出现问题,整个流程就会中断,因此,其他项目将无法得到处理。

2.png

⭐ 事务性

与迭代流程相似,事务性流程的步骤也会使用不同的数据项目来重复执行多次。但是,自动化的设计使每个可重复部分得到独立处理

这些可重复的部分称为事务。事务相互保持独立,因为它们不会共享任何数据,也没有特定的处理顺序。

您可以将这三类流程看作自动化项目逐步走向成熟的各个阶段,从简单的线性任务开始,经过反复改进,最后演变为事务性方法。

不过,凡事没有绝对规则,我们要根据流程的特征(例如,要处理的数据以及重复的频率)和其他相关要求(例如,易用性和稳定性)来选择合适的类别。

3.png

♉ 适合使用事务流程的业务场景

  • 某个文件夹中有多张发票,您需要从发票中读取数据,并将数据输入另一个系统。在本例中,我们可以将每张发票视为一个事务,因为它们都需要按照重复的流程进行处理(即提取数据并输入其他位置)。
  • 某个电子表格中包含人员及其电子邮件地址的列表,您需要向其中每位人员发送一封电子邮件以及一条个性化消息。对于每位人员来说,此流程中的步骤(即从电子表格获取数据,创建个性化消息和发送电子邮件)都是相同的,因此,我们可以将此电子表格中的每一行视为一个事务。
  • 在寻找新公寓时,我们可以设立一些条件,然后使用机器人进行搜索。对于每个搜索结果,机器人会提取有关公寓的信息,并将数据插入电子表格中。在本例中,每间公寓的详细信息页面就构成了一个事务。

3️⃣ REFramework

♈ 定义

一般来说,框架就是帮助您设计(自动化)流程的模板。作为框架,至少要提供一种存储、读取和便于修改项目配置数据的方法,还要提供强大的异常处理方案,以及关于所有异常和相关事务信息的事件记录。

REFramework 作为状态机实现,这是一种工作流,具有两个非常有用的功能:

  • 其一是状态,它可以根据指定的输入,定义要执行的操作。
  • 其二是转移,它可以根据状态本身的结果,在状态之间切换执行。

您可以参考项目组织博文中的状态机。其中介绍了一个典型的例子,即空调:

  • 当空调处于关闭状态时,只需按下开/关按钮,它就会切换到空闲状态;
  • 在空闲状态下,如果用户输入的温度低于当前温度,它就会切换到加热状态;如果高于当前温度,它就会切换到致冷状态。一旦达到需要的温度,它又会回到空闲状态;
  • 在空闲状态下,如果按下开/关按钮,它可以切换到关闭状态;
  • 触发这些状态转换的所有条件都属于转移。

基于类似的想法,REFramework 包括 4 种主要状态。

4.png

⭐ 初始状态

这是流程启动时的状态。我们可以将其视为一种操作。在此操作中,流程会初始化设置并执行应用程序检查,从而确保满足启动流程的所有先决条件。

5.png

⭐ 获取事务状态

获取下一个事务项目。它可能是队列项目,也可能是集合中的任何项目。

默认情况下,事务项目是队列项目,但为了满足特定的需求,您可以轻松更改其类型。对于这种状态,开发者需要设置没有项目需要处理时的退出条件。

6.png

⭐ 流程事务状态

通过上一个步骤获取事务项目后,在各个应用程序中执行操作/应用逻辑。完成事务项目处理后,流程将继续处理下一个可用的事务项目。

7.png

⭐ 结束流程状态

流程结束(在自动化期间打开的应用程序应正常关闭)。

为了便于理解如何使用 REFramework,下面我们来介绍一个场景:

某个电子表格中包含人员及其电子邮件地址的列表,您需要基于模板向其中每位人员发送一封电子邮件以及一条个性化消息。

8.png

4️⃣ REFramework 的功能

♈ 设置

在很多流程中,通常都会使用在初始化阶段读取的某些设置和配置值。设置的示例包括用于访问 Web 应用程序的 URL、Orchestrator 队列名称和默认记录消息。

REFramework 先从 配置文件 (Config.xlsx) 读取这些数据,然后将其存储在可在 不同状态之间共享的字典对象 (Config) 中,从而实现数据跟踪。它提供了一种简单方法,通过更改配置文件中的值(而不是直接修改工作流)即可维护项目。

♉ 日志记录

REFramework 的另一个强大功能是内置记录机制。组成框架的大多数工作流都使用日志消息活动。这些活动会输出在基于每个执行步骤发生情况的详细信息上。

这种机制不仅可用于查找问题,帮助您完成调试流程,还可用于创建有关流程执行(例如,每天处理了多少张发票,发生了多少次故障和引发故障的主要原因)以及流程本身(例如,一个月内处理的所有报告的汇总值)的可视化内容和报告。

♊ 业务异常和应用程序异常

在执行过程中,大多数流程都可能出现与正常执行流程相悖的异常情况,您必须解决问题才能实现更可靠的自动化。

例如,假设某个流程使用了几个 Web 应用程序,但 Web 浏览器在某个点会停止响应。如果某个活动(比如说点击)尝试与停止响应的应用程序交互,则可能会失败并返回异常。经过设计,REFramework 会尝试再次处理事务(即重试)或跳过该事务,从而实现从异常中恢复。

如果重新启动应用程序可以解决问题,框架会自动完成操作,并且会再次尝试处理同一事务。这些异常称为应用程序异常。

如果问题与数据本身或业务的基本要求相关(例如,不处理价值超过特定金额的发票),则框架会跳过该事务,并继续处理下一个事务。这些异常称为业务规则异常。

5️⃣ 调度程序和执行程序

虽然企业框架可以使用不同类型的数据源,但是企业框架结合了一种特殊的数据源:Orchestrator Queue,也就是队列结构。当使用队列时,可以定义项目的优先级和截止期来追踪重试或失败的项目。使用队列也启用了名为“调度程序和执行程序”的执行模式。该模式将流程分为两个主要阶段:调度要处理的项目并将其添加到队列中,然后从队列中检索项目并使用该项目执行流程。流程的第二部分通常使用 REFramework 构建。

♈ 调度程序

调度程序是用于将事务项目推送到 Orchestrator 队列的流程。它从一个或多个来源提取数据,并使用这些数据来创建将由执行程序机器人处理的队列项目。

系统将信息推送到一个或多个队列,从而让调度程序为队列项目中存储的所有数据使用通用格式。

使用调度程序模式的主要优点是,您可以在多个机器人之间拆分项目的处理。

9.png

♉ 执行程序

执行程序是用于从 Orchestrator 队列中拉取事务项目,并根据公司需求处理这些项目的流程。它每次处理一个队列项目。

每个处理的项目都有错误处理和重试机制。

执行程序的主要优点是可扩展性(多个执行程序可以与单个队列一起使用)。

10.png

我们仍使用前述同一场景,某个电子表格中包含人员及其电子邮件地址的列表。您需要基于模板向其中每位人员发送一封电子邮件以及一条个性化消息。

我们可以通过以下方式使用“调度程序和执行程序”模式:

  1. 调度程序从输入电子表格读取行,并将数据(即姓名和电子邮件)添加到队列中;每个队列项目都将包含来自电子表格某一行的姓名和电子邮件地址。
  2. 执行程序检索来自同一队列的项目,并使用该数据执行必要的操作,比如说替换模板值和发送电子邮件。

调度程序和执行程序模型的优点:

  • 流程分离更明确(调度程序和执行程序之间)
  • 架构层与流程层的分离和区分更明确
  • 更完善的错误处理和重试机制
  • 可跨多台计算机运行流程(可用性)
  • 在项目创建的组件内提供更好的可重用性
  • 改进了内置的配置和 Orchestrator 集成
  • 轻松调整和部署以前未使用 REFramework 创建的工作流,从而使用 REFramework 和调度程序/执行程序模型

6️⃣ 调度程序和 REFramework 执行程序演示

♈ 创建REFramework项目

首先,我们用Templates中的REFramework创建一个项目,如下图所示。

11.png

Main.xaml 已打开,其中显示有一个序列。

12.png

在Main文件中我们可以看到上述提到的4个状态。

♉ Initialization

打开Initialization状态机,我们可以看到读取了Config文件中的Settings和Constants页的数据,通过字典类型缓存起来。

在 InitAllSettings 工作流中,您要加载与应用程序或流相关的所有设置和数据。在此状态下使用的文件之一是 Config 文件,它位于项目的“数据”文件夹中。

其中包含有关设置、常量和资产的各种信息。根据需要,这些信息可用于处理数据和配置 REFramework,在“REFramework 深入探索”课程中可以了解有关 Config 文件的详细信息。

13.png

14.png

15.png

♊ Get Transaction Data

16.png

♋ Process Transaction

17.png

♌ End Process

18.png

♍ 方法

1. 调度程序:-从 Excel 文件获取条目,并在 Orchestrator 中将其添加为队列项目。

首先,我们创建了一个序列项目,然后添加了“Try Catch 异常处理”活动。在“尝试”块中:

  • 我们使用“读取范围”读取 Excel 文件中的前 10 行(A1:C11),并将其存储在新建的 DataTable 变量中;
  • 我们使用“遍历每一行”来循环遍历的 DataTable 变量中行,并使用“添加队列项目”活动将其添加到队列中。
  • 我们使用“日志消息”活动来记录已成功执行调度流程的消息。

2. 执行程序- 从队列中获取并处理项目(事务)

a. 在初始状态下:

  • 调用 InitAllSettings 工作流,以初始化使用的应用程序和流程的所有设置和数据。在这个部分,系统将读取“数据”文件夹中 Config.xlsx 文件的设置、常量和资产;
  • 调用 InitAllApps 工作流,以打开应用并检查其状态、凭据等;
  • 调用 KillAllProcesses 工作流,以保留使用的应用程序的单个实例。

任何系统错误都会让流程进入结束流程状态。

b. 在获取事务数据状态下:

  • 序列中,使用 “should stop” 活动来验证 Orchestrator 是否发送了停止信号。
  • 如果没有, 则调用“获取事务数据”工作流,该工作流使用“获取队列项目”活动来从 Orchestrator 获取事务信息。

如果没有要读取的数据,它会进入结束流程状态。

c. 在流程事务状态下:下:

  • 流程是一个使用“尝试捕获”活动集来捕获系统异常和业务异常的序列
  • 在“

    尝试

    ”块中,调用

    “处理事务”工作流,

    它具有一个简单的流程,用于:

    • 附加到 UiDemo 应用程序
    • 3 个“输入信息”活动用于填写“兑现”、“银行内求偿支票”和“非银行内求偿支票”字段;
    • 'Click“接受”按钮。

d. 在结束流程状态下,使用“关闭应用程序”。

7️⃣ 参考资料

GitHub UiPath REFramework


相关实践学习
基于阿里云短信服务的防机器人验证
基于阿里云相关产品和服务实现一个手机验证码登录的功能,防止机器人批量注册,服务端采用阿里云ECS服务器,程序语言选用JAVA,服务器软件选用Tomcat,应用服务采用阿里云短信服务,
相关文章
|
1月前
|
网络协议 机器人 C++
KUKA机器人Socket通讯配置方法:技术干货分享
【10月更文挑战第7天】在现代自动化生产线上,KUKA机器人凭借其高效、灵活和精确的特点,成为众多企业的首选。为了实现KUKA机器人与其他设备或系统之间的数据交互,Socket通讯配置显得尤为重要。本文将详细介绍KUKA机器人Socket通讯的配置方法,帮助大家在工作中更好地掌握这一技术。
187 2
|
2月前
|
安全 搜索推荐 机器人
纳米技术与医疗:纳米机器人的临床应用前景
【9月更文挑战第28天】纳米机器人作为纳米技术在医疗领域的重要应用,正逐步改变着传统医疗的面貌。它们在药物输送、癌症治疗、手术辅助和疾病诊断等方面展现出广阔的应用前景。随着科学技术的不断进步和纳米技术的不断成熟,我们有理由相信,纳米机器人将成为医疗领域的一个重要且不可或缺的组成部分,为人类的健康事业做出更大的贡献。同时,我们也应关注纳米技术的安全性和可靠性问题,确保其在医疗应用中的安全和有效。
|
3月前
|
机器学习/深度学习 自然语言处理 算法
聊天机器人开发的最佳实践:技术探索与案例分析
【8月更文挑战第22天】聊天机器人作为人工智能领域的重要应用之一,正逐步改变着人们的生活和工作方式。通过遵循最佳实践和技术探索,开发者可以开发出更加智能、高效、安全的聊天机器人产品。未来,随着技术的不断进步和应用场景的不断拓展,聊天机器人将在更多领域发挥重要作用。
|
3月前
|
监控 前端开发 机器人
RPA机器人
【8月更文挑战第4天】RPA机器人
194 3
|
3月前
|
人工智能 机器人 API
RPA机器人的发展趋势?
【8月更文挑战第4天】RPA机器人的发展趋势?
151 3
|
3月前
|
Apache UED 数据安全/隐私保护
揭秘开发效率提升秘籍:如何通过Apache Wicket组件重用技巧大翻新用户体验
【8月更文挑战第31天】张先生在开发基于Apache Wicket的企业应用时,发现重复的UI组件增加了维护难度并影响加载速度。为优化体验,他提出并通过面板和组件重用策略解决了这一问题。例如,通过创建`ReusableLoginPanel`类封装登录逻辑,使得其他页面可以轻松复用此功能,从而减少代码冗余、提高开发效率及页面加载速度。这一策略还增强了应用的可维护性和扩展性,展示了良好组件设计的重要性。
57 0
|
3月前
|
人工智能 自然语言处理 机器人
掌握未来沟通的艺术:运用TensorFlow与自然语言处理(NLP)技术,从零开始构建你的专属智能对话机器人,让机器理解你的一言一行
【8月更文挑战第31天】本文详细介绍如何利用TensorFlow与自然语言处理技术开发对话机器人。从准备问答数据集开始,通过预处理、构建Seq2Seq模型、训练及预测等步骤,最终实现了一个简易的聊天机器人。示例代码涵盖数据加载、模型搭建及对话功能,适合希望在实际项目中应用AI技术的开发者参考。
47 0
|
3月前
|
机器学习/深度学习 监控 机器人
RPA技术在金融行业中的几个关键应用领域
【8月更文挑战第4天】RPA技术在金融行业中的几个关键应用领域
200 2
|
3月前
|
监控 前端开发 安全
RPA机器人的工作原理?
【8月更文挑战第4天】RPA机器人的工作原理?
137 1
|
3月前
|
监控 BI 数据处理
RPA技术在金融领域的应用?
【8月更文挑战第4天】RPA技术在金融领域的应用?
74 1