admin管理员组

文章数量:1530842

2023年12月14日发(作者:)

2 基本概念

2.1 概念

我们先来看下这四个基本概念。这几个概念之间都是包含关系,一个流程包含多个流程块,一个流程块包含多个命令,一个命令包含多个属性。

流程

流程块

命令

属性

第一个概念是流程。所谓流程,是指要用UiBot来完成的一项任务,一个任务对应一个流程。虽然可以用UiBot陆续建立多个流程,但同一时刻,只能编写和运行一个流程。将来在使用UiBot Worker和UiBot Commander的时候,也是以流程为基本单元来使用的。

如果您之前用过按键精灵,那么“流程”大致相当于按键精灵中的“脚本”。当然,UiBot中的“流程”和按键精灵中的“脚本”又有一定的差异,比如“流程”包含一个文件夹,而不只是一个文件。更重要的差异是:UiBot中的流程,都是采用流程图的方式来显示的。

俗话说得好,“纸上得来终觉浅,绝知此事要躬行”,UiBot是一种实践性很强的工具,所以我们建议在学习本教程的同时,打开UiBot软件,亲自将里面的内容实践一下,相信学到的知识会更加深刻。

UiBot内置了一些经典流程的范例,初学者可以打开这些流程范例,试试运行这些流程,进行仿照学习,当然也可以自己新建一个流程。

2.2 流程图

新建或打开UiBot中的流程后,可以看到,每个流程都用一张流程图来表示。

在流程图中,包含了“辅助流程”、“流程块”、“判断块”、“子流程”和“结束”五种组件,它们之间是用箭头连起来的。如图:

UiBot的流程图

每个流程图中必须有一个、且只能有一个“开始”组件。顾名思义,流程从这里开始运行, 并且沿着箭头的指向,依次运行到后续的各个组件。

每个流程图中,可以有一个或多个“结束”组件,流程一旦运行遇到“结束”组件,自然就会停止运行。当然也可以没有“结束”组件,当流程运行到某个流程块,而这个流程块没有箭头指向其它流程块时,流程也会停止运行。

每个流程图中,可以有一个或多个“辅助流程”,当然也可以没有“辅助流程”组件。在程序运行过程中,“辅助流程”和主流程会同时运行。主流程结束,“辅助流程”马上会结束。“辅助流程”结束,主流程不一定结束。流程图变量在主流程和“辅助流程”彼此独立。

每个流程图中,可以有一个或多个“判断”组件,当然也可以没有“判断”组件。在流程运行的过程中,“判断”组件将根据一定的条件,使后面的运行路径产生分叉。条件为真的时候,沿着“yes”箭头运行后续组件;否则,沿着“no”箭头运行后续组件。如果您是UiBot的新手,可能暂时还用不到“判断”组件。本章后续部分会详细叙述“判断”组件。

每个流程图中,可以有一个或多个“子流程”组件,当然也可以没有“子流程”组件。在流程运行过程中,运行到“子流程”后,会进入内部执行流程,内部执行执行完成后,继续按箭头方向运行后续流程。

最后,也是最重要的,流程图中必须有一个或多个“流程块”,流程块是本章要介绍的第二个重要概念。

我们可以把一个任务分为多个步骤来完成,其中的每个步骤,在UiBot用一个“流程块”来描述。比如,假设我们的任务是“把大象装进冰箱里”,那么,可以把这个任务分为三个步骤:

把冰箱门打开

把大象塞进去

把冰箱门关上

上述每个步骤就是一个流程块。当然,这个例子只是打个比方,UiBot并不能帮我们把冰箱门打开。但通过这个例子可以看出,在UiBot中,一个步骤,或者说一个流程块,只是大体上描述了要做的事情,而不涉及到如何去做的细节。

UiBot并没有规定一个流程块到底要详细到什么程度:流程块可以很粗,甚至一个流程里面甚至可以只有一个流程块,在这种情况下,流程和流程块实际上已经可以看作是同一个概念了;流程块也可以很细,把一个流程拆分成很多流程块。那么究竟拆分成多少个最合适?这取决于您的个人喜好。但是,我们有两个建议:一是把相对比较独立的流程逻辑放在一个流程块里;二是流程块的总数不宜太多,一个流程中最好不要超过20个流程块。

