公式规则
表单使用过程中,有几处场景可以支持公式去控制一些特殊处理。比如:流程流转控制公式、公式控制表单项的可见性和可编辑性。以上需要使用公式的场景,在配置公式时,均需遵循以下规则。
控制条件范围
以下事项可作为控制条件:
- 表单中的所有
表单项
,子表单项
- 填报人
- 填报人单位
- 填报时间
- 流程发起人
- 流程发起人单位
- 流程发送时间
- 已途经节点
- 填报人角色
快速用法
控制公式的语法借鉴 JavaScript 表达式语法,形如:
流程发起人 in ["张三", "李四"] && 填报人 like "张%"
示例公式的语义是: 流程发起人是 张三
或者 李四
,并且填报人姓张。
控制公式语法
控制公式语法在遵循 JavaScript 表达式语法子集的基础上扩展了关系运算符 in
和 like
。
比较关系运算符
支持以下关系运算符:
like
- 字符串匹配(字符串包含)in
- 数组包含>
>=
<
<=
==
!=
in 数组包含
value in [1, 2, 3];
value 可以是数字、字符串、数组、也可以是对象:
value = 1
时,公式返回true
value = 4
时,公式返回false
value = [1, 7, 8]
时,公式返回true
value = [8, 9]
时,公式返回false
value = "1"
时,公式返回false
value = {selected: 1}
时,公式返回true
value="1,2,3"
时,公式返回true
like
字符串匹配
userName like "张%"
规则如下:
"张三" like "张%" ====> TRUE
"李张三" like "张%" ====> FALSE
"李张三" like "%张%" ====> TRUE
"张三" like "张_" ====> TRUE
"张三2" like "张_" ====> FALSE
"张三2" like "张%" ====> TRUE
_
表示匹配一个任意字符%
表示匹配零个、一个或者多个任意字符
逻辑关系运算符
支持以下关系运算符:
&&
、AND
||
、OR
!
、NOT
例如:
姓名 like "张%" && 年龄 >= 18 && 年龄 != 30
使用小括号(
、)
定义表达式的优先级
姓名 like "张%" && (年龄 <18 || 年龄 > 60)
此控制公式语义为:年龄小于 18 岁 或者大于 60 岁,并且姓张。
除此之外,我们可以使用 ! 和关键字 not 表示逻辑非运算。以下两个控制公式表达语义相同:
填报人 not in ["张三","李四"]
!(填报人 in ["张三","李四"])
字面量
支持三种字面量。
字符串
:
"字符串值"
注意:必须使用双引号
"
表达字符串字面量。字符串不支持单引号。
数字
:
10
20.1
-10.5
.5
+0.15
数组
:
[1, "2", [3, "4"]]
设置表单项作为控制项
我们在使用表单项作为控制项时,可以在公式中使用字段标题或者字段名称作为控制项,在计算公式时会自动从表单中获取字段值。
如:
用户名 like "张%"
userName like "张%"
设置子表单项作为控制项
由于子表单数据结构比较复杂,所以我们在设置子表单项作为控制条件时,需要特别注意以下场景:
场景一: 子表单中任意一条数据的某一项设置控制公式
子表单.年龄 >= 18
此控制公式语义为: 子表单中任意一条数据中的年龄大于等于
18 时,此控制公式就会满足条件。
场景二: 子表单中某一条数据的某一项设置控制公式
子表单[2].年龄 >= 18
此控制公式语义为: 子表单中第三条数据中的年龄大于等于
18 时,此控制公式才会满足条件。