Uipath—工作流之状态机

一、 什么是状态机

大家一致对于状态机的认识为:在UiPath中状态机是一种自动化的类型,它在执行过程中使用有限的状态,可以在活动触发时进入状态,在另一个活动被触发时退出状态。

当然了状态机也是一种工作流类型,但是在一定程度上是独立的。我们在进行流程构建的时候,可以在状态机中使用Sequence和Flowchart。这样一来,状态机就可以实现更加复杂的流程了。

状态机的另一个重要方面是Transition(转换),而且其可以使我们添加从一个状态跳转到另一个状态的条件,这些条件由箭头或状态之间的分支表示。

State、Final State是属于状态机的两个特定的活动,官网文档中说道:我们只能创建一个初始状态,但是有可能有多个Final State(最终状态)。这个很好理解,毕竟初始开始状态是需要唯一的。

二、State和Final State

官网文档写到State 活动包含三个部分,Entry, Exit 和 Transition,而 Final State 只包含一个部分 Entry。拖拉这些活动到设计器中之后,可以通过双击来进行活动的展开,以查看更多的信息并编辑它们。

我们先拖动一个State到设计器中看看他长什么样子:

Final State:

可以看出State活动有三个部分,而Final State活动中只有Entry部分。

在State活动中,Entry和Exit是用来添加哪些活动的呢?为所选状态添加进入和退出时要执行的活动。而Transition用于显示当前连接到所选状态的所有转换。

在Final State活动中Entry为所选状态添加进入和退出时要执行的活动,详细信息我们将在后续案例中进一步阐述。

State活动包含的3个部分:

Entry:主要为所进入的状态添加想要执行的活动。

Exit:主要为所退出的状态添加想要执行的活动。

Transition(s):则会显示连接到当前所选状态的所有转换。

三、 状态机案例

一般来说状态机适合某种情况发生执行另一种情况的流程,比如说这样的一个场景:我们的流程执行是使用一封邮件是否到达来触发,当邮件到达的时候我们就处理邮件,按照邮件附件Excel信息执行某一个RPA流程,执行成功后将成功信息反馈给业务人员;如果没有邮件(一般为指定邮件主题的邮件)到达,我们就反馈其他的信息。这样的一种RPA场景就比较适合使用状态机来执行。

为了让大家更加容易的来了解状态机流程,我们仍然以之前的猜数字的游戏来进行举例:

3.1 先新建一个流程名为:“state_machine_example”,点击“DESIGN”选择“NEW”下的“State Machine”并点击它。之后在弹出的状态机对话框中输入State_Machine_test1即其他信息如下所示:

点击create之后的界面如下:

3.2 上述步骤完成之后,我们在变量面板中定义两个变量,一个为我们猜测的数字OurGuessNum,一个为随机产生的数字RandomGenerNum,变量类型我们都选择int32型的,如下所示:

3.3 接着我们拖动一个State活动连接到设计器面板中显示的“start”节点下,并连接起来,然后双击State活动展开它,其在设计面板中的状态如下所示:

3.4 我们使用中文对State活动重新命名,次处我们将此State命名为:随机数字的生成。接着我们拖动一个Assign活动置于Entry当中,并且设置一个表达式:

RandomGenerNum = new Random().Next(1,50)

即Assign的To输入框中输入RandomGenerNum ,在Value中输入new Random().Next(1,50),示意如下:

3.5 接着我们在之前的State下再连接一个新的State,这个新的State用来对我们的猜测的数据进行一些操作。连接好新的一个State之后,我们把它的DisplayName设置为我们猜测的数字。如下所示:

3.6 我们双击展开这个活动,拖动一个Input Dialog置于Entry中,注意的是在Value entered填写我们之前我们设置的参数OurGuessNum,这个参数值是用来接收猜测的数值的,同时填写其他相应的信息,如下所示:(当然了,这些信息都可以在Properties面板中进行设置的)

3.7 上述两步设置好之后,我们返回到主视图,并点展开第一个State,如下所示。通过点击下图三个箭头的字可以进行主视图和编辑视图的切换(点击第一个箭头所指地方就可以回到主视图)。可以看出第一个State下的Transitions(s)已经有了一个T1内容出现,这里我们先不解释它的含义。