为什么这样建议呢?因为UiBot中“流程图”的初衷,是为了让设计RPA流程的“业务专家”和使用RPA的“一般工作人员”能够更好的沟通。双方在设计初期就确定大致步骤,划分流程块,然后,业务专家再负责填写每个流程块里面的细节,而一般工作人员就无需关注这些细节了。显然,在这个阶段,如果流程块的数量过多,沟通起来自然也会更加困难。

在UiBot的工具栏上,有一个“运行”按钮。在流程图界面中,按下这个按钮以后,会从“开始”组件开始,依次运行流程中的各个组件。而每个流程块上还有一个蓝色小三角形,实际上也是一个按钮,按下之后,就会只运行当前的流程块。这个功能方便我们在开发RPA流程时,把每个流程块拿出来单独测试。

每个流程块上还有一个形状类似于“纸和笔”的按钮,按下之后,可以查看和编写这个流程块里面的具体内容。具体的编写方法,通过“可视化视图”来完成。

2.3 可视化视图

上一节提到,每个流程块上还有一个形状类似于“纸和笔”的按钮,点击该按钮,可以查看和编写这个流程块里面的具体内容,界面从“流程视图”转到“可视化视图”。

流程图中点击编辑流程块

UiBot编写流程块的“可视化视图”,界面如下:

流程块编辑界面(可视化视图)

图中用三个红框标明了三个主要区域,从左到右分别是命令区、组装区、属性/变量区。

这里引入第三个重要概念:命令。所谓命令,是指在一个流程块当中,需要告知UiBot具体每一步该做什么动作、如何去做。UiBot会遵循我们给出的一条条命令,去忠实的执行。继续前面的例子,假如流程块是“把冰箱门打开”,那么具体的命令可能是:

找到冰箱门把手

抓住冰箱门把手

拉开冰箱门

当然,和前面一样,这个例子只是打个比方,UiBot并不能把冰箱门打开。UiBot所能完成的几乎所有命令,都分门别类地列在左侧的“命令区”,也就是上图中的第一个红框。包括模拟鼠标、键盘操作,对窗口、浏览器操作等等多个类别,每个类别包含的具体的命令还可以进一步展开查看。

图中第二个红框所包含的区域,称之为“组装区”,我们可以把命令在这里进行排列组合,形成流程块的具体内容。可以从左侧的“命令区”,双击鼠标左键或者直接拖动,把命令添加到“组装区”,也可以在组装区拖动命令,调整它们的先后顺序,或者包含关系。具体的操作方式参见相关实验教程。

命令是我们要求UiBot做的一个动作,但只有命令还不够,还需要给这个动作加上一些细节,这些细节就是我们要引入的第四个概念:属性。如果说命令只是一个动词的话,那么属性就是和这个动词

相关的名词、副词等,它们组合在一起,UiBot才知道具体如何做这个动作。

还用上面的例子来说,对于命令“拉开冰箱门”,它的属性包括:

用多大力气

用左手还是右手

拉开多大角度

在编写流程块的时候,只需要在“组装区”用鼠标左键单击某条命令,将其置为高亮状态,右边的属性变量区即可显示当前命令的属性,属性包含“必选”和“可选”两大类。一般来说,UiBot会为您自动设置每一个属性的默认值,但“必选”的属性还是请关注一下,可能经常需要您根据需要进行修改。对于“可选”的属性,一般保持默认值就好,只有特殊需求的时候才要修改。

您目前看到的组装区的展示方式,称为“可视化视图”。在这种视图中,所有命令的顺序、包含关系都以方块堆叠的形式展现,且适当的隐藏了其中的部分细节,比较容易理解。“可视化视图”体现出UiBot作为RPA平台的“简单”这一重要特点,为此,UiBot的设计者们在“可视化视图”的表现方式、详略程度、美观程度方面都有过认真的思考和碰撞,达到了相对比较均衡的状态。即使是没有任何编程经验的新手,看到“可视化视图”,也可以大致掌握其中的逻辑。

2.4 源代码视图

您也许已经注意到了,在组装区的上面,有一个可以左右拨动的开关,左右两边的选项分别是“可视化”和“源代码”,默认是在“可视化”状态。我们可以将其切换到“源代码”状态,属性变量区会消失,组装区会变成如下图所示的样子:

流程块编辑界面(源代码视图)

