逻辑编排
尊享版专享功能
该功能目前不再维护,请通过「集成&自动化」完成业务编排。
1. 整体功能介绍
在某些场景下,表单在提交后会触发一些业务逻辑,目前宜搭支持了两种主要的内置核心业务逻辑流,分别是单据和流程,以及评论等次要业务逻辑流。每种业务逻辑流有各自的生命周期,生命周期的各个阶段将抛出事件,可作为扩展点,事件被接受后可以触发对应的执行插件进行业务逻辑的执行。
宜搭除了提供了公式、三方服务来满足业务增强逻辑,还提供了逻辑编排这种让业务人员来实现业务的能力,无需开发人员介入。
基于宜搭的场景,逻辑编排目前主要运用于表单数据的处理、任务处理、消息发送等场景。
特别说明:
- 逻辑编排为宜搭-尊享版的高级功能,如需使用,请向所属企业管理员确认是否开通了宜搭-尊享版。
- 在正式使用之前需要确保已经针对所需接口完成了服务注册,如果还没有,请参考服务注册进行相关的配置。
- 本文将基于宜搭模版中心的「团队小金库」,介绍如何使用逻辑编排,建议先启用此模版应用。
2. 视频展示
3. 逻辑编排入口
3.1 逻辑编排支持两种触发机制
- 表单事件触发
- 时间计划触发
表单设置页面
4. 逻辑编排设计器
逻辑编排页面
特别说明:调试功能暂不可用
4.1 连接器
逻辑编排通过将一系列的连接器编排在一起实现业务逻辑
连接器是一个逻辑单元,业务人员能编排出多强的逻辑也取决于连接器的丰富程度
4.2 入参配置
逻辑编排创建成功后,系统会默认生成入参配置。
特别说明:出参配置和入参配置受宜搭平台的扩展点规范约束,请不要修改。
入参配置是默认一个 object 类型、描述是「资金入库」的参数,点击属性配置可以看到属性。入参的属性与表单字段对应,可以在公式中使用。
- 属性配置
4.3 出参配置
- 逻辑编排创建成功后,系统会默认生成出参配置
5. 场景演示
当团队资金入库时,如果金额大于 100,通知指定人员「团队小金库又有进帐啦!」
步骤一:新增业务规则
- 打开「资金入库」表单页面,选择设置 >> 逻辑编排 >> 新增业务规则
- 在新建业务规则对话框中填写业务规则名称,选择触发方式-事件触发。单击确定。
参数 | 描述 | 本文示例 |
业务规则名称 | 自定义填写业务规则名称。建议填写便于识别的名称。 | 资金入库金额大于100时通知主管 |
规则触发方式 | o 事件触发:根据指定表单或流程的事件触发业务。 o 计划任务:根据事件和频率计划触发业务。 | 创建成功事件触发 |
步骤二:编辑业务规则
- 选择消息发送连接器,将其拖动至画布中IF连接器左侧「满足条件时执行」的位置。
- 选择异常结束连接器,将其拖动至画布中IF连接器右侧「不满足条件时执行」的位置。
- 依次单击各连接器,设置连接器属性。单击完成。
i.设置开始连接器:定义触发方式,选择流程触发事件,在本例中选择创建成功,点击完成。
详情请参见 开始连接器。
特别说明:在开始连接器中,触发事件是必填项,请至少选择一个触发事件。
ii.设置IF连接器,满足「资金入库金额大于100」时通知主管,详情请参见 IF连接器。
选中公式编辑器左侧
start/inputsSchema/FORM-5FYJMQGVLQWMLGP01GF0S6ZYHL6D2EMAKPDKKDS/numberField_kivgwzui,
点击后会出现在共识编辑区,numberField_kivgwzui是「资金入库」表单里「增加资金到小金库」组件的唯一标识。
判断入库金额是否大于 100,公式为
@variable('FORM-5FYJMQGVLQWMLGP01GF0S6ZYHL6D2EMAKPDKKDS').numberField_kivgwzui > 100
iii.设置消息通知连接器,详情请参见 消息发送连接器
说明 结束连接器无需设置
- 单击右上角的保存并发布
- 返回宜搭表单页面,选择设置 >> 逻辑编排。在业务规则列表中找到目标业务规则,单击操作列的启用
步骤三:操作验证
- 在宜搭应用中提交一笔资金入库
- 卖家收到消息通知
6. 连接器介绍
6.1 开始连接器
每个逻辑编排都需要设置开始连接器。开始连接器定义了逻辑编排的触发条件。
- 事件发生时触发
- 按时间计划触发
在画布中单击默认存在的开始连接器,设置开始节点的属性,单击完成。
参数 | 描述 |
节点名称 | 自定义填写节点名称, |
节点描述 | 自定义填写节点描述。 |
选择流程触发事件 | 根据实际情况勾选该逻辑流程触发的事件。 |
选择审批结束动作(已下线) | 当前表单为流程表单时需要配置。 根据实际情况勾选结束审批的触发动作。 |
设置数据筛选 | 设置数据筛选条件。 设置完成后,当提交的数据既符合此处的筛选条件又符合流程触发事件时才会触发该逻辑编排业务。 |
设置完成后即定义了逻辑编排业务的触发规则。当用户在对应表单提交了符合触发规则的数据,该逻辑编排业务启动。
6.2 变量初始化连接器
变量初始化连接器用于定义变量,以便于在后续的逻辑编排中引用该变量。
在画布中单击变量初始化连接器,设置该节点的属性
参数 | 描述 |
名称 | 自定义连接器名称,该名称全局唯一。 |
变量名 | 自定义变量名称。 |
类型 | 变量类型。
|
变量类型 | 当变量类型选择 基本变量 时需要设置。 根据实际情况选择基本变量的类型。 |
值 | 当变量类型选择 基本变量 时需要设置。 给基本变量类型赋值。 |
表单类别 | 当变量类型选择 表单变量 时需要设置。
|
表单 | 当变量类型选择 表单变量 时需要设置。 选择当前应用下的某一张表单,代表该变量仅能用于存放该表单的记录。 |
(可选)单击添加,可以定义多个变量
7. 变量赋值连接器
作用:给前面的变量初始化连接器定义的流程变量赋值
注意事项:
- 先用「变量初始化」连接器定义一个流程变量,再用「变量赋值」连接器给此变量赋值
- 变量赋值时并不会严格检查类型是否匹配,例如:可以将一个日期对象赋给一个数字,但是如果后续连接器将此流程变量用于数字运算则运行的时候会报错,如果后续连接器将此变量当做日期使用,则运行的时候不会报错。
- 赋值语句小技巧
- 例如,给某个对象类型的流程变量的字段赋值,可以通过在赋值语句间接实现(目前赋值连接器没有提供修改对象属性的功能),例如将流程变量a赋值为(@variable('c').field='cd'),则会将变量 c 的 field 字段赋值为了字符串'cd',同时也将流程变量a赋值为了字符串'cd'。
7.1 获取数据连接器
获取数据连接器用于从宜搭表单中获取符合定义的数据。该类型连接器一般与其他连接器配合使用
在画布中单击获取数据连接器,设置该节点的属性,单击完成
参数 | 描述 |
节点名称 | 自定义填写节点名称。 |
节点描述 | 自定义填写节点描述。 |
选择获取数据的目标表单对象 | 在下拉列表框,选择当前应用的某个表单。 说明 目前仅支持单据表单作为目标表单对象。 |
设置数据筛选 | 设置数据筛选条件。 详情请参见设置数据筛选条件。 设置完成后,宜搭应用会获取符合此处设置的条件的数据。 |
选择数据记录获取类型 | 该参数的设置需要与变量初始化连接器中的 表单类别 参数设置保持一致。
|
结果排序 | 根据实际情况设置是否对数据库数据先排序再按照要求获取数据。 说明 排序功能适用于数字框或简单的文本框组件。 |
将获取的数据保存至 | 在下拉列表框中,选择在变量初始化链接器中设置的变量。详情请参见变量初始化连接器。 |
7.1.1 设置数据筛选条件
设置数据筛选条件可以实现仅对符合条件的数据进行相应操作。
- 在设置数据筛选条件区域,单击设置筛选条件。
- 设置筛选条件。
序号 | 参数 | 描述 |
1 | 匹配项 | 在下拉列表中选择目标表单中需要对其设置筛选条件的组件。 |
2 | 操作符 | 根据组件类型的不同,提供不同类型的操作符。例如,等于、不等于、包含、属于等。 |
3 | 赋值方式 |
|
4 | 匹配值 |
|
- (可选)若需要筛选出满足多个条件的数据,您可以增加筛选条件。
7.2 更新数据连接器
更新数据连接器用于更新宜搭表单中符合定义的数据
在画布中单击更新数据连接器,设置该节点的属性,单击完成
参数 | 描述 |
节点名称 | 自定义填写节点名称。 |
节点描述 | 自定义填写节点描述。 |
选择获取数据的目标表单对象 | 在下拉列表框,选择当前应用的某个待更新的表单。 说明 目前仅支持单据表单作为目标表单对象。 |
设置数据筛选 | 设置数据筛选条件。 设置完成后,宜搭应用会更新符合此处设置的条件的数据。未设置筛选条件则更新所有数据。 |
更新记录值 |
|
创建数据连接器用于向指定的宜搭表单插入数据,可一次性插入多条数据,或插入单条数据
本文介绍如何设置创建数据连接器
7.3 创建数据连接器
创建数据连接器用于向目标表单中新增数据记录
在画布中单击创建数据连接器,设置该节点的属性。单击完成。
参数 | 描述 |
节点名称 | 自定义填写节点名称。 |
节点描述 | 自定义填写节点描述。 |
选择新增记录的目标表单对象 | 在下拉列表框中,选择本应用中的某个表单,新创建的数据将插入该表单。 说明 目前仅支持单据表单作为目标表单对象。 |
操作类型 | 该参数的设置需要与变量初始化连接器中的 表单类别 参数设置保持一致。
|
设置记录值 | 当 操作类型 选择 新增单条数据 时需要设置。
说明 当前表和目标表可以为同一张表或不同的表。当为同一张表时,编排成功执行后该表中会有新增两条记录,两条记录指定控件的值相同,一条为本次用户提交的数据,一条为逻辑编排插入的数据。若当前表和目标表不同,两张表将各自新增一条记录,当前表记录为用户本次提交数据,目标表为逻辑编排插入数据,两条记录的关联组件值相同。 |
删除数据连接器用于删除目标数据。本文介绍如何设置删除数据连接器。
7.4 删除数据连接器
删除数据数据连接器用于删除宜搭表单中符合条件的数据
在画布中单击删除数据连接器,设置该节点的属性。单击完成。
参数 | 描述 |
节点名称 | 自定义节点名称。 |
节点描述 | 自定义节点描述。 |
选择获取数据的目标表单对象 | 在下拉列表框,选择当前应用的某个表单作为数据删除对象。 说明 目前仅支持单据表单作为目标表单对象。 |
删除数据记录 |
|
选择删除记录的对象或对象(集合)变量 | 当 删除数据记录 设置为 使用流程变量 时需要设置。 在下拉列表框中,选择在变量初始化链接器中设置的变量。详情请参见变量初始化连接器。 |
设置数据筛选 | 当 删除数据记录 设置为 根据筛选条件 时需要设置。 设置完成后只删除符合筛选条件的数据。详情请参见设置数据筛选条件。 |
7.5 消息发送连接器
消息发送连接器用于实现某指定事件发生后,系统向指定人员发送消息通知的功能。
在画布中单击消息发送连接器,设置该节点的属性。单击完成。
参数 | 描述 |
节点名称 | 自定义填写节点名称。 |
节点描述 | 自定义填写节点描述。 |
指定人员 | 填写人员名称,设置完成后该人员会收到订单的钉钉通知。 |
指定角色 | 填写指定角色,设置后指定完成后该角色会收到订单的钉钉通知。角色设置请参见角色设置。 |
指定邮箱 | 填写邮箱地址,设置完成后消息通知将会发送至该邮箱。 |
通知内容模板 | 选择已设置好的内容模板。 如何设置通知模板,详情请参见消息通知。 |
说明 指定人员、指定角色、指定邮箱三个参数至少填写一个。
异常结束连接器用于提交、删除、编辑校验不通过时阻断提交行为。该连接器常在 IF 连接器或分支连接器中,用于业务异常判断。本文介绍如何设置异常结束连接器。
7.6 IF连接器
在画布中,单击IF连接器,设置开始节点的属性,单击完成。
参数 | 描述 |
名称 | 自定义填写连接器名称。 |
条件 | 使用公式编辑器设置IF判断条件 |
7.7 异常结束连接器
在连接器库中选择异常结束连接器,将其拖动至画布中需要进行业务异常判断的位置。
在画布中,单击异常结束连接器,设置开始节点的属性,单击完成。
参数 | 描述 |
名称 | 自定义填写连接器名称。 |
提交、删除、编辑校验不通过时阻断提交行为 | 若勾选该参数表示当提交、删除、编辑校验不通过时阻断提交行为。若不勾选,则 异常结束 连接器等同于普通的 结束 连接器,对上述场景不做阻断提交。 说明 目前仅支持提交、删除、编辑校验不通过时的阻断。 |
错误提示内容 | 填写当阻断提交行为时对用户呈现的错误提示内容。 |
7.8 分支连接器
分支连接器的使用场景:
- 想在某个或者某几个条件满足时执行这些条件各自对应的逻辑,则可以使用分支连接器。
分支连接器示例如下图所示:
图中示例里的「编排」使用了1个分支连接器,默认有一个「默认执行」分支(即默认分支),此外还通过右侧setter 添加了2个分支条件(每添加一个分支条件都会在分支连接器里新增一个分支),所以总共有3个分支。
执行逻辑:
- 如果所有非默认分支的分支条件都不满足,则默认分支内的逻辑会被执行
- 如果有至少一个非默认分支的分支条件满足,则这些分支条件满足的分支会被执行(多个分支条件满足则多个分支都会被执行,但并不保证执行的前后顺序,因此分支逻辑之间不应该包含顺序上的依赖关系,否则请使用IF连接器),但「默认执行」分支(也即默认分支)不会被执行
注意:分支连接器目前存在一些缺陷。
- 目前一定要使用分支连接器的话,则需注意两个问题,避免如下两个问题则分支连接器的行为是符合期望的:
- 不要在分支连接器和结束之间放置连接器(此问题目前在紧急修复中)
- 填写分支条件请使用公式编辑器,如下图红线所示,暂不要使用输入框选择条件(因为数字也被转为了字符串,无法和数字作出正确的逻辑比较,但如果表单某个组件的值是字符串的话那就可以使用)
7.9 foreach 连接器
在画布中,单击 foreach 连接器,设置 foreach 节点的属性。
参数 | 描述 |
名称 | 自定义填写连接器名称。 |
条件 | 说明:只支持循环遍历表单集合对象 |
foreach 举例:
- 先初始化一个表单集合类型的变量「小金库记录」
- 然后,通过获取数据记录,将结果保存到变量「小金库记录」
- 可以使用 foreach 遍历小金库记录
- 在 foreach 循环体中,使用到公式的地方,打开可以看到有两个变量可以使用:当前索引和当前对象。
获取当前索引的公式写法是:@index('Foreach连接器的名称'),得到的值是一个数字。索引从0开始。
获取当前循环变量的公式写法是:@items('Foreach连接器的名称'),得到的是被遍历对象的第(索引+1)个元素。
8. 公式
在前面示例场景中已经有介绍公式的用法,比如判断入库金额是否大于 100,公式为
@variable('FORM-5FYJMQGVLQWMLGP01GF0S6ZYHL6D2EMAKPDKKDS').numberField_kivgwzui > 100”
其中:左侧列出了上下文中的变量,以及可以使用的函数
特别说明:numberField_kivgwzui 是表单组件的唯一标识,如果在公式中使用表单字段时都需要使用唯一标识,形如下面的写法:
@variable('FORM-5FYJMQGVLQWMLGP01GF0S6ZYHL6D2EMAKPDKKDS').numberField_kivgwzui
@variable('最近一条记录').textField_kjqyubas
@items('Foreach_1').textField_kjqyubas.value
8.1 集合函数
所谓集合, 就是一系列元素, 类似于数组
若要操作集合(通常是列表。集合与数组类似,但集合函数暂不支持操作数组, 后续会支持数组),可以使用这些集合函数
函数名 | 功能 |
Union | Union(集合1, 集合2, 集合3, ... , 集合n) 把集合合并成一List。 入参个数随意。如果要去重需要配合Distinct,Distinct(Union( 集合1, 集合2, 集合3, ... , 集合n )) |
Retain | 仅保留两集合中的公共元素。例如: Retain(集合1, 集合2) 会将集合1内包含但集合2内不包含的元素从集合1中删除,然后返回集合1。 注意:Retain函数会修改集合1,因此使用此函数时要注意。 参数可以是实现了Collection接口的任何类型。 |
Distinct | Distinct(集合1, 集合2, ... , 集合n), 将所有集合元素放在一个列表内并去除其中的重复元素, 然后返回这个列表。 注意:调用此函数并不会修改入参本身。 参数可以是实现了Collection接口的任何集合类型,入参个数随意, 传1个入参也可以,eg: Distinct(list1, list2, set1, set2),Distinct(list1) |
Sort | 将集合按自然顺序(升序)排序,返回一个排序后的List。入参可以是实现了Collection接口的任何类型。 注意:此函数不会修改入参,如果需要将入参(集合)排序,只需要将此函数返回的结果赋值给入参变量。 Sort(Collection col) |
Reverse | 将集合元素反转, 并返回生成的List。 注意:此函数并不会修改入参。如果需要入参集合的元素反转,只需将此函数返回的List赋给入参集合变量即可。 参数可以是实现了Collection接口的任何类型,Reverse(Collection col) |
TopN | 对集合元素降序排序,返回包含前N个元素的子集合。参数可以是实现了Collection接口的任何类型,eg: TopN(Collection col1, int n) |
LeastN | 返回集合按值大小排序,前N小的子集。参数可以是实现了Collection接口的任何类型, eg: LeastN(Collection col1, int n) |
Subset | Subset(col1, col2) 是否子集,返回boolean。参数可以是实现了Collection接口的任何类型 |
ColSum | ColSum(Collection... cols) 把集合中元素值加起来,返回一Object,集合元素类型是 number 或者 string,如果是 string 那么就是所有 string 的拼接 |
Count | Count(Collection cols) 统计集合或数组中元素总数量。参数可以是实现了Collection接口的任何类型或者是任意数组,eg: Count(集合a) 、Count(数组a) |
8.2 逻辑函数
用于条件判断,值比较
函数名 | 功能 |
判断是否所有表达式都为真 | |
Or | 判断是否所有表达式是否有一个为真 |
Not | 检查表达式是否为 false |
Xor | 异或 |
NumberCompare | 比较数字大小 |
Eq | 检查两个值是否相等 |
Ne | 检查两个值是否不相等 |
Lt | 检查第一个值是否小于第二个值 |
Gt | 检查第一个值是否大于第二个值 |
Le | 检查第一个值是否小于或等于第二个值 |
Ge | 检查第一个值是否大于或等于第二个值 |
8.3 日期函数
若要使用日期和时间,可以使用这些日期和时间函数
函数名 | 功能 | 参数及示例 |
ToDate | 返回LocalDate或LocalDateTime对象 | 分三种情况:
|
ToTimestamp | 将时间对象转成long型时间戳数字 | 参数可以是LocalDate对象、LocalDateTime对象、Date对象中的任一种: DateToTimestamp(LocalDate), DateToTimestamp(LocalDateTime) , DateToTimestamp(Date) |
DateToStr | 将日期对象转成pattern型的时间字符串 | DateToStr(LocalDate date, String pattern), DateToStr(LocalDateTime time, String pattern) , DateToStr(Date, String pattern) |
StrToDate | 将代表日期的字符串转成日期对象,返回LocalDate对象 | StrToDate('2021-03-25') StrToDate(Today()) |
Today | 代表今天的日期字符串,格式 yyyy-MM-dd,例如2021年3月25号调用此函数则返回一个字符串"2021-03-25" | 无参数 例如2021年3月25号调用Today()返回字符串"2021-03-25" |
TodayLocalDate | 代表今天的日期LocalDate对象,例如2021年3月25号调用此函数则返回一个代表2021年3月25号的LocalDate对象 | 无参数 直接写TodayLocalDate() |
Now | 当前日期包括时间点的字符串, 格式 yyyy-MM-dd HH:mm:ss | 无参数 返回当前时间字符串,例如"2021-03-25 23:05:00" |
NowLocalDateTime | 返回当前日期包括时间点的LocalDateTime对象 | 无参数 直接写NowLocalDateTime() 返回当前日期(包括时间点)的LocalDateTime对象 |
Day | 返回某日期在当月的天数,值是介于 1-31 之间的整数 | Day(LocalDate) Day(LocalDateTime) |
Month | 返回某日期在当年的月份,值是介于 1-12 之间的整数 | Month(LocalDate) Month(LocalDateTime) |
Year | 返回某日期的年 | Year(LocalDate) Year(LocalDateTime) |
Hour | 返回LocalDateTime某日期的小时,值是介于 0-23 之间的整数 | Hour(LocalDateTime) |
Minute | 返回LocalDateTime某日期的分钟,值是介于 0-59 之间的整数 | Minute(LocalDateTime) |
Second | 返回某LocalDateTime日期的秒数,值是介于 0-59 之间的整数 | Second(LocalDateTime) |
WeekOfNum | WeekOfNum(LocalDate), WeekOfNum(LocalDateTime) 返回日期的周数, 返回整数 | WeekOfNum(TodayLocalDate()) |
Days | 返回两日期间隔的天数 | Days(LocalDateTime,LocalDate) Days(LocalDate, LocalDateTime) Days(LocalDateTime, LocalDateTime) Days(LocalDate, LocalDate) 例如Days(StrToDate('2020-01-04'),TodayLocalDate()) |
DatePlus | 返回将指定日期加/减天数后的日期LocalDate对象 | DatePlus(TodayLocalDate(), 2) DatePlus(TodayLocalDate(), -2) DatePlus(StrToDate(Today()), 2) |
MonthPlus | 返回将指定日期加/减月数后的日期LocalDate对象 | MonthPlus(TodayLocalDate(), 2) MonthPlus(TodayLocalDate(), -2) MonthPlus(StrToDate(Today()), 2) |
YearPlus | 返回将指定日期加/减年数后的日期LocalDate对象 | YearPlus(TodayLocalDate(), 2) YearPlus(TodayLocalDate(), -2) YearPlus(StrToDate(Today()), 2) |
返回指定时间格式的时间字符串 | ||
将分钟数加到时间字符串 | ||
将小时数加到时间字符串 |
8.4 文本函数
若要使用字符串,可以使用这些文本函数。 文本函数仅适用于字符串。
函数名 | 功能 |
ToUpperCase | 返回大写格式的字符串 |
ToLowerCase | 返回小写格式的字符串 |
EqualsIgnoreCase | 返回两个字符串是否相同,不区分大小写。EqualsIgnoreCase(String s1, String s2) |
Equals | 返回两个字符串是否相同,equals(String s1, String s2) |
Concat | 组合两个字符串,并返回组合后的字符串,concat(String s1, String s2) |
UUID | UUID() |
Text | Text(Object obj) 将数字转换成文本 |
Split | Split(String str, String splitor) |
Left | Left(text, [num_chars]) 从一个文本字符串的第一个字符开始返回指定个数的字符 |
Right | Right(text, [num_chars]) 返回一文本字符串末尾num个字符 |
Length | 返回文本字符中的字符个数 |
Replace | Replace(originalText, toBeReplace, pattern) |
Repeat | Repeat(text, n) 把指定的字符串重复n times |
IsEmpty | IsEmpty(String str) |
Trim | Trim(String str) |
DeepPrint | 把复杂对象转成可读字符串, DeepPrint(obj) |
8.5 数学函数
若要使用整数和浮点数,可以使用这些数学函数
函数名 | 功能 |
Max | 返回一组数字或数组中的最大值 |
Min | 返回一组数字或数组中的最小值 |
Sum | 一组数字或数字数组的和 |
Average | 一组数字或数字数组的平均值 |
Abs | 数字的绝对值 |
Round | 对浮点数四舍五入 |
Ceil | 返回大于或等于一个给定数字的最小整数 |
Floor | 返回小于或等于一个给定数字的最大整数 |
Log | 指定底数返回对数,log(number, [base]) |
Mod | 返回将两个数字相除后的余数 Mod(6, 3) = 2 Mod(-7, 4) = 1。 暂无,需要补上 |
Power | 数字乘幂,power(number, power) |
Sqrt | 返回正数的平方根 |
ToByte | 数字或string转byte |
ToShort | 数字或string转short |
ToInt | 数字或string转int |
ToLong | 数字或string转long |
ToFloat | 数字或string转float |
ToDouble | 数字或string转double |
返回指定范围内的随机整数。 需要补上 |
8.6 流程变量数据结构
注意1
给表单变量赋值分两种情况(未来考虑统一)
第一种是通过「获取数据连接器」赋值
第二种是通过赋值连接器将编排入参(表单实例对象)赋值给表单变量,这两种情形下表单的部分字段的值的结构有点区别,编辑公式时要注意区分这两种情况
注意2
「获取数据连接器」返回的表单变量还包含非组件字段,即额外的字段
两种情形的对比
「获取数据」返回的表单变量 | 逻辑编排的“入参“ :表单字段 | ||||||||
组件名称 | 组件的id(注:这里只是示例,真实id值取您的表单组件id) | Java对象类型 | 值示例 | 公式取值如何写 | Java对象类型 | 值示例 | 公式取值如何写 | 结构是否有区别 | |
rateField_kllyz1e6 | Double | 3.0 | Double | 3.0 | |||||
selectField_kllxy5vi | String | "选项二" | String | "选项二" | |||||
addressField_kllyz1e5 | JSONObject | {"countryCode":"CN","district_code":220323,"city_code":220300,"province_code":220000,"street_code":220323202} | @Variable('单表表单变量名').addressField_kllyz1e5.countryCode @Variable('单表表单变量名').addressField_kllyz1e5.district_code @Variable('单表表单变量名').addressField_kllyz1e5.city_code | HashMap | { address:"白帝城", regionIds:[00023,223333,33390,222333] } | @Variable('单表表单变量名').addressField_kllyz1e5.address @Variable('单表表单变量名').addressField_kllyz1e5.regionIds[0] | 有 | ||
textField_kliv0l86 | String | "1" | String | "1" | |||||
cascadeSelectField_kllyz1e1 | JSONArray | ["part","part_b"] | 暂不支持数组操作 | Object[] | ["part","part_b"] | @Variable('单表表单变量名').cascadeSelectField_kllyz1e1[0] | |||
dateField_kllxy5vj | Long | 1615305600000 | Long | 1615305600000 | |||||
editorField_kllyz1e0 | String | "<div</td> </tr></tbody> </table> </div>" | String | "<div</td> </tr></tbody> </table> </div>" | |||||
radioField_kllxy5vh | String | "选项二" | String | "选项二" | |||||
textareaField_kllyz1dz | String | "多行 文本" | String | "多行 文本" | |||||
employeeField_kllyz1e2 | JSONArray |
[ { code:"11111222333" }, { code:"222222233344" } ] | 暂不支持数组操作 | Object[] |
| @Variable('单表表单变量名').employeeField_kllyz1e2[1] @Variable('单表表单变量名').employeeField_kllyz1e2 | 有 | ||
multiSelectField_kliv0l82 | JSONArray | ["选项一","选项二","选项三"] | Object[] | ["选项一","选项二","选项三"] | |||||
checkboxField_kliv0l81 | JSONArray | ["选项一","选项二","选项三"] | Object[] | ["选项一","选项二","选项三"] | |||||
cascadeDateField_kliv0l83 | JSONObject |
| @Variable('单表表单变量名').cascadeDateField_kliv0l83.start | Object[] |
| @Variable('单表表单变量名').cascadeDateField_kliv0l83[0] | 有 | ||
countrySelectField_kliv0l85 | JSONArray | [{code:"HK"}] | 暂不支持数组操作 | Object[] | ["HK"] | @Variable('单表表单变量名').countrySelectField_kliv0l85[0] | 有 | ||
numberField_kllxy5vg | JSONObject | {text:"1",value:1.0} | @Variable('单表表单变量名').numberField_kllxy5vg.value | Double | 1.0 | @Variable('单表表单变量名').numberField_kllxy5vg | 有 | ||
departmentSelectField_klqiojxj | JSONArray | [{code:"{"code":"43106176"}"}] | 暂不支持取数组操作 | Object[] | ["43106176"] | @Variable('单表表单变量名').departmentSelectField_klqiojxj[0] @Variable('单表表单变量名').departmentSelectField_klqiojxj | 有 | ||
额外属性 | 属性名称 | “获取数据连接器”返回的表单变量包含的非组件字段 | 逻辑编排的入参表单变量不包含非组件字段 | ||||||
gmt_create | Date | ||||||||
yida_version | Long | 5 | |||||||
modifier | String | "1234567890123456" | |||||||
yida_serial_no | |||||||||
yida_title | String |
| |||||||
gmt_modified | Date | ||||||||
yida_is_deleted | String | "n" | |||||||
yida_form_uuid | String | "FORM-JFYJRJ5W3LVN2M765D3HG606TZCE2OZC0VILKI1" | |||||||
creator | String | "111122223333444455" | |||||||
guid | String | "FINST-DFYJ319VJJ4OYVBB2WOQOC7TG0XK3F779HULK81" | |||||||
yida_corp_id | String | "ding1234567890abcdef" | |||||||
yida_app_type | String | "APP_VZZJTB0LYJPP7IVGYYQ0" |
--------------------欢迎关注我们--------------------