跳到主要内容

逻辑编排

尊享版专享功能

该功能目前不再维护,请通过「集成&自动化」完成业务编排。

1. 整体功能介绍

在某些场景下,表单在提交后会触发一些业务逻辑,目前宜搭支持了两种主要的内置核心业务逻辑流,分别是单据和流程,以及评论等次要业务逻辑流。每种业务逻辑流有各自的生命周期,生命周期的各个阶段将抛出事件,可作为扩展点,事件被接受后可以触发对应的执行插件进行业务逻辑的执行。

宜搭除了提供了公式、三方服务来满足业务增强逻辑,还提供了逻辑编排这种让业务人员来实现业务的能力,无需开发人员介入。

基于宜搭的场景,逻辑编排目前主要运用于表单数据的处理、任务处理、消息发送等场景。


特别说明

  1. 逻辑编排为宜搭-尊享版高级功能,如需使用,请向所属企业管理员确认是否开通了宜搭-尊享版
  2. 在正式使用之前需要确保已经针对所需接口完成了服务注册,如果还没有,请参考服务注册进行相关的配置。
  1. 本文将基于宜搭模版中心的团队小金库,介绍如何使用逻辑编排,建议先启用此模版应用。

2. 视频展示

3. 逻辑编排入口

3.1 逻辑编排支持两种触发机制

  • 表单事件触发
  • 时间计划触发

表单设置页面

4. 逻辑编排设计器

逻辑编排页面

特别说明:调试功能暂不可用

4.1 连接器

逻辑编排通过将一系列的连接器编排在一起实现业务逻辑

连接器是一个逻辑单元,业务人员能编排出多强的逻辑也取决于连接器的丰富程度

4.2 入参配置

逻辑编排创建成功后,系统会默认生成入参配置

特别说明出参配置和入参配置受宜搭平台的扩展点规范约束,请不要修改。

入参配置是默认一个 object 类型、描述是「资金入库」的参数,点击属性配置可以看到属性。入参的属性与表单字段对应,可以在公式中使用。

  • 属性配置

4.3 出参配置

  • 逻辑编排创建成功后,系统会默认生成出参配置

5. 场景演示

当团队资金入库时,如果金额大于 100,通知指定人员团队小金库又有进帐啦!

步骤一:新增业务规则

  1. 打开资金入库表单页面,选择设置 >> 逻辑编排 >> 新增业务规则
  2. 新建业务规则对话框中填写业务规则名称,选择触发方式-事件触发。单击确定

参数

描述

本文示例

业务规则名称

自定义填写业务规则名称。建议填写便于识别的名称。

资金入库金额大于100时通知主管

规则触发方式

o   事件触发:根据指定表单或流程的事件触发业务。

o   计划任务:根据事件和频率计划触发业务。

创建成功事件触发


步骤二:编辑业务规则

  1. 单击编辑页面的
    在连接器库中选IF连接器,按住鼠标左键将其拖动至画布中的开始和结束之间的位置(开始和结束连接器默认存在)

  1. 选择消息发送连接器,将其拖动至画布中IF连接器左侧满足条件时执行的位置。
  2. 选择异常结束连接器,将其拖动至画布中IF连接器右侧不满足条件时执行的位置。

  1. 依次单击各连接器,设置连接器属性。单击完成。

i.设置开始连接器:定义触发方式,选择流程触发事件,在本例中选择创建成功,点击完成

详情请参见 开始连接器。         

特别说明:在开始连接器中,触发事件是必填项,请至少选择一个触发事件。

ii.设置IF连接器,满足「资金入库金额大于100」时通知主管,详情请参见 IF连接器。    

选中公式编辑器左侧

start/inputsSchema/FORM-5FYJMQGVLQWMLGP01GF0S6ZYHL6D2EMAKPDKKDS/numberField_kivgwzui,

点击后会出现在共识编辑区,numberField_kivgwzui是资金入库表单里「增加资金到小金库」组件的唯一标识。

判断入库金额是否大于 100,公式为

@variable('FORM-5FYJMQGVLQWMLGP01GF0S6ZYHL6D2EMAKPDKKDS').numberField_kivgwzui > 100

iii.设置消息通知连接器,详情请参见 消息发送连接器