采用这种方式展现的组装区,称为“源代码视图”。与“可视化视图”类似,“源代码视图”实际上也展现了当前流程块中所包含的命令,以及每条命令的属性。但没有方块把每个命令标识出来了,也没有属性区把每个属性整齐的罗列出来了,而是全部以程序代码的形式来展现。

如果您对UiBot已经比较熟悉了,那么切换到源代码视图,手不离开键盘即可书写命令和属性。UiBot对源代码视图进行了很多体验上的优化,能帮您快速选择所需的命令,快速填写各个属性,让您以快意的心情书写一条条的命令。

在源代码视图中添加命令

可视化视图和源代码视图描述的都是同一个流程块,它们实际上是同一事物的两种不同展现方式,其内涵都是一模一样的。可视化视图以图形化的方式,突出了各个命令,以及它们之间的关系,适合展现流程块的整体逻辑;源代码视图以程序代码的方式,突出了流程块的本质,并充分展现了其中的所有细节。

飞机的两种视图

打个比方,可视化视图和源代码视图就像是上面这张飞机的视图一样。其实这架F-16飞机的左右两翼是基本对称的,但为什么看起来不一样呢?因为它的右翼采用外观视图绘制,展现整体造型,左翼采用透视视图绘制,展现内部构造。同一架飞机,用两种视图展现不同的内容,才能兼顾不同观众的关注点。同样道理,同一个流程块,用两种视图展现不同的内容,才能兼顾RPA平台的“简单”和“快捷”两大指标。

有的读者会问,究竟我要使用可视化视图,还是源代码视图来进行RPA流程开发呢?其实,您大可不必纠结于此,因为无论您使用哪种视图,都可以随时切换到另一种视图。您在一种视图上无论编写了什么内容,切换到另一种视图以后,这些内容都会100%保留,并以另一种视图的形式展现出来,反之亦然。所以,您完全可以先用可视

化视图,稍微熟悉一点儿以后,切换到源代码视图尝尝鲜,也了解一下内部原理,如果觉得暂时还有困难,再切换回可视化视图就好了。完全没有选择恐惧症!这也是UiBot的强大之处!

另外,源代码视图还有一个好处,当您在论坛上、QQ群里向其他人求助的时候,只要切换到源代码视图,把源代码复制粘贴,即可以文本的方式展现您的流程块。对方可以直接阅读源代码,也可以把源代码的文本粘贴到自己的UiBot中,并切换到可视化视图查看。这样交流的效率会大大提高。

在源代码视图中使用的编程语言,是UiBot自研的BotScript语言,具体的语言特性,将在后文详细描述。

2.5 小结

我们在这一章学习了四个重要概念:流程、流程块、命令、属性。一个流程包含多个流程块,一个流程块包含多个命令,一个命令包含多个属性。我们还看到了三种视图:流程视图、可视化视图、源代码视图。流程视图是流程的展现,可视化视图和源代码视图都是流程块的展现。它们之间的关系如下图所示:

四个概念和三个视图的关系

2.6 进阶内容

本节是进阶内容,当您需要在多个流程块之间共享和传递数据、在流程图中使用“判断”组件的时候,请阅读本节内容。如果您是UiBot的初学者,可以跳过不读。

2.6.1 流程图变量

流程图和流程块中都可以使用“变量”来存储数据:流程块中的变量,使用范围仅限于当前流程块中,在流程图和其它流程块中无法直接使用;从UiBot Creator5.0版本开始,流程图中也可以定义变量,

在流程图中定义的变量,在流程图所包含的所有流程块中,都可以直接使用。

下面,我们将举例说明流程图变量的具体用法。

假设有一张流程图,包含两个流程块,分别命名为“流程块1”和“流程块2”,如下图所示。“流程块1”先运行,它的功能是获得当前系统时间,并将系统时间转换为字符串格式。“流程块2”后运行,它的功能是把“流程块1”的字符串格式系统时间,以调试信息的方式显示出来。

两个依次运行的流程块

由于“流程块1”和“流程块2”同时使用到了“字符串格式系统时间”这个变量,因此,我们首先在流程图中定义这个变量。在“流程图”视图,右边的“属性栏/变量栏”标签页会列出流程图变量,选中流程块

时,还会列出选中流程块的属性。点击“变量”标签页,再点击“添加变量”按钮,输入变量名x(不区分大小写)。

