
3.4.1 参数的概念
参数专门保存一个流程中必须的但是不确定的数据,可以将其看作是一种特殊的变量。与变量不同的是,变量在活动之间传递数据,而参数在流程之间传递数据。我们使用参数是由于流程中可能必须有某些数据才能正常执行,但这些数据又不是固定的,需要外界在流程执行时动态传入具体值。
今后,当一个流程中必须有某些来自外部的数据才能正常执行时,我们就可以使用参数来实现。也可以在定义这些数据时暂时不确定数据的具体值,使用参数为将来可能进入流程中的数据占位。在流程执行时,外部程序会将流程所需的具体数据传给参数,再执行流程。
使用参数的好处是,我们可借助参数让同一个流程处理多种不同的数据,使我们可以反复使用这些流程,让流程变得更灵活。
首先,我们来看一下Studio中的Arguments面板,它用于管理参数,位于Variables面板的右侧,如图3-198所示。

图3-198 Arguments面板
Arguments面板中4个字段的含义如下。
□Name(名称):必填,用于填写参数名称。
□Direction(方向):必填,用于填写参数传递的方向。
□Argument type(参数类型):必填,用于填写变量的类型。
□Default value(默认值):选填,用于为参数设定默认值。
其中,参数的方向共有以下4种选项。
□In:输入方向,参数用于将数据传入给定的流程,且仅可以在给定的流程中使用。当我们想把数据传入其他流程中时,就要选择In方向。
□Out:输出方向,参数用于从给定的流程传出数据。当我们想把数据从其他流程中传出来时,就要选择Out方向。
□In/Out:输入/输出方向,参数既可以用于将数据传入给定的流程,也可以用于从给定的流程传出数据。当我们想把数据传入其他流程中,经过处理再从该流程传出来时,就要选择In/Out方向。
□Property:目前没有被使用。
在Studio中,创建参数的方式共有3种。
第一种方式:通过活动主体创建参数,如例3.20所示。
【例3.20】完成打印入学年份的流程。已知某学校学生的学号是由入学年份(4位)+专业编号(2位)+班级编号(2位)+个人序号(2位)组成的。创建一个项目,截取学号为2011140322的学生的入学年份,最后在Output面板中显示结果(要求:通过活动主体创建In方向参数)。流程图如图3-199所示。
具体实现步骤如下所示。
1)进入Studio界面,点击Process创建一个新流程,命名为3_20_CreateArgument-ByActivity,如图3-200所示。

图3-199 流程图

图3-200 新建流程
2)拖入一个Sequence活动到设计器面板。在Properties面板中,将Sequence活动的DisplayName属性更改为“取得学生入学年份”,如图3-201所示。

图3-201 拖入Sequence活动并更改属性
3)拖入一个Assign活动到“取得学生入学年份”活动。在Properties面板中,将Assign活动的DisplayName属性更改为“截取入学年份”,在Value属性中输入“"2011140322".Substring(0,4)”,如图3-202所示。

图3-202 拖入Assign活动并更改属性
4)在“截取入学年份”活动主体的To输入框中右击,从弹出的菜单中选择Create In Argument(快捷键Ctrl+M),系统随即会在输入框中显示“Set Arg:”字样,输入想要创建的参数名称in_EnrollmentDate后按下回车键,如图3-203所示。

图3-203 在活动主体创建参数
5)在Arguments面板中检查参数in_EnrollmentDate的方向和类型,如图3-204所示。

图3-204 在Arguments面板检查参数方向和类型
6)拖入一个Write Line活动到“取得学生入学年份”Sequence中。在Properties面板中,将DisplayName属性更改为“输出入学年份”,在Text属性中输入“"该学生入学年份为:"+in_EnrollmentDate”,如图3-205所示。

图3-205 输出入学年份
7)按F5键执行流程,将在Output面板中显示执行结果,如图3-206所示。
第二种方式:通过Properties面板创建参数,如例3.21所示。
【例3.21】通过Properties面板创建参数的方式创建一个Out方向参数完成例3.20中的需求。
具体实现步骤如下所示。
1)进入Studio界面,点击Process创建一个新流程,命名为3_21_CreateArgument-ByPropertiesPanel,如图3-207所示。

图3-206 执行结果

图3-207 新建流程
2)参照例3.20中的第2、3步创建项目,完成后如图3-208所示。

图3-208 参照例3.20创建项目
3)在“截取入学年份”活动的Properties面板中,在To属性的输入框中右击,从弹出的菜单中选择Create Out Argument(快捷键Ctrl+Shift+M),系统随即会在输入框中显示“Set Arg:”字样,填写想要创建的参数名称(out_EnrollmentDate)后按下回车键,如图3-209所示。

图3-209 在Properties面板创建参数
4)在Arguments面板中检查参数out_EnrollmentDate的方向和类型,如图3-210所示。

图3-210 在Arguments面板检查参数方向和类型
5)拖入一个Write Line活动到“取得学生入学年份”Sequence中。在Properties面板中,将DisplayName属性更改为“输出入学年份”,在Text属性中输入“"该学生入学年份为:"+out_EnrollmentDate”,如图3-211所示。

图3-211 输出入学年份
6)按F5键执行流程,将在Output面板中显示执行结果,如图3-212所示。

图3-212 执行结果
第三种方式:通过Arguments面板创建参数,具体步骤如下:
【例3.22】通过Arguments面板创建参数的方式创建一个In/Out方向参数完成例3.20中的需求。
具体实现步骤如下所示。
1)进入Studio界面,点击Process创建一个新流程,命名为3_22_CreateArgumentBy-ArgumentsPanel,如图3-213所示。

图3-213 新建流程
2)参照例3.20中的第2、3步创建项目,完成后如图3-214所示。
3)在Arguments面板中,点击Create Argu-ment,系统将会自动生成一个参数,以此方式创建的参数默认方向为In,默认类型为String型,如图3-215所示。

图3-214 参照例3.20创建项目

图3-215 在Arguments面板创建参数
4)更改参数的Name字段为io_EnrollmentDate,如图3-216所示。

图3-216 更改参数属性
5)创建参数后,在“截取入学年份”活动的To输入框中输入参数io_EnrollmentDate,如图3-217所示。
6)拖入一个Write Line活动到“取得学生入学年份”Sequence中。在Properties面板中,将DisplayName属性更改为“输出入学年份”,在Text属性中输入“"该学生入学年份为:"+io_EnrollmentDate”,如图3-218所示。

图3-217 存储截取后的入学年份

图3-218 输出入学年份
7)按F5键执行流程,将在Output面板中显示执行结果,如图3-219所示。

图3-219 执行结果
如果需要删除一个参数,可以在Arguments面板中选中该参数右击,在弹出的菜单中选择Delete选项,或选中该参数后直接按下Delete键,如图3-220所示。
在UiPath中,参数的数据类型与变量的数据类型用法一致。
参数命名的注意事项也与变量基本一致,但建议用前缀来指明参数方向,如in_FileName、out_TotalValue、io_EmployeeNumber等。

图3-220 删除参数的方式