# 编排基础

所谓流程编排通常指的就是流程编辑,本篇文档主要介绍流程编排的一些基础知识。对于IPaaS和RPA流程来说,由于共用一套流程编辑器,所以流程编排的操作及语法规则这些都是通用的。无论是搭建IPaaS还是RPA流程都应该掌握如何进行流程编排

TIP

在阅读完本文后,建议进一步阅读编排实践

# 编排面板

  • 组件展示区:展示平台支持的所有组件,是搭建流程的最小单元。

  • 组件放置区:展示从展示区添加进流程块的组件,可在该区进行组件的选中、位置调整、删除等操作。

  • 属性编辑区:展示当前选中组件的所有属性,可对选中组件进行属性的编辑。

编排面板布局

# 组件类型

  • 简单组件:只在一行展示的组件称为简单组件。

  • 嵌套组件:多行展示,内部可放置组件的组件,如:if控制、if-else控制、for循环、while循环等。

# 基本操作

本节介绍组件的基本操作。

# 添加组件

拖动组件展示区组件到组件放置区,当出现蓝色下划线时即可松开鼠标放置组件。同时默认选中组件。

添加组件

# 选中组件

在组件放置区点击组件即可选中组件,选中的组件背景为浅蓝色。

选中组件

# 调整组件位置

在组件放置区直接点击组件拖动,当出现蓝色下划线时即可松开鼠标放置组件,同添加组件操作。

# 删除组件

选中组件,按下【CTRL+DELETE】按键即可删除组件。删除嵌套组件,嵌套组件内部组件一同被删除。

# 编辑组件

在属性编辑区编辑当前选中组件的属性,请查看指令文档了解不同组件的属性编辑。

# 组件数据校验

当组件放置区存在标题为红色的组件时,表明该组件编辑的数据不合法,此时将无法【保存】流程,需要编辑该组件属性直至合法(红色提示消失)。

组件数据校验

# 属性数据校验

属性输入框前会展示属性值类型及是否合法,不合法为红色,合法则为绿色。 属性数据校验

# 嵌套组件展开和收起

点击组件前面的【+/-】即可展开和收起展示,该操作仅为方便展示流程,不对流程数据有任何影响。简单组件无展开和收起操作。

嵌套组件展开和收起

# 捕获目标

在RPA流程(IPaaS流程无捕获目标的操作)中,经常需要通过捕获目标来为组件设置要操作的目标。一般通过【选择目标】即可打开默认浏览器,访问要捕获目标的所在页面,鼠标移动到指定目标上,当页面最左侧出现该目标信息的红框展示时,按【CTRL】按键即可完成目标的捕获,目标捕获成功后,Aboter软件自动置顶展示。需要注意的是:有些组件(比如:批量抓取数据组件)在捕获目标的过程中由于需要捕获的信息比较多,所以不能简单的一步就完成捕获操作,可根据捕获过程中的步骤提示,逐步完成目标信息的捕获。

捕获目标

# 编程基础

TIP

相信无编程经验的朋友也是一学就会呢😄

流程编排的本质是在编辑一段AST(抽象语法树)数据结构,最终运行程序时系统会把该数据结构编译成一段可执行的代码来运行,程序按组件放置区的组件顺序依次执行相应组件代码。所有编辑的组件属性都会被编译成代码的一部分,所以了解一点基础编程的知识是非常有必要的,本节从如何给组件配置正确的属性的角度来介绍

WARNING

注意:每个组件属性要求输入数据的类型都可能不一样,请根据要求进行组件的属性配置。只有组件属性的配置是合法的,组件放置区的组件标题才不会有红色的提示。

配置组件属性时,共支持输入如下几种类型的值:数字类型、字符串类型、数组类型、对象类型、变量类型、表达式类型。下面逐一介绍:

# 数字类型

指由纯数字构成的值。

举例🌱:1、12、99。

数字类型

# 字符串类型

指最外层由单引号或双引号(英文)包裹,里面由字母、数字、下划线等混合构成的值。

举例🌱:'ab12'、'ab'、"好的"。

如果数字类型的值加了引号则也表示是字符串。如:"12"。

字符串类型

# 动态字符串

指最外层用``号,用${}号包裹变量,普通字符串正常书写构成的值。

举例🌱:`ab12${a}${b}`、`123abc`。

其中a和b为变量。动态字符串内部不包含任何变量时将被当作普通字符串。

# 布尔类型

布尔类型只有两个值:true 或 false。

# 数组类型

指最外层由中括号(英文)包裹,里面为相同类型的元素,元素间以英文逗号分隔构成的值。

举例🌱:[2,4,88]、["12","34","ab"]。

数组类型分为一维数组和多维数组(多维数组的每个元素本身为数组类型)。

举例🌱:[2,4]为一维数组,[[11, 22], [33, 43]]为二维数组。

数组类型

# 对象类型

指最外层由大括号包裹,里面为键值对(key:value)形式,键值对间以英文逗号分隔构成的值。其中每个键的值类型可以是任意数据类型。

举例🌱:{name1: value1, name2: value2}。

对象类型

# 变量类型

一个变量就是一个数值的名字,变量名称由字母、数字、下划线等构成,变量可以用来存储以上任意类型(数字、字符串、布尔、数组、对象)的值。所以组件的配置项一般都支持直接输入变量的方式,变量使用前必须先声明(指令文档中的变量声明组件),否则该变量的值将变得不可预知。声明变量后,在编辑组件属性时输入这个变量名就表示变量所代表的值。

变量类型

WARNING

注意:对于有返回值的组件,返回值变量无需事先声明。因为流程执行时,该组件会被编译成一个变量声明的方式,即声明一个返回值变量并赋值为组件的返回值。

下面展示在流程编排中访问不同类型变量数据的方法:

///////////////////////////
// 数字类型
a = 12
// 获取值
a // 12

///////////////////////////
// 字符串类型
a = 'abc123'
// 获取值
a // 'abc123'

///////////////////////////
// 布尔类型
a = true
// 获取值
a // true

///////////////////////////
// 数组类型
a = [2,4,88]
// 访问数组元素:变量名[元素索引],元素索引从0开始

// 获取第一个元素
a[0] // 2
// 获取第二个元素
a[1] // 4
// 获取第三个元素
a[2] // 88

///////////////////////////
// 对象类型
a = {
  name: '老王',
  age: 24,
  desc: '好人'
}
// 访问对象元素:变量名.键名 或者 变量名[键名]

// 获取人名
a.name // '老王'
// 获取年龄
a.age // 24

///////////////////////////
// 复合数据结构(操作组件返回示例中常出现类似结构)
a = {
  school: '学校名称',
  total: 10,
  data: [{
    name: '班级名称1',
    num: 51
  }, {
    name: '班级名称2',
    num: 45
  }, {
    name: '班级名称3',
    num: 48
  }]
}
// 学校名称
a.school
// 第一个班级人数
a.data[0].num // 51
// 第二个班级名称
a.data[1].name // '班级名称2'

# 表达式类型

指中间由比较运算符连接,两边各一个变量或数值构成的值,表达式类型的值是一个是否为真的逻辑值:true或者false。表达式类型通常在if、if-else、while等需要判断条件是否成立的组件中使用。

比较运算符包括:

  • 等于:==
  • 全等:===
  • 不等于:!=
  • 不全等:!==
  • 大于:>
  • 大于或等于:>=
  • 小于或等于:<=
  • 小于:<

表达式类型