在流程图视图添加变量

点击流程块1的“纸和笔”图标进入流程块1的可视化视图,插入一条“获取系统时间”和一条“格式化时间”命令(在“时间”分类下),并把“格式化时间”中的“时间”属性设为“获取系统时间”的结果,即可得到当前时间,并以容易阅读的格式保存在变量sRet中。由于流程块2也需要获得字符串格式系统时间,再次插入一条赋值语句,将sRet的结果赋值给流程图变量x。

流程块1的实现

可以看到,在流程块的“可视化视图”和“源代码视图”的右边,都有一个“查看变量”按钮,可以通过这个按钮,可以查看只能在流程块中使用的“当前流程块变量”,以及在各个流程块中都可以使用的“流程图变量”。

查看流程图变量查看当前流程块变量

再点击“纸和笔”图标进入流程块2,插入一条“输出调试信息”命令,并把“输出内容”属性设为x(由于变量x为流程图变量,可以直接使用)。

流程块2的实现

回到流程图界面,然后点击“运行”按钮,即可看到运行结果,打印出当前时间。

2.6.2 流程图数据传递

UiBot Creator5.0版本开始支持的流程图变量,是流程块之间传递数据的一种方法, 类似于全局变量,在流程块内部定义的变量无法在其他流程块中使用,类似于局部变量。

2.6.3 复杂流程图的实现

有人可能会有这样的疑惑,UiBot只提供“辅助流程”、“流程块”、“判断块”、“子流程”和“结束”五种组件,其中“辅助流程”和“结束”还不是真正的业务流程组件,仅仅通过“流程块”和“判断块”,“子流程”这三种组件,能够胜任复杂的流程图吗?就好比下图:

复杂流程图

您还真别小看UiBot这几种组件,再复杂的流程图,也可以通过这四种组件的简单排列组合来实现!

我们来透过现象看本质:再复杂的流程图,按照其结构组成来分类,大致可以分为三种:顺序结构、选择结构和循环结构,下面我们就分别来看看这三类流程图如何用UiBot来实现。

顺序结构

在顺序结构中,各个步骤是按先后顺序执行的,这是一种最简单的基本结构。如图所示,A、B、C是三个连续的步骤,它们是按顺序执行的,即完成上一个框中指定的操作才能再执行下一个动作。

顺序结构

UiBot中实现顺序结构的顺序流程图如图所示。

顺序流程图

选择结构

选择结构又称分支结构,选择结构根据某些条件来判断结果,根据判断结果来控制程序的流程。在实际运用中,某一条分支路线可以为空(如图二、图三)。

选择结构

UiBot中实现选择结构的选择流程图如图所示。

用UiBot实现选择结构图一

用UiBot实现选择结构图二、图三

循环结构

循环结构又称为重复结构,指的是流程在一定的条件下,反复执行某一操作的流程结构。循环结构下又可以分为当型结构和直到型结构。

循环结构可以看成是一个条件判断和一个向回转向的组合,使用流程图表示时,判断框内写上条件,两个出口分别对应着条件成立和条件不成立时的执行路径,其中一条路径要回到条件判断本身。

当型结构:先判断所给条件P是否成立,若P成立,则执行A(步骤);再判断条件P是否成立;若P成立,则又执行A,若此反复,直到某一次条件P不成立时为止。流程结束。

当型结构

直到型结构:先执行A,再判断所给条件P是否成立,若p不成立,则再执行A,如此反复,直到P成立,该循环过程结束。

直到型结构

UiBot中实现循环结构的循环流程图如图所示。

用UiBot实现循环流程图

具体使用上,UiBot使用“判断”组件来实现上述功能,把“判断”组件拖到流程图中,并且用鼠标左键选中,即可在属性栏中看到该组件的属性。如图所示。其中“条件表达式”这一栏很关键,您可以填写一个变量或者表达式。在流程运行到此判断时,将根据这个变量或表达式的值是否为真,来决定后面是沿着yes所示的出箭头继续运行,还是沿着no所示的出箭头继续运行。

判断表达式

“判断”组件有两个出箭头,一个标有yes,一个标有no,当其属性中的“条件表达式”为真时,沿着yes箭头往后运行,否则,沿着no箭头往后运行。如图所示。

根据条件表达式来决定流程

本文标签: 流程视图命令流程图变量