关于变量
1、什么是变量
变量是任何一种编程语言都不可或缺的概念,在花漾RPA中也是如此。 可以简单的认为,花漾RPA中的变量,无论是变量类型还是声明与使用方法,都和JavaScript中的变量是大同小异的。或者更确切的说法是,花漾RPA中的变量, 可以理解成是JavaScript语法集中的一个子集,因此,您在JavaScript中如何使用变量,就可以在花漾RPA中如何使用变量。
2、变量类型
在花漾RPA中可以声明的变量类型主要有:数字、字符串、布尔值、数组、网页元素等。这里特别需要指出的是“网页元素”这种变量类型,它是驱动花漾RPA引擎非常重要的概念, 很多流程节点中的参数类型均为网页元素,如点击元素、输入内容、滚动页面等等,关于网页元素更详细的介绍请参考 网页元素 章节。
3、系统变量
系统变量是指当RPA引擎在驱动一个流程定义时,您可以在流程定义中能够获取的运行期上下文环境信息,如下图所示:

《在流程定义中可以获取到的系统变量》
3、用户自定义变量
顾名思义,用户自定义变量是指由用户按照业务逻辑编写的需要,自行声明的变量。与JavaScript稍有差异的是,在花漾RPA中, 任何一个用户自定义变量都需要事先声明,且全局有效——这固然会带来一定的僵硬,但不失为一种简单且无歧义的方案。

《设置用户自定义变量》
用户自定义变量又包含普通变量与输入变量两种类型。无论是普通变量还是输入变量,都在当前RPA流程定义中全局有效,只是对于输入变量而言,在流程执行前, 需要由用户手动指定变量的具体值。
4、变量赋值
变量赋值有三种方法,分别是在变量声明时赋以初始值,再或者可以通过流程节点“变量赋值”完成。

《在声明变量时赋以初始值》

《通过变量赋值的流程节点完成对变量的赋值操作》
当然,第三种方法是在用户自定义脚本中,可以获取变量的值,也可以更改变量的值。
5、变量引用
变量的最核心目的显然是用在程序逻辑的编写过程中,换言之,在流程节点“执行脚本”中的基本要求是:能够引用变量,并能够对变量进行取值与赋值。 但需要注意的是,在“执行脚本”中引用变量,需要准备一系列取值与赋值的 helper 语句,如下图所示:

《通过取值与赋值的helper语句完成在浏览器JS引擎中引用变量的目的》
似乎有些多此一举,为何要这样做?答案是:是出于安全的目的。我们都知道,在执行用户自定义脚本时需要有一个JS引擎才能够完成, 而这个引擎只能是当前浏览器的JS引擎,但考虑到RPA的核心思路是模拟人的操作,应该完全杜绝对浏览器的干扰以免产生安全风险, 因此,当在执行流程定义中的JS脚本时,花漾RPA的实现思路是:在浏览器的JS引擎中注入一段完全封装的函数从而与当前浏览器正在执行的网页完全隔离, 在此函数中,显然是无法“直接看到”在流程定义中声明的变量,因此,只能通过参数,将所有的变量传递到函数中,由此带来的后果是, 如果要在JS引擎中引用在流程定义中声明的变量,必须通过一系列 helper 语句,将变量复制过来。同样道理,如果在JS引擎中对变量的值发生了改变并希望传递回RPA流程定义, 那么也需要准备一系列赋值的 helper 方法,将变量值再次传递回去。