3.8 在上述步骤的基础之上,我们新建一个转换,这个转换从“我们猜测的数字”指向自身,如下所示:

3.9 点击T2 Transition(红色框选位置),展开设计面板,如下所示:

可以看出,Transition被展开以后有三个部分:

Trigger(触发器)

Condition(条件)

Destination(目标)

3.10 在展开的T2中我们进行输入一些信息,在Condition中输入两个数字的比较表达式:

OurGuessNum > RandomGenerNum

之后拖动一个Message Box到Action中,并输入内容,最后我们修改一下这个Transition的名字为:猜测的数字过大。如下所示:

3.11 之后同样的操作,我们再创建一个指向自身的Transition,并双击展开。在展开的Condition中输入两个数字的比较表达式:

OurGuessNum < RandomGenerNum

之后拖动一个Message Box到Action中,并输入内容,最后我们修改一下这个Transition的名字为:猜测的数字过大小。如下所示:

返回项目主视图,如下所示:

3.12 在此基础之上,我们拖动一个Final State到主视图中并连接到“我们猜测的数字”State上。如下所示:

3.13 之后双击展开连接“Final State”的T2,之后在条件(Condition)中输入:

OurGuessNum = RandomGenerNum

并拖动一个Message Box 置于Action中,并输入:你真棒,猜中了哦,那么随机产生的数字为:!+ RandomGenerNum.ToString,同时更改“T2”为“猜对了”。这里要注意,我们在输入信息的时候要使用英文的引号。如下所示:

3.14 最后我们回到主编辑视图,可以看到我们建立的流程各个活动如下

3.15 我们运行按快捷键Ctrl+F6运行此流程,我猜测的过程如下:

当然了,我们也可以将鼠标置于该状态机的流程中,然后右键选择“Run to this Activity”:

之后点击DEBUG下的Continue即可运行。

四、总结

总结一下,我们使用状态机实现了一个猜数字的流程。与之前的FlowChart比较,大家可能会更加的习惯FlowChart进行流程的创建,实际上状态机也是比较好用的。

状态机在流程中的主要功能就是进行状态的转换,在Transition中我们通过设计条件来进行状态的改变。使用UiPath工程师都认为State Machine基本上就是有状态转换功能的Flowchart。

通过在State中添加不同的状态(上述案例3个状态),在状态中我们又添加了一些活动(实现不同的操作),整个State的主要用法就是这样。

最后总结一下优缺点:

优点:

(1)有利于较为复杂的连续工作流的创建工作;

(2)使用状态转换可以使得流程更加的灵活。

(3)在一定角度上可以简化流程(比如说复杂的条件判断)

缺点:

(1)比Sequence和FlowChart更难理解一些。

(2)每一个状态转换需要非常明确。

还有一些优缺点小伙伴们可以自由补充,这次的文章内容就到这里,感谢大家的阅读,我们下次再见。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
UiPath REFramework 是一种用于开发、管理和执行自动化流程的框架。它是为了增强机器人的可靠性、可重用性和可维护性而设计的。REFramework 是一个基于状态机的框架,它包括了一套预定义的工作流程和模板,可以用于各种类型的自动化流程。 UiPath REFramework 有以下几个关键特点: 1. 可靠性:REFramework 提供了一些默认的错误处理机制,可以有效地处理异常情况,避免流程中断或失败。它使用了 Try-Catch 方法来捕获异常并采取相应的措施。 2. 可重用性: REFramework 的工作流程和模板是可重用的,可以在不同的自动化流程中进行复用。这样可以提高开发效率,减少重复工作,并且可以维护和管理流程的变化。 3. 可扩展性: REFramework 是一个高度可扩展的框架,可以根据业务需求进行定制和扩展。它允许用户添加自定义的工作流程和逻辑,以完全满足特定的自动化需求。 4. 可维护性: REFramework 有一个清晰的流程结构,它通过状态机的方式来管理整个自动化流程。这使得流程的维护和调试更加容易,可以快速定位和解决问题。 总之,UiPath REFramework 提供了一种高效、可靠、可重用和可维护的自动化开发框架,可以帮助开发人员更好地管理和执行自动化流程。它是 UiPath 平台中一个非常有用和强大的工具,可以显著提高自动化项目的质量和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯子中的傻子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值