2.1 流控制、序列、分支
变量
在开始本节之前需要先说明UiPath中的变量,你可以随意的在文本框中使用和定义变量。定义的变量有4种属性。
Name: 变量名称
Value: 变量值
Scope: 变量作用域
Type: 变量类型
数据类型
String
任何文本,例如 “Hello World!” , “AG221fk”
int32
整形,例如 201, 33167
Double
浮点数,例如 22.01,444.99
Boolean
布尔值,True或者False
Datetime
日期时间,例如new DateTime(2017, 12, 21)
DataTable
数据表。
Generic Value
各种数据类型,可以保存数值,字符,日期等。这也是UiPath的内置类型,有了它我们流程参数处理起来就更舒服了。
Arguments
参数,是为了方便在workflow之间传值。
Flow Decision和IF
控制流程是定义规则和自动决定工作流程的过程。在UiPath中,你可以通过拖拽的方式搭建工作流。一般是通过使用if / else决定,循环等来实现。这一点和很多语言和工具都是类似的。
在UiPath中有两种方式来实现流控制。一种是Flow Decision,另外一种是IF。分别对应流控制(FlowChart)和序列。它们看起来不一样,但是工作原理是一致的。让我们先举个例子:设计一个工作流,判断某一年是否为闰年。大家都知道闰年的判断依据是该年份是否为4的倍数。
使用Flow Decision实现
- input dialog输入框 在这个输入框中,我们提示用户输入年份,根据用户输入的年份来判断是否为闰年。并需要创建一个类型为Int32的变量year来接受用户输入的值。
- Decision使用Flow Decision,它的输出有两条,一条为True,另一条为false。Decision有一个核心的参数是Condition。该参数的返回值是true或者false。这里我们需要判断是否为闰年,其实就是年份除以4是后的余数是否为0,表达式为“year mod 4 = 0”
- 闰年,如果decision为true,弹出对话框提供用户为闰年。
- 非闰年,如果decision为false,弹出对话框提供用户为非闰年。
使用IF实现
- input dialog输入框
在这个输入框中,我们提示用户输入年份,根据用户输入的年份来判断是否为闰年。并需要创建一个类型为Int32的变量year来接受用户输入的值。 - IF,有三个需要填写,一个条件,两条输出。条件写:year mod 4 = 0,输入Then和Else。
- Then,闰年,弹出对话框提供用户为闰年。
- Else,非闰年,弹出对话框提供用户为非闰年。
总的来说,IF适合简单的判断,因为输出只有then和else。当然你也可以嵌套IF。
LOOP
循环,循环是最常用于自动执行重复任务的结构。循环是大多数项目中必不可少的元素。在UiPath中有几种重复某些任务的方法。
- 最简单的是流程图模式,用连接线连出一个循环模型。
- 使用While
- 使用Do While/while
- 使用For Each
使用流程图模式来构建循环
我们对上节中提到的流程稍微修改-只有当用户输入为闰年的时候流程才会终止,否则会不断的循环判断。
While和Do While
while和do while两种方式其实差不多,区别在于执行动作的先后。看看UiPath给出的两者图就一目了然了。
当然你可以接着使用闰年这个例子来体验一下这三种方式。
For Each
foreach的循环有些不同。
它通过遍历项目列表,一次一个项目执行操作。
for each我们可以举一个例子,比如需要输出某个文件夹下的文件清单。
- 首先使用select folder来让用户选择目录,并创建一个变量selectedFolder来接收这个目录信息。
- 使用Assign来赋值,创建新的变量filelist,其类型为List < String >,使用UiPath的库Directory.GetFiles(selectedFolder)来获取目录信息。
- 使用foreach来循环filelist,并把每一个item输出到控制台。 例如:
小结
为了更好的理解本节内容,我们使用一个例子来回顾。设计一个猜数字的游戏。计算机选择0到1000之间的随机数,我们将尝试猜测它。它会根据你的猜测提示 - 更高或更低,直到你猜出答案。
整个过程:
- 计算机生成0-1000的随机数
- 用户输入数字
- 判断,反馈
整个demo做起来应该比较简单。
取0-1000的随机值的函数为: new Random().Next(0,1000)。其他节点非常清晰。另外可以考虑其他的方法。