说明 结束连接器无需设置

 

  1. 单击右上角的保存并发布
  2. 返回宜搭表单页面,选择设置 >> 逻辑编排。在业务规则列表中找到目标业务规则,单击操作列的启用

步骤三:操作验证

  1. 在宜搭应用中提交一笔资金入库

  1. 卖家收到消息通知

6. 连接器介绍

6.1 开始连接器

每个逻辑编排都需要设置开始连接器。开始连接器定义了逻辑编排的触发条件。

  • 事件发生时触发
  • 按时间计划触发

在画布中单击默认存在的开始连接器,设置开始节点的属性,单击完成

参数

描述

节点名称

自定义填写节点名称,

节点描述

自定义填写节点描述。

选择流程触发事件

根据实际情况勾选该逻辑流程触发的事件。

选择审批结束动作(已下线)

当前表单为流程表单时需要配置。

根据实际情况勾选结束审批的触发动作。

设置数据筛选

设置数据筛选条件。

设置完成后,当提交的数据既符合此处的筛选条件又符合流程触发事件时才会触发该逻辑编排业务。


设置完成后即定义了逻辑编排业务的触发规则。当用户在对应表单提交了符合触发规则的数据,该逻辑编排业务启动。


6.2 变量初始化连接器

变量初始化连接器用于定义变量,以便于在后续的逻辑编排中引用该变量。

在画布中单击变量初始化连接器,设置该节点的属性

参数

描述

名称

自定义连接器名称,该名称全局唯一。

变量名

自定义变量名称。

类型

变量类型。

  • 基本变量:表示用于存放在数据处理或者条件判断时需要用到的临时变量。
  • 表单变量:表示该变量用于存放宜搭表单的记录。

变量类型

当变量类型选择

基本变量

时需要设置。

根据实际情况选择基本变量的类型。

当变量类型选择

基本变量

时需要设置。

给基本变量类型赋值。

表单类别

当变量类型选择

表单变量

时需要设置。

  • 单表:表示存放单条数据。
  • 表单集合:表示存放多条数据。

表单

当变量类型选择

表单变量

时需要设置。

选择当前应用下的某一张表单,代表该变量仅能用于存放该表单的记录。

(可选)单击添加,可以定义多个变量

7. 变量赋值连接器

作用:给前面的变量初始化连接器定义的流程变量赋值


注意事项:

  • 先用「变量初始化」连接器定义一个流程变量,再用「变量赋值」连接器给此变量赋值
  • 变量赋值时并不会严格检查类型是否匹配,例如:可以将一个日期对象赋给一个数字,但是如果后续连接器将此流程变量用于数字运算则运行的时候会报错,如果后续连接器将此变量当做日期使用,则运行的时候不会报错。
  • 赋值语句小技巧
    • 例如,给某个对象类型的流程变量的字段赋值,可以通过在赋值语句间接实现(目前赋值连接器没有提供修改对象属性的功能),例如将流程变量a赋值为(@variable('c').field='cd'),则会将变量 c 的 field 字段赋值为了字符串'cd',同时也将流程变量a赋值为了字符串'cd'。

7.1 获取数据连接器

获取数据连接器用于从宜搭表单中获取符合定义的数据。该类型连接器一般与其他连接器配合使用

在画布中单击获取数据连接器,设置该节点的属性,单击完成

参数

描述

节点名称

自定义填写节点名称。

节点描述

自定义填写节点描述。

选择获取数据的目标表单对象

在下拉列表框,选择当前应用的某个表单。


说明 目前仅支持单据表单作为目标表单对象。

设置数据筛选

设置数据筛选条件。 详情请参见设置数据筛选条件。

设置完成后,宜搭应用会获取符合此处设置的条件的数据。

选择数据记录获取类型

该参数的设置需要与变量初始化连接器中的

表单类别

参数设置保持一致。

  • 获取单条记录:表单类别设置为单表时选择该类型。表示获取符合数据筛选条件的第一条数据记录。
  • 获取多条记录:表单类别设置为表单集合时选择该类型。表示获取符合数据筛选条件的数据记录集,最多不超过100条数据记录。

结果排序

根据实际情况设置是否对数据库数据先排序再按照要求获取数据。


说明 排序功能适用于数字框或简单的文本框组件。

