跳到主要内容

分支(branch)

Branch 用于处理多个事项的情况,例如:子事项、关联事项等。 b 或是使用高级分支功能,将一个字段处理为数组,并循环执行。

当前事项

一个自动化规则中存在一个 默认的事项,例如:当事项创建时 -> 修改事项的某个字段,此时新创建的事项就是隐含的 默认事项,这就是当前事项的定义。

但是在 branch 后的逻辑,当前事项发生了变化,由触发器的事项变为了 Branch 选定的事项,并且随着循环的执行,**当前事项 **的游标也会跟随循环下移。

也可以使用表达式获取到当前事项的字段:#{item.xxx}#

触发器事项

在 Branch 分支下,也会有一些场景需要使用触发器的事项字段,此时可在 字段复制 功能下选择:

同样也可以使用表达式获取字段:#{triggerItem.xxx}#

**Tips:**在没有 Branch 的情况,当前事项触发器事项 指定的是同一个事项。

分支规则/相关事项

相关事项的功能在 分支、相关事项条件、相关事项字段汇聚 节点都有涉及,三处的逻辑是一致的。

相关事项包括:

  • 子事项:事项层级中下 **一级 **的事项
  • 父事项:事项层级中上 一级 的事项
  • 关联事项:可以根据 关联类型 筛选事项
  • 数据引用:可根据 数据引用字段 处理事项
  • IQL:可通过编写 IQL 的方式,自由选择要处理的事项,同时可使用表达式拼接 IQL

高级分支

可遍历一个数组字段,循环执行一段逻辑,并定义一个变量可以在后续节点中使用。如:

上图将遍历负责人字段,每次循环可使用 #{assigner}# 变量获取到负责人字段的值。

如果是字段不是数组,会被解释为只有一个元素的数组。

**表达式:**可以是事项的字段,也可以是 web 请求的返回值,只要表达式支持即可。

**变量名:**后续节点可使用表达式获取到该变量,上图的值可使用表达式:#{assigner}#

**表达式函数:**可自定义拆分逻辑,默认为空,可以是一段 js 代码,内置 value 参数为字段值(数组),返回一个数组。

表达式

表达式是以 javascript 语言为底层实现,以 #{}# 包裹的 一句 javascript 代码,可在所有文本输入框中使用,与字符串连接生成成动态内容。如:

  • 动态标题:#{item.name}#-子事项
  • 动态 IQL:父事项='#{item.key}#' and 状态='已完成'
  • 动态 json:{ "name": "#{item.name}#" }
  • 动态 url:http://localhost/item/#{item.objectId}#
  • 数学或逻辑计算:#{triggerItem.values.manHour-item.values.manHour}#
  • js 内部函数支持:#{JSON.stringify(item.values)}#
  • 混合使用:#{item.name}#:#{Math.floor(item.values.manHour / 8)}#
  • 拼接数组:#{item.values.assigen.map(u => u.username).join()}#
  • 赋值空:所有类型基本都可以这么写 #{''}

支持函数

  • toPointer(expression, className):将 objectId 转为实体对象,className 可取值:Workspace、Item、Version、Status 等,通常是次 web 请求的返回值转为 proxima 实体对象。

    • 例如:#{toPointer(webResponse.automation_2022112012091232.body.objectId, 'Workspace')}#
  • encodeURIComponent(expression) 代替即可。

  • dateFormat(expression, formatter):日期格式转换,默认格式为:yyyy-MM-dd HH:mm:ss,可支持若干简单的日期分割符(不支持中文)。

    • 如:#{dateFormat(item.createdAt)}##{dateFormat(item.createdAt, 'yyyy-MM-dd')}#
  • moment 函数:内置了 $moment 对象,可直接使用:#{$moment(item.createdAt).add(1, 'days').format('yyyy-MM-DD')}#

表达式取值

  • item:当前事项

  • triggerItem:触发器事项

  • triggerNode:触发器节点的原始数据

    • actor:自动化执行人,格式为一个 json,包含的 key:
      • username:用户名
      • nickname:昵称
      • objectId:用户 id
    • originalItem:修改前的事项,与当前事项的格式一致,创建事项的自动化无此对象
    • tenant:租户
    • itemLink:事项关联,仅在事项关联相关的触发器中可用
    • destination:被关联事项,仅在事项关联相关的触发器中可用