【前沿技术RPA】 一文了解 UiPath 状态机 State Machine_uipath百度百科(1)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取


在这里插入图片描述

🌈写在前面:

在本文中,您将学习何时以及如何使用状态机 State Machine工作流布局及其特定活动。了解状态机布局是使用机器人企业框架模板和自动化更复杂流程的关键步骤。为状态机中的状态命名对于维护和未来开发非常重要;在UiPath Studio中,每个状态中显示的转换顺序非常重要,因为它与评估它们的顺序相匹配。


👉本文关键字:RPA、UiPath、Low-code、No-code、State Machine、.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
♌ 本文收获
  • 解释什么是状态机。
  • 区分State MachineSequenceFlowchart
  • 解释何时应使用状态机。
  • 列出一个州内步骤的执行顺序。
  • 根据给定的要求构建基于状态机的流程。
2️⃣ 概述

实践证明,从一开始就为您的工作流程选择正确的布局,不仅可以实现快速、轻松的开发,还可以为您提供更好的扩展和管理方法。

UiPath提供了三个布局形式,用于在开发工作流文件时将活动集成到工作结构中。

♈ Sequence(序列)

序列有一个从上到下流动的简单线性表示,最适合活动相互跟随的简单场景

例如,当导航和键入一次单击/击键时,它们在UI自动化中非常有用。因为序列易于组装和理解,所以它们是大多数工作流的首选布局。

在这里插入图片描述

♉ Flowchart(流程图)

流程图为连接活动提供了更多的灵活性,并倾向于以简单的二维方式布置工作流。流程图最重要的方面是,与序列不同,它们呈现多个分支逻辑运算符。这些使您能够创建复杂的业务流程并以多种方式连接活动。

流程图通常用于包含多个决策点的工作流。

在这里插入图片描述

♊ State Machine(状态机)

有些过程更好地表示为相互连接的状态,这些状态在必要时反复执行。在每个状态中执行一组活动,然后评估一个条件以确定要转换到下一个状态。例如,旋转栅门是一个状态机,至少具有以下状态:空闲、允许访问、拒绝访问和关闭。

  • 在空闲状态下,当机器等待访问卡时,大门被锁定。当一个人出示门禁卡时,机器会评估是否必须接受该卡。
  • 如果卡被接受,旋转栅门将转换为“允许进入”状态,此时大门打开,允许一个人进入。在人员进入或经过一定时间后,机器将转换回空闲状态。
  • 如果卡被拒绝,旋转栅门将转换为“拒绝访问”状态,在该状态下显示该信息,大门将保持锁定。经过一段时间后,机器将转换回空闲状态。
  • 当输入正确的代码时,机器将转换到关闭状态。

在Studio中,状态机工作流布局允许您基于有限数量的状态和转换来设计事件驱动的流程。该布局应用于复杂和连续过程的高级项目组织。因此,状态机通常用于Main.xaml用于RPA框架,如企业级框架Robotic Enterprise Framework

在这里插入图片描述

3️⃣ 理解状态机
♈ 现实生活中的状态机

为了更好地理解与状态机相关的概念,我们将查看恒温器控制空调的表示。

在使用空调UI之前,请务必阅读说明:

  • 使用ON/OFF按钮启动或停止空调。启动后,空调将进入空闲状态。
  • 在“Desired Temp.”(所需温度)字段中写入所需温度,然后单击“SET”(设置)。请注意,工作范围在15度和30度之间,因此任何低于15度或高于30度的值都将分别转换为15和30度。
  • 一旦设定了温度,空调将进入HEAT(加热)或COLD(冷)状态。当达到所需温度时,它将显示在“Current temperature”(当前温度)下,空调将返回IDLE(空闲)状态。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

♉ 状态机工作流演练

让我们分析一下作为Studio自动化项目的空调示例是什么样子。

在这里插入图片描述

如图可以看出,有三个简单的状态(空闲状态、热状态和冷状态)、一个最终状态(关闭)以及基于设置条件在状态之间导航的几个转换。

  • 当期望温度=当前温度时,从怠速状态到怠速状态。
  • 当期望温度>当前温度时,怠速状态变为加热状态。
  • 当期望温度<当前温度时,怠速状态变为冷态。
  • 加热状态和冷态,一旦达到所需温度,则返回到怠速状态。
  • 当用户单击“确定”且用户输入值为“关闭”或“无”时,“空闲状态”变为“关闭状态”。
♊ 具体实现
⭐ State

因为它直接链接到Start节点,所以“Idle State”是自动化启动后用户登录的位置。它看起来可能类似于“主菜单”。在这里,它总是进入状态(除非选择关闭机器)。

  • Entry块包含进入状态时要执行的活动。
  • Exit块包含退出状态时要执行的活动。
  • Transitions块允许您添加将在进入和退出时执行的活动。

“Transitions”部分根据用户输入显示所有下一个目的地。

在这里插入图片描述

⭐ Transitions

当您在状态机容器中将状态链接到另一个状态或最终状态时,将创建Transitions

如观察到的,转换到“目的地”状态(例如热状态)的条件是“期望温度”变量值高于“当前温度”值。

在这里插入图片描述

📘注意:打开时,空调处于过渡状态或状态,因为空调过程是连续的。

⭐ The Final State

