Appearance
触发器逻辑
概述
触发器是一种用于响应事件或满足特定条件的自动化机制。它们允许开发人员根据预定的触发条件,如数据更新、时间触发或外部事件触发,执行相应的操作或启动流程。触发器的灵活性和自动化能力使其成为低代码平台中强大而实用的功能,方便开发人员轻松构建自动化流程和响应事件,提高工作效率和准确性。
应用场景
- 数据同步与集成:当源数据发生更改时,触发器可以自动将数据同步到其他系统或应用程序,实现数据的实时更新和一致性。
- 通知和提醒:触发器可以用于发送通知和提醒,例如,当特定事件发生时,如用户注册、订单状态更新等,触发器可以自动发送电子邮件或短信通知相关人员。
- 数据验证和规则执行:触发器可以用于验证数据的有效性并执行相关规则。例如,当数据满足特定条件时,触发器可以自动执行计算、更新字段或发送警报。
添加触发器
进入系统管理 - 触发器,点击页面右上角的 [添加] 按钮
标注的区域分别为:
1.根据需要选择合适触发器类型;
2.选择触发源实体,即此触发器通过选择的实体触发;
3.触发器名称;
选择/填写完成后点击 [确定] 按钮,系统将进入下一步对触发器进行完整配置。
触发器配置
标注的区域分别为:
1.源实体:触发器所关联的实体类型;
2.触发动作:触发器何时被触发。当(源实体记录)发生指定“动作”时执行该触发器;
3.过滤条件:触发器触发的条件。只有满足指定条件的实体操作才会触发该触发器。
4.执行操作:触发器类型
5.执行内容:定义触发器执行操作的具体内容。不同的触发器内容可配置的内容也不同,例如,如果执行操作是发送电子邮件通知,则执行内容可以包括电子邮件的收件人、主题和正文。
6.执行优先级:触发器在发生多个触发事件时的执行顺序。较高的优先级意味着触发器将在其他触发器之前被执行。
7.立即执行:指触发器是否应立即执行操作。如果立即执行,则当前满足触发条件的数据将会立即执行操作。(仅部分触发器支持)
更新指定字段时执行
部分触发器支持配置“更新”指定字段时执行,包括 数据校验、发送通知、新建动态、回调 URL。
定期执行
触发器除了在特定动作下触发执行,也可以被“定期执行”。对于那些没有合适触发时机或需要定期触发的业务(动作)特别有用(例如发送客户生日提醒)。
注意:定期执行将会对 源实体中 所有数据执行操作,设置的执行周期请勿过于频繁!
级联执行
某些触发器可能会引起级联执行,例如 A 触发器用于更新某实体字段值,当某实体字段值被更新后,会被动触发“更新”动作,从而引起 B 触发器(若有)执行,B 触发器又可能引起 C 触发器(若有)执行… 简而言之,无论“更新”动作是如何发生(如手动更新、API 更新、触发器更新等),其对应的触发器都会被执行。
触发器类型
我们提供了多样化的触发器类型,以满足各种业务场景的需求。未来版本中我们还将推出更多的触发器选项,以满足更多的业务需求。
触发器类型包括:
字段更新,字段聚台,数据效验,发送通知,自动审批,自动撤销审批,自动分配,自动共享,自动取消共享,自动删除,回调URL
不同类型触发器配置操作
字段更新
设置当指定字段的数值发生更改时触发的操作。可以定义新的数值、清空字段或更新其他相关字段等。例如,当某个订单的状态字段更改为"已发货"时,可以自动更新发货日期字段并发送通知给相关方。
配置触发器
标注的区域分别为:
1.目标实体:指定字段更新触发器要应用于的实体对象。源实体与目标实体通过 一对一引用 关联,只有存在关联关系的实体才能被选择。
2.更新规则:根据业务需要设置“更新方式”、“源字段”(或“计算公式”),系统会将结果自动填写到“目标字段”中。
更新方式:
- 字段值更新:根据特定字段的新值来更新目标字段。可以将源字段的值直接复制到目标字段,以保持一致性。
- 固定值更新:将一个固定的值分配给目标字段。这在需要将特定值应用于多个记录或自动生成值的情况下使用。
- 置空更新:将目标字段的值设置为空,清除其现有值。
- 计算公式更新:基于公式或表达式计算目标字段的值。可以使用数学运算、逻辑操作、日期函数等来计算新的字段值,支持高级计算公式。
3.添加:设置完成后点击 [添加],一个触发器可添加多个更新规则。
计算公式
计算公式可以实现复杂的字段值计算,甚至支持各种逻辑判断来计算字段值,但同时其也有一定的使用门槛。
公式编辑器
公式编辑器仅支持数值类型的字段,如果是其他类型的字段,会自动切换到“高级计算公式”编辑器。请注意计算公式所返回的结果需要与“目标字段”类型匹配,例如目标字段为数字,否则可能导致触发器执行失败。
在“更新方式”中选择“计算公式”,点击“计算公式”打开公式编辑器:
标注的区域分别为:
1.右侧区域为可选数值类型的字段,可基础该类型的字段进行数学运算。
2.左侧区域为计算器操作。
高级计算公式
高级计算公式要求您具备一定的编程基础,否则可能无法顺利进行。
高级计算公式的主要作用是满足用户特定的计算需求,因为不同的业务场景可能需要进行各种复杂的计算和数据转换。通过使用高级计算公式,用户可以根据自己的需求编写适合自己业务逻辑的代码,从而实现对数据的高度定制化处理。
需要注意的是,由于高级计算公式允许用户编写自定义代码,建议在编写高级计算公式时,充分进行测试和验证,以确保计算逻辑的正确性和准确性。
计算公式底层使用 Aviator 实现,因此您可以编写任何符合 Aviator Script 语法的代码来实现业务需求。
高级计算公式中的字段变量也需要通过 {} 包裹,在公式执行时 系统会自动替换实际的字段值。
更多函数
system.callerId()
作用:获取当前登录用户Id
示例:system.callerId()
system.departmentId()
作用:获取当前登录用户所属部门Id
示例:system.departmentId()
system.now()
作用:获取当前服务器时间
示例:system.now()
getAutoId
作用:获取当前数据的autoId,这个函数是基于数据库的自增Id。不会跳号,同一条数据任何时候获取到的Id都是固定的。
示例:getAutoId({Id})
getIncrementId
作用:这个函数是基于redis的。比较灵活,每次获取的都是新的自增Id。缺点就是代码异常的话会跳号,另外迁移的时候必须要记得迁移redis的 INCREMENT_ID 下的数据,不然号码会重新开始。
示例:getIncrementId("incId") //可以通过不同的key,获取到不同的自增Id
StringUtils
作用:同 org.apache.commons.lang3.StringUtils 类的相关方法
示例: StringUtils.isBlank("字符串")
DateUtil
作用:同 hutool包 的DateUtil方法
示例: DateUtil.format({createdOn},"yyyyMMdd")
NumberUtil
作用:同 hutool包 的NumberUtil方法
示例: NumberUtil.isNumber("字符串")
Convert
作用:同 hutool包 的Convert方法
示例: Convert.toInt("1")
StrUtil
作用:同 hutool包 的StrUtil方法
示例: StrUtil.trim(" 1 ")
字段聚合
可以将与记录关联的子记录或相关记录的信息进行聚合,并填充到主记录的字段中。这可以帮助实现一对多关系中的汇总统计,例如将所有销售订单的总金额聚合到客户对象的总销售额字段中。
字段聚合支持对数字字段的聚合计算,提供的聚合方式包括求和、计数、平均值以及计算公式等。
配置触发器
标注的区域分别为:
1.目标实体:指定字段更新触发器要应用于的实体对象。源实体与目标实体通过 一对一引用 关联,只有存在关联关系的实体才能被选择。
2.聚合规则:定义聚合触发器的规则和条件。不同类型的字段的聚合方式不同:
数值类型的聚合方式:求和,计数,去重计数,平均值,最大值,最小值,计算公式;
其他类型的聚合方式:计数,去重计数,拼接,去重拼接,计算公式。
聚合方式:
- 计数:对满足聚合数据条件的记录数进行计数。
- 去重计数:对满足聚合数据条件的唯一记录数进行计数。
- 拼接:将满足聚合数据条件的字段值按指定方式拼接在一起,形成一个聚合结果。
- 去重拼接:将满足聚合数据条件的唯一字段值按指定方式拼接在一起,形成一个聚合结果。
3.聚合数据条件:设置用于筛选满足聚合需求的数据条件。只有符合条件的数据才会被聚合,这些条件可以基于字段值、时间范围、逻辑运算符等来定义。例如,可以设置按特定产品类别的记录进行聚合,或者按特定日期范围的销售数据进行聚合。
“聚合数据条件”与“附加过滤条件”的差异:
“附加过滤条件”决定此触发器是否会被执行
“聚合数据条件”决定数据聚合的范围
例如某客户下有 10 笔订单需要聚合,且只聚合有效订单。若在“附加过滤条件”中排除无效订单,当一笔订单从“有效”修改为“无效”后,此触发器不会执行,从而导致本该聚合 9 笔订单的现在仍旧为 10 笔。
数据校验
在保存或更新记录之前,检查指定字段的数值是否满足预定义的条件或规则。如果数据不符合条件,可以阻止保存或显示警告信息。例如,要求订单的付款金额不能超过客户的信用额度,可以通过数据校验来实现自动验证。
配置触发器
标注的区域分别为:
1.校验条件:定义触发字段校验的条件。例如,当某个输入字段为空或格式不正确时触发校验。
2.提示内容:设置校验失败时的提示信息,以便用户明确了解校验失败的原因。例如,您可以提示用户输入字段不能为空或者是一个有效的电子邮件地址等。内容支持字段变量。
字段变量:字段变量以 {} 包裹字段内部标识的方式放置在内容中,字段变量会在提示时替换成相应的内容
发送通知
在指定条件下,自动发送通知给相关人员或团队。通知可以通过电子邮件、短信或应用内消息等方式进行。例如,在服务请求状态更新为"已解决"时,可以自动发送电子邮件通知给客户确认问题已解决。
配置触发器
标注的区域分别为:
1.通知类型:选择不同类型的通知,如通知、邮件或短信,根据您的业务需求和目标受众选择适合的通知方式。邮件,需要配置 邮件服务 后可用;短信,需要配置 短信服务 后可用。
2.发送给谁:定义接收通知的目标受众是内部用户还是外部人员;
内部用户即本系统的用户,当发送短信时会使用用户中的“手机号”字段(需为手机号码),当发送邮件时会使用用户中的“邮箱”字段。
外部人员:可选择将短信或邮件发送至源实体的“电话”、“邮箱”字段。
3.内容:编写通知的具体内容。
4.字段变量:字段变量以 {} 包裹字段内部标识的方式放置在内容中,字段变量会在提示时替换成相应的内容。
自动审批
支持根据定义的规则和条件,自动对特定类型的记录进行审批。例如,当某个采购订单达到指定金额时,可以自动触发审批流程并将其路由给相关的审批人员进行处理。
对于“审批中”或“审批通过”的记录,系统会忽略不会进行自动审批。
配置触发器
标注的区域分别为:
1.使用审批流程:选择使用哪个 审批流程 进行审批,或不使用。无论选择是否使用,系统都会直接审批通过,无需人工干预。只要符合触发器执行条件机会执行自动审批,不受审批流程自身 发起条件 的限制。
2.提交模式:若启用此模式则必须选择一个审批流程使用。启用后系统会自动提交审批,而非自动审批通过。
自动撤销审批
在特定条件满足时自动撤销之前已进行的审批。例如,如果某个销售订单的支付未及时完成,则可以自动撤销之前的批准并将订单状态更改为"未批准"。
配置触发器
标注的区域分别为:
1.指定需要执行的撤销审批操作,选择撤销关联实体(记录)。
自动分配
根据指定条件,自动将任务、工单或记录分配给适当的用户或团队。例如,将新的客户请求自动分配给空闲的客户服务代表。
配置触发器
标注的区域分别为:
1.分配类型:您可以选择两种不同的分配类型。
- 跟随主实体:选择此选项时,记录将被分配给与主实体相关联的团队成员。主实体可以是一位负责人或团队,或者是特定的用户角色。同时,系统还会将关联记录一起分配给相应的团队成员。
- 自定义:选择此选项时,您可以自定义记录的分配方式,包括以下内容:
分配给谁:指定记录分配给哪些团队成员或用户角色。可以选择分配给固定的个人用户、动态团队或根据其他条件进行分配。
分配规则:定义多人分配规则,确定如何从团队中选择一个成员进行分配。
同时分配关联记录:将与记录相关联的其他记录一同分配给团队成员。这有助于确保相关的任务和活动也能够分配给适当的成员。
自动共享
在特定条件下,自动共享记录的访问权限给其他用户或团队,可以根据预定义的规则和条件设置记录的共享权限。例如,将销售机会自动共享给销售团队中的相关人员。
配置触发器
标注的区域分别为:
1.共享给谁:指定共享给哪些用户、团队或角色。可以选择将记录共享给特定的用户,或是将记录共享给与记录相关的团队或角色。
2.同时共享关联记录:同时共享与触发记录相关的关联记录。
3.允许编辑:共享的记录是否允许被共享给的用户进行编辑。如果允许编辑,共享的用户可以修改和更新记录。
取消自动共享
在满足特定条件时自动取消之前已经共享的记录的访问权限或数据细节。例如,如果销售合同到期或被取消,则可以自动取消共享给相关团队的权限。
配置触发器
标注的区域分别为:
1.取消共享记录:选择要取消自动共享的记录类型,即不再根据特定条件自动共享记录;
2.取消哪些用户:选择要取消自动共享的用户,不选择则取消记录的全部共享用户。
自动删除
根据指定的条件或时间范围,自动删除不再需要的记录。例如,可以自动删除已过期的优惠券或销售线索。
配置触发器
标注的区域分别为:
1.删除记录:选择删除哪些关联实体(记录)
回调URL
在特定事件或条件发生时,自动向指定的URL地址发送HTTP请求进行回调。这可以用于诸如与外部系统集成、触发外部操作或更新其他系统中的数据等应用场景。
配置触发器
回调URL触发器是一种配置,用于在特定事件发生时向指定的URL或函数发送回调通知
标注的区域分别为:
1.回调类型:选择URL回调或者函数回调;
URL回调:
2.推送到(URL):用于接收回调数据的URL地址。
3.安全码:可选项,用于验证发起回调请求的合法性。可以将安全码作为参数附加到回调URL中,以确保回调请求来自于预期的发送者。
4.校验返回结果:选择是否需要对回调结果进行校验。如果开启校验,平台会校验回调结果并返回校验结果。若返回结果为 SUCCESS 则成功,否则将失败。请注意启用此选项后若返回结果不是 SUCCESS 会导致用户操作失败(例如修改记录)。
5.推送全量数据:选择是否推送全部的数据内容。
6.推送全量数据:更新时默认只推送修改的字段/数据,如果选择推送全量数据,更新时将会把所有相关的数据内容都推送给回调URL。
7.推送测试:用于验证回调URL是否正常工作。可以通过发送测试请求,模拟回调数据并检查回调URL的相应。
函数回调:
8.回调函数:选择一个已经定义好的函数作为回调处理程序。回调触发后,平台会调用该函数来处理回调操作。
9.推送全量数据:更新时默认只推送修改的字段/数据,如果选择推送全量数据,更新时将会把所有相关的数据内容都推送给回调URL。