将获取的数据保存至

在下拉列表框中,选择在变量初始化链接器中设置的变量。详情请参见变量初始化连接器。


7.1.1 设置数据筛选条件

设置数据筛选条件可以实现仅对符合条件的数据进行相应操作。

  1. 设置数据筛选条件区域,单击设置筛选条件
  2. 设置筛选条件。

序号

参数

描述

1

匹配项

在下拉列表中选择目标表单中需要对其设置筛选条件的组件。

2

操作符

根据组件类型的不同,提供不同类型的操作符。例如,等于、不等于、包含、属于等。

3

赋值方式

  • 字段:更新目标表单对象的字段。
  • 值:字面值方式赋值,即为控件设置为固定值。
  • 流程变量:以变量的形式对组件进行赋值。

4

匹配值

  • 赋值方式为字段时:选择表单变量中的字段。
  • 赋值方式为时:为相应字段设置一个固定值。根据实际的界面交互场景输入固定值或者在下拉列表中选择固定值。
  • 赋值方式为流程变量时:单击输入框右侧的函数图标,在公式编辑器中编辑函数,然后单击确定


  1. (可选)若需要筛选出满足多个条件的数据,您可以增加筛选条件。
    1. 将鼠标移至筛选条件所在行,删除图标右侧的空白处,单击出现的
      。然后根据实际情况选择添加同层级的条件还是子级条件。

      添加完成后,界面增加一个筛选条件。
    2. 根据实际情况设置多个条件之间的逻辑关系()。


7.2 更新数据连接器

更新数据连接器用于更新宜搭表单中符合定义的数据

在画布中单击更新数据连接器,设置该节点的属性,单击完成

参数

描述

节点名称

自定义填写节点名称。

节点描述

自定义填写节点描述。

选择获取数据的目标表单对象

在下拉列表框,选择当前应用的某个待更新的表单。


说明 目前仅支持单据表单作为目标表单对象。

设置数据筛选

设置数据筛选条件。

设置完成后,宜搭应用会更新符合此处设置的条件的数据。未设置筛选条件则更新所有数据。

更新记录值

  • 使用流程变量:表示使用变量初始化连接器中设置的变量。在选择更新记录的对象类型变量或表单类型变量(单个表单实例、表单实例集合)的下拉列表中,选择在变量初始化链接器中设置的某个变量。详情请参见变量初始化连接器。
  • 依次设置字段值:将某些指定字段更新为指定值。过滤条件过滤出的需要更新的表单记录超过50个会报错,需要更新50个以上的表单实例请使用“使用流程变量”更新表单实例。
  • 左边下拉框:选择目标表单中的指定字段。
  •  中间下拉框:选择赋值方式。
  • 字段:将用户提交的数据的对应字段赋值给目标表单的指定组件。
  • 值:字面值方式赋值,即为控件设置为固定值。
  • 流程变量:以变量的形式对组件进行赋值。
  • 右边下拉框或输入框:
  • 中间下拉框中选择字段时:选择表单变量中的字段。
  • 中间下拉框中选择值时:为相应字段设置一个固定值。根据实际的界面交互场景输入固定值或者在下拉列表中选择固定值。
  • 中间下拉框中选择流程变量时:单击输入框右侧的函数图标,在公式编辑器中编辑函数,然后单击确定


创建数据连接器用于向指定的宜搭表单插入数据,可一次性插入多条数据,或插入单条数据

本文介绍如何设置创建数据连接器

7.3 创建数据连接器

创建数据连接器用于向目标表单中新增数据记录

在画布中单击创建数据连接器,设置该节点的属性。单击完成

参数

描述

节点名称

自定义填写节点名称。

节点描述

自定义填写节点描述。

选择新增记录的目标表单对象

在下拉列表框中,选择本应用中的某个表单,新创建的数据将插入该表单。


说明 目前仅支持单据表单作为目标表单对象。

操作类型

该参数的设置需要与变量初始化连接器中的

表单类别

参数设置保持一致。

  • 新增单条数据:表单类别设置为单表时选择该类型。表示插入单条数据。
  • 新增多条数据:表单类别设置为表单集合时选择该类型。表示插入多条数据。

设置记录值

操作类型

选择

新增单条数据