当用户键入“OFF”时,状态机将转换到结束进程的状态。在Studio的“工作流”>“状态机”>“最终状态”下可以找到这种类型的状态。在我们的工作流中,它被命名为“关闭”,并在停止自动化过程之前记录消息“AC关闭”。

在这里插入图片描述

📘注意:您只能创建一个初始状态,但也可能有多个最终状态。所有状态机必须包含初始状态和至少一个最终状态。

4️⃣ 使用状态机创建Process

到目前为止,您已经通过与空调UI交互观察到了状态机的概念。之后,您进一步分析了Studio中的实际工作流。

接下来,您将查看在Studio中创建状态机的端到端过程。

♈ 需求

我们将构建一个流程,首先要求用户输入初始账户余额,然后让他们付款,直到初始余额耗尽或决定结束该流程。
为了实现这一点,我们将构建一个具有五个状态的状态机:获取初始余额、获取付款值、进行付款(如果资金可用)、拒绝付款(如果经费不足)和结束过程的最终状态。

♉ 实现

我们将项目作为一个序列启动,然后从Activities面板中添加状态机。

⭐ Get Initial Balance

为了获得用户的初始余额,让我们添加第一个状态。通过将其链接到Start,它将成为流程的初始状态。

在这里插入图片描述

我们将其重命名为Get Initial Balance,并添加一个注释来记录此状态的作用:获取帐户的初始余额。

在这里插入图片描述

要配置状态,我们需要打开它。让我们双击它。我们注意到,一个简单的State有三个可编辑的部分。Entry部分保存了进入状态时将执行的活动。“Exit”部分保存退出状态时将执行的活动,“Transitions”部分描述此状态相对于其他状态的转换。
因此,我们希望在流程的初始状态中实现的是向用户请求初始余额。为此,我们将在输入区域中使用输入对话框活动,并提示用户插入数字。
然后,我们需要将活动的输出存储在名为“InputValue”的字符串变量中。我们将确保为我们计划在其他状态中使用的所有变量设置一个全局范围,在本例中为状态机。

在这里插入图片描述

现在我们需要确保用户提供的输入是有效的。在我们的例子中,输入应该是一个Double(最多16位数字)。要执行此检查,我们将使用If活动和Double。TryParse方法,如果转换成功,则返回布尔值True,如果转换失败,则返回False。
然后,我们将创建一个名为CurrentBalance的新变量,并将其范围设置为State Machine,将其类型设置为Double。注意,我们不能使用Double将转换结果传递给变量。Assign活动中的TryParse方法。
如果InputValue变量的值可以用前面提到的方法解析,那么我们使用Double将其值分配给CurrentBalance变量。解析方法。
如果无法解析InputValue,我们将通过在Else块中使用MessageBox活动通知用户输入无效。
我们还要创建一个新的布尔变量,用于存储有关用户输入有效性的数据。我们将其称为“IsValidInput”,将其范围设置为State Machine,将默认值设置为True。
然后,我们将使用MessageBox下的Assign活动将值False分配给“IsValidInput”。
从这一点来看,执行可以采取两个不同的方向:
如果输入无效,应提示用户关闭付款流程。这意味着流程将转换到其最终状态,因此流程的执行将停止。稍后我们将创建最终状态。
如果输入有效,系统将提示用户输入其付款金额。这意味着流程将转换到“获取付款值”状态。

在这里插入图片描述

⭐ Get payment value

最简单的方法是复制并粘贴Get初始Balance状态,然后将其重命名为Get payment value。
我们还将添加一个注释来记录此步骤的目的:获取当前迭代的付款值。

在这里插入图片描述

现在,让我们双击打开状态并将输入对话框重命名为Payment value。
此时,用户将输入他们想要支付的金额,因此我们需要将该输入存储在名为PaymentValue的新变量中。
我们将其类型设置为Double,并为其提供全局范围。
在复制的Assign活动中,我们现在需要用新创建的变量PaymentValue替换CurrentBalance变量。因此,我们刚才所做的工作有助于我们涵盖用户添加有效双精度值或无效双精度值的两种情况。

在这里插入图片描述

在这里插入图片描述

⭐ Final State

回到状态机视图,我们注意到我们的过程还没有最终状态。使用状态机时,必须有一个状态机。
让我们将“Final State”活动拖到工作流的底部。

在这里插入图片描述

我们将双击打开状态。你可以看到,最终状态的结构不同于简单状态的结构。唯一可用的块是Entry块,它保存了进入状态时执行的活动。顾名思义,这是流程可以处于的最后一个状态,因此我们无法定义从最终状态到任何其他状态的任何转换。
现在让我们回到我们的例子。当用户到达这一点时,我们希望通知他们流程已完成。
我们将通过在最终状态的入口块中使用MessageBox活动来实现这一点。所以,我们现在有一个初始状态,一个简单状态和一个最终状态。是时候添加第一个过渡了。

在这里插入图片描述

⭐ Valid Input

至此,用户将输入他们的初始余额。

接下来,他们将被提示输入他们的付款值。只有当我们在Get initial Balance状态和Get payment value状态之间创建转换时,才能触发该操作。
我们通过在Designer面板中简单地连接两者来实现这一点。
然后双击打开转换并将其重命名为有效输入。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

过在Designer面板中简单地连接两者来实现这一点。
然后双击打开转换并将其重命名为有效输入。

[外链图片转存中…(img-dLcw3znj-1715362989180)]
[外链图片转存中…(img-RjaZ3Ztj-1715362989180)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值