状态机是一种自动化的类型,它在执行过程中使用有限的状态。它可以在活动触发时进入状态,在另一个活动被触发时退出状态。
状态机的另一个重要方面是 Transition(转换),因为它们还使您能够添加从一个状态跳转到另一个状态的条件。这些条件由箭头或状态之间的分支表示。
有两个特定于状态机的活动。 一个叫被叫做 State , 你可以在 System > Activities > Statements 找到它,另一个是 Final State , 位于 Core > Presentation > Factories。
注意:
您只能创建一个初始状态,但是有可能有多个 Final State (最终状态)。
State 活动包含三个部分,Entry, Exit 和 Transition(s),而 Final State 只包含一个部分 Entry。所有这些活动都可以通过双击来展开,以查看更多信息并编辑它们。
Entry 和 Exit 部分使您能够为所选状态添加输入和退出触发器,而 Transition(s) 部分则显示链接到所选状态的所有转换。
转换在双击它们时展开。就像State 活动一样,它们也包含三个部分,Trigger, Condition 和 Action,使您能够为下一个状态添加触发器,或者添加要执行活动或序列的条件。
使用状态机的实例
为了举例说明如何使用状态机,我们将构建我们在前一章中所做的猜测游戏,唯一的区别是我们将尝试猜测一个介于 1 到 100 之间的数字。
- 创建一个空白项目,并在 Design 选项卡上的 File 按钮组中选择 New > State Machine。将显示 New Diagram 窗口。
注意:
还可以向 Designer 面板添加 State Machine 活动,以创建新的状态机自动化。
- 创建两个整数变量,分别命名为 intGuess 和 intRandomNumber。第一个变量存储你的猜测值,而第二个变量存储随机数。
- 将 State 活动添加到设计器面板,并将其连接到 Start 节点。这是初始状态,用于生成随机数。
- 双击该活动。这个 State 活动将会在设计器面板中展开。
- 在 Properties 面板中的 DisplayName* 字段中,键入初始化随机数字。这使您可以很容易地区分状态。
在 Entry 部分,添加一个 Assign 活动。
在 To 字段,添加变量 intRandomNumber 。
在 Value 字段,键入 new Random().Next(1,100) 。这个表达式将会生成一个随机数。
返回到 Main 视图并添加一个新的 State 活动
将其连接到前面创建的活动
双击刚刚添加的 State 活动。它将会在设计器面板中展开。
在 Properties 面板的 DisplayName 字段,键入 猜测数字。这个状态是用来弹框给用户猜测数字的。
在 Entry 部分,添加 一个 Input Dialog 活动。
选择 Input Dialog 活动,并在 Properties 中填写适当的 Label 和 Title 信息,以提示用户猜测介于 1 和 100 之间的数字。
- 在 Result 字段中,添加 intGuess 变量。此变量存储用户的猜测值。
- 返回项目 main 视图,并创建一个从猜测数字状态指向自身的转换。
- 双击 Transition T2,它将在设计面板中展开显示。
- 在 Properties 面板中的 DisplayName 字段中,键入尝试更小的数字。此消息显示在箭头上,使您能够更容易地运行自动化。
- 在 Condition 部分,输入 intGuess>inandomNumber。这将验证用户的猜测是否大于随机数。
在 Action 部分中,添加一个 Message Box 活动。
在 Text 字段中,键入 您的猜测值太大,请尝试输入更小的数字 的信息。当用户的猜测大于随机数时,将显示此消息。
- 返回主项目视图并创建一个从 Guess Number 指向自身的新 Transition
双击 Transition* ,将其显示在设计面板中。
在 Properties 面板中的 DisplayName 字段中,键入尝试更大的数字。此消息显示在箭头上,使您能够更轻松地运行自动化。
在 Condition 部分,输入 intGuess < intRandomNumber 。这将会验证猜测值是否小于随机值。
在 Action 一节中,添加一个 Message Box 活动。
在 Text 字段中,键入类似于“您猜测的数字太小,请尝试更大的数字” 的信息。当用户猜测的值小于随机数时,将显示此消息。
- 返回项目主视图并向设计器面板添加 Final State 活动,将 猜测数字 活动与之连接。
双击从 猜测数字 活动到 Final State 的 Transition(T2)。
在 Properties 面板的 DisplayName 字段中,键入“猜测正确”。
在 Condition 字段中输入 intGuess = intRandomNumber 。这是此自动化进入最终状态和结束的条件。
双击 Final State 活动,它将会在 Designer 面板中展开显示。
在 Entry 部分,添加一个 Message Box 活动。
- 在 Text 字段中,键入 "恭喜你, 你猜对了!该数字是 : " + intRandomNumber.ToString + "." 的内容。这是用户正确猜测数字时要显示的最后消息。
最后的项目应该像下面的屏幕截图一样:
- 这时点击 F5,自动化程序应该能正确执行。
输入正确的数字后,程序会自动终止。
标注:
关于状态机的介绍,原文文档并不友好。State,Transition 和 Final State 概念很容易引起歧义。原文解释部分缺少对应的图片,非常影响理解。译者在实践的过程中把相关的图片剪切下来贴到翻译稿里面,以求使这部分内容更加易于理解。严格来说,这一篇译文并不完全忠于原文,而是在原文的基础上增加了很多内容。-- 译者
返回目录
UiPath 常见问题及解决办法汇总
更多 UiPath 相关的资讯,请关注公众号:流程自动化机器人教程
由于简书禁止直接在文章中插入公众号二维码,请点击 这里 了解添加该公众号的细节。