时需要设置。

  • 使用流程变量:表示使用变量初始化连接器中设置的变量。在选择创建记录的对象类型变量下拉列表中选择在变量初始化链接器中设置的某个变量。详情请参见变量初始化连接器。
  • 依次设置字段值:表示插入单条记录时,逐个设置宜搭组件的值。
  • 左边下拉框:选择目标表单中的指定字段。
  • 中间下拉框:选择赋值方式。
  • 字段:将用户提交的数据的对应字段赋值给目标表单的指定组件。
  • 值:字面值方式赋值,即为控件设置为固定值。
  • 流程变量:以变量的形式对组件进行赋值。
  • 右边下拉框或输入框:
  • 中间下拉框中选择字段时:选择表单变量中的字段。
  • 中间下拉框中选择值时:为相应字段设置一个固定值。根据实际的界面交互场景输入固定值或者在下拉列表中选择固定值。
  • 中间下拉框中选择流程变量时:单击输入框右侧的函数图标,在公式编辑器中编辑函数,然后单击确定


说明 当前表和目标表可以为同一张表或不同的表。当为同一张表时,编排成功执行后该表中会有新增两条记录,两条记录指定控件的值相同,一条为本次用户提交的数据,一条为逻辑编排插入的数据。若当前表和目标表不同,两张表将各自新增一条记录,当前表记录为用户本次提交数据,目标表为逻辑编排插入数据,两条记录的关联组件值相同。


删除数据连接器用于删除目标数据。本文介绍如何设置删除数据连接器。

7.4 删除数据连接器

删除数据数据连接器用于删除宜搭表单中符合条件的数据

在画布中单击删除数据连接器,设置该节点的属性。单击完成

参数

描述

节点名称

自定义节点名称。

节点描述

自定义节点描述。

选择获取数据的目标表单对象

在下拉列表框,选择当前应用的某个表单作为数据删除对象。


说明 目前仅支持单据表单作为目标表单对象。

删除数据记录

  • 使用流程变量:根据记录 ID 进行删除。支持单条记录和批量记录。
  • 根据筛选条件:设置删选条件,符合条件的记录将被删除。

选择删除记录的对象或对象(集合)变量

删除数据记录

设置为

使用流程变量

时需要设置。

在下拉列表框中,选择在变量初始化链接器中设置的变量。详情请参见变量初始化连接器。

设置数据筛选

删除数据记录

设置为

根据筛选条件

时需要设置。

设置完成后只删除符合筛选条件的数据。详情请参见设置数据筛选条件。



7.5 消息发送连接器

消息发送连接器用于实现某指定事件发生后,系统向指定人员发送消息通知的功能。

在画布中单击消息发送连接器,设置该节点的属性。单击完成

参数

描述

节点名称

自定义填写节点名称。

节点描述

自定义填写节点描述。

指定人员

填写人员名称,设置完成后该人员会收到订单的钉钉通知。

指定角色

填写指定角色,设置后指定完成后该角色会收到订单的钉钉通知。角色设置请参见角色设置。

指定邮箱

填写邮箱地址,设置完成后消息通知将会发送至该邮箱。

通知内容模板

选择已设置好的内容模板。

如何设置通知模板,详情请参见消息通知。

说明 指定人员指定角色指定邮箱三个参数至少填写一个。


异常结束连接器用于提交、删除、编辑校验不通过时阻断提交行为。该连接器常在 IF 连接器或分支连接器中,用于业务异常判断。本文介绍如何设置异常结束连接器。

7.6 IF连接器


在画布中,单击IF连接器,设置开始节点的属性,单击完成

参数

描述

名称

自定义填写连接器名称。

条件

使用公式编辑器设置IF判断条件


7.7 异常结束连接器

在连接器库中选择异常结束连接器,将其拖动至画布中需要进行业务异常判断的位置。

在画布中,单击异常结束连接器,设置开始节点的属性,单击完成

参数

描述

名称

自定义填写连接器名称。

提交、删除、编辑校验不通过时阻断提交行为

若勾选该参数表示当提交、删除、编辑校验不通过时阻断提交行为。若不勾选,则

异常结束

连接器等同于普通的

结束

连接器,对上述场景不做阻断提交。


说明 目前仅支持提交、删除、编辑校验不通过时的阻断。

错误提示内容

填写当阻断提交行为时对用户呈现的错误提示内容。


7.8 分支连接器

分支连接器的使用场景:

  • 想在某个或者某几个条件满足时执行这些条件各自对应的逻辑,则可以使用分支连接器。


分支连接器示例如下图所示:

图中示例里的「编排」使用了1个分支连接器,默认有一个「默认执行」分支(即默认分支),此外还通过右侧setter 添加了2个分支条件(每添加一个分支条件都会在分支连接器里新增一个分支),所以总共有3个分支。


执行逻辑:

  • 如果所有非默认分支的分支条件都不满足,则默认分支内的逻辑会被执行
  • 如果有至少一个非默认分支的分支条件满足,则这些分支条件满足的分支会被执行(多个分支条件满足则多个分支都会被执行,但并不保证执行的前后顺序,因此分支逻辑之间不应该包含顺序上的依赖关系,否则请使用IF连接器),但「默认执行」分支(也即默认分支)不会被执行


注意:分支连接器目前存在一些缺陷。

  • 目前一定要使用分支连接器的话,则需注意两个问题,避免如下两个问题则分支连接器的行为是符合期望的:
  1. 不要在分支连接器和结束之间放置连接器(此问题目前在紧急修复中)
  2. 填写分支条件请使用公式编辑器,如下图红线所示,暂不要使用输入框选择条件(因为数字也被转为了字符串,无法和数字作出正确的逻辑比较,但如果表单某个组件的值是字符串的话那就可以使用)

7.9 foreach 连接器

在画布中,单击 foreach 连接器,设置 foreach 节点的属性。

参数

描述

名称

自定义填写连接器名称。

条件

说明:只支持循环遍历表单集合对象


foreach 举例:

  1. 先初始化一个表单集合类型的变量「小金库记录」


  1. 然后,通过获取数据记录,将结果保存到变量「小金库记录」


  1. 可以使用 foreach 遍历小金库记录

  1. 在 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 逻辑函数

用于条件判断,值比较

函数名

功能

And

判断是否所有表达式都为真

Or

判断是否所有表达式是否有一个为真

Not

检查表达式是否为 false

Xor

异或

NumberCompare

比较数字大小

Eq

检查两个值是否相等

Ne

检查两个值是否不相等

Lt

检查第一个值是否小于第二个值

Gt

检查第一个值是否大于第二个值

Le

检查第一个值是否小于或等于第二个值

Ge

检查第一个值是否大于或等于第二个值

8.3 日期函数

若要使用日期和时间,可以使用这些日期和时间函数

函数名

功能

参数及示例

ToDate

返回LocalDate或LocalDateTime对象

分三种情况:

  • 传1个数字:传时间戳(是一个数字,例如11009099188883),返回LocalDateTime
  • 传3个数字:依次为年、月、日,返回LocalDate
  • 传6个数字:依次为年、月、日、时、分、秒,返回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)

UtcNow

返回指定时间格式的时间字符串


PlusMinutes

将分钟数加到时间字符串


PlusHours

将小时数加到时间字符串


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

Rand

返回指定范围内的随机整数。

需要补上

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[]

 

["11111222333","222222233344"]

@Variable('单表表单变量名').employeeField_kllyz1e2[1]

@Variable('单表表单变量名').employeeField_kllyz1e2

multiSelectField_kliv0l82

JSONArray

["选项一","选项二","选项三"]

Object[]

["选项一","选项二","选项三"]

checkboxField_kliv0l81

JSONArray

["选项一","选项二","选项三"]

Object[]

["选项一","选项二","选项三"]

cascadeDateField_kliv0l83

JSONObject

 

{
start:1615392000000,
end:1617638400000
}

@Variable('单表表单变量名').cascadeDateField_kliv0l83.start

Object[]

 

[
"1615392000000",
"1617638400000"
]

@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

 

{
"en_US":"bu^fan(步凡)发起的表单页面2",
"pureEn_US":"bu^fan(步凡)发起的表单页面2","type":"i18n","zh_CN":"步凡发起的表单页面2"
}

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"



--------------------欢迎关注我们--------------------

Copyright © 2024钉钉(中国)信息技术有限公司和/或其关联公司浙ICP备18037475号-4