Trigger 与 Action 配置

配置连接器的触发事件与执行动作。

概述

触发动作是指当一个事件发生时,触发数据流程。而产生触发事件的应用系统就是触发系统。Action 执行动作与 Trigger 操作差别不大。区别在于 Trigger 可作为集成流第一个节点,而接口若配置为 Action,则不能作为集成流的第一个触发事件。。

开始之前

  • 角色权限:你所在企业需经过研发灰度,可访问连接器开发页面
  • 前置配置:已了解目标系统的触发事件类型和接口要求

第一步:选择触发事件

根据真实系统需求,选择哪些事件作为 Trigger(触发事件),选择新建。

实时触发:触发事件产生时,应用系统自动把数据推送到集成平台,集成平台随即响应并执行。

第二步:配置触发字段

根据接口要求,配置对应字段。

第三步:配置 Rest Hook

如果事件需要实时触发,需要选择 Rest Hook。Hook 地址有两种级别:

  • 按照集成流生成:每个集成流都有不同 Hook 地址,用于不同事件区分
  • 按照账号生成:系统级别(系统授权对应账号),多个事件共用一个 Hook 地址

Hook 地址需要在连接器配置完成后,进入集成流选择对应事件,生成对应 Hook 地址。

第四步:配置订阅请求

部分 SaaS 系统支持根据接口动态将 Hook 地址注册到对方系统。此时可按对方系统接口文档要求,配置对应接口及参数。。订阅请求中需要将平台生成的回调地址传给外部系统,使用 path("['input_data']['bundleUrl']") 引用。

第五步:配置轮询

如果事件需要轮询,配置轮询间隔或 cron 表达式。平台的轮询框架每次执行时会自动算好一组查询参数,塞进 pollingTimeArg 参数包中。

轮询占位符

占位符 含义 取值说明
path("['input_data']['pollingTimeArg']['startTime']") 本次查询的时间窗口起点 毫秒时间戳(13 位数字)。取「上次拉到数据的时间」,没拉到过数据则往前回溯约 28 小时
path("['input_data']['pollingTimeArg']['endTime']") 本次查询的时间窗口终点 毫秒时间戳,即本次轮询的执行时刻
path("['input_data']['pollingTimeArg']['limit']") 每页条数 平台固定为 100,不需要你设置
path("['input_data']['pollingTimeArg']['offset']") 翻页偏移量 第一页从 0 开始,每翻一页自动 +100,框架持续翻页直到取完(单轮上限 100 万条)

轮询配置要点

你不需要自己填值。只需在连接器的请求配置(URL、Query 参数、Header、请求体)里用占位符把四个值「接」出来,再传给目标系统的查询接口。。

提示:时间单位是毫秒。如果目标接口要的是秒级时间戳,要把参数放到 Query 参数或请求体的值里,用整条表达式做除法:path("['input_data']['pollingTimeArg']['startTime']") / 1000。

配置 Action 类型

Action 执行动作与 Trigger 操作差别不大,配置方式相同。

预期结果与验证

配置完成后,Trigger 事件可以正常触发,Action 动作可以正常执行。

验证方法:

  1. 进入集成流,选择对应事件生成 Hook 地址。
  2. 触发一次事件,观察集成流是否按配置响应。
  3. 若未响应,检查触发字段、订阅请求与轮询配置是否正确。

配置动态字段(可选)

如果 Trigger 的输入字段需要根据连接账号、已选对象或已填值动态变化,例如选择「订单」后才出现「订单状态」「最小金额」,可以配置动态字段函数。

说明:动态字段只影响配置页面上的表单展示,不参与事件数据的解析。Webhook 推送解析、轮询执行仍由请求配置和数据处理函数完成。

标准模式与函数模式(二选一)

Trigger 的输入字段有两种来源,不会合并:

配置 表单实际显示
标准模式:只配置静态字段 显示配置的静态字段
函数模式:开启并绑定函数 只显示函数返回的字段,静态字段被忽略
函数模式,但函数执行失败 回退显示静态字段
函数模式,函数返回结构不合法 页面报错,不回退

配置建议:

  • 函数模式会整体替换表单,函数必须返回全部字段,固定字段也要一起返回;
  • 建议保留一套完整的静态字段,作为函数异常时的兜底;
  • 如果只是少量固定字段,不需要使用函数模式。

配置步骤

  1. 打开「连接器开发平台」→「连接器」,进入需要配置的 Trigger 节点。
  2. 找到「字段属性输入」。
  3. 将模式切换为「函数模式」。
  4. 在「绑定函数」中填写已发布的函数 API 名。
  5. 保存节点,并发布连接器版本。
  6. 进入集成流,添加该 Trigger 并选择连接账号,验证表单字段。

前提:函数需已在函数平台创建并发布,命名空间为 erpdss、绑定对象为 NONE、唯一入参为 syncArg(Map)。

函数入参

函数只有一个入参 syncArg(Map),常用字段如下:

字段 类型 说明
type String 固定为 SCHEMA,表示获取表单结构
connectorKey String 连接器标识
operation String Trigger 节点标识
tenantId String 企业 ID
connectionId String 当前选择的连接账号 ID,未选账号时为空
auth_data Map 当前连接账号的授权数据,如 token、区域
input_data Map 当前表单已填值,只有固定值
extra.schemaArg Map 完整请求参数,含 inputData 与 securityContext

注意:input_data 里只有固定值,表达式、变量、上游节点输出都不会被求值。需要变量的场景请在运行态请求配置或数据处理函数中处理。

返回格式

返回字段列表,推荐直接使用 inputFields:

{
  "inputFields": [
    {
      "apiName": "objectType",
      "title": "对象类型",
      "type": "string",
      "schemaType": "select",
      "required": true,
      "options": [
        { "value": "order", "label": "订单" },
        { "value": "customer", "label": "客户" }
      ]
    }
  ]
}

也可以返回 fields,或 outputData.inputFields。

注意:不要把字段数组直接放在 outputData 下(如 "outputData": [ ... ]),否则会提示 Schema 格式错误。也不要用 code / message 表示失败:平台会把它当作成功结果,随后因缺少字段列表报 Schema 格式错误。

字段配置要点

属性 说明
apiName 字段标识,同一表单内唯一
title 字段显示名称
type string、number、integer、boolean、array、object
schemaType 控件类型,必须使用小写值
required 是否必填
defaultValue 默认值
needReload 该字段值变化后是否重新拉取整张表单
visibleIf 可见条件,如 { "objectType": "order" }
options select 的选项,元素为 { "value": "...", "label": "..." }
multiple select 是否多选
placeholder 输入提示
minLength / maxLength 文本长度限制
minimum / maximum 数字范围

schemaType 常用值(小写,写错会退化成普通文本框):

  • string_input:单行/多行文本
  • number_input:数字输入
  • integer_input:整数输入
  • select:下拉选择
  • switch:开关
  • array:数组
  • array_object:对象数组
  • object:子表单
  • fixed_string:固定文本

联动提醒:

  • 需要触发表单重载的字段,配置 needReload: true;
  • 例如对象类型字段配置 needReload: true 后,用户切换对象类型会重新调用函数,刷新后续字段;
  • 动态字段函数只对 Trigger 生效,Action 始终使用静态字段。

完整函数示例

下面是一个按「对象类型」联动、同时包含固定字段、下拉、数字范围和账号信息判断的完整示例:

/**
 * @description Trigger 动态字段函数示例
 * @bindingObjectApiName NONE
 */
Map authData = (syncArg["auth_data"] ?: [:]) as Map
Map inputData = (syncArg["input_data"] ?: [:]) as Map

String objectType = inputData["objectType"] as String
String region = authData["region"] as String

List fields = []

// 固定字段:函数模式不会自动合并静态字段,必须在这里返回
fields.add([
    apiName   : "objectType",
    title     : "对象类型",
    type      : "string",
    schemaType: "select",
    required  : true,
    needReload: true,
    options   : [
        [value: "order", label: "订单"],
        [value: "customer", label: "客户"]
    ]
])

// 条件字段:根据已选对象类型追加
if (objectType == "order") {
    fields.add([
        apiName   : "orderStatus",
        title     : "订单状态",
        type      : "string",
        schemaType: "select",
        required  : false,
        options   : [
            [value: "paid", label: "已支付"],
            [value: "unpaid", label: "未支付"]
        ]
    ])
    fields.add([
        apiName   : "minAmount",
        title     : "最小金额",
        type      : "number",
        schemaType: "number_input",
        required  : false,
        minimum   : 0,
        step      : 0.01,
        precision : 2
    ])
} else if (objectType == "customer") {
    fields.add([
        apiName   : "customerLevel",
        title     : "客户级别",
        type      : "string",
        schemaType: "string_input",
        required  : false,
        maxLength : 32
    ])
}

// 账号信息参与判断
if (region == "CN") {
    fields.add([
        apiName   : "regionHint",
        title     : "数据区域",
        type      : "string",
        schemaType: "fixed_string",
        fixedValue: "中国区",
        readonly  : true
    ])
}

log.info("[trigger-fields] connectorKey=" + syncArg["connectorKey"] + ", operation=" + syncArg["operation"] + ", objectType=" + objectType + ", fieldCount=" + fields.size())

return [inputFields: fields]

需要远程下拉选项时,在函数里调用第三方接口后,把结果转成 options 数组即可,元素只需要 value 和 label。接口失败时返回空选项或静态兜底选项,不要让整个函数失败。

失败与排查

现象 原因 处理
页面始终显示静态字段 函数模式未开启,或函数名为空 检查「字段属性输入」是否为函数模式,绑定函数是否填写
函数里取不到 input_data 表单还没填值,或字段值不是固定值 先在页面填写后再刷新;变量不会被求值
修改函数后页面没变化 命中缓存,或连接器版本未发布 换一个入参触发新调用,等待 2 分钟缓存过期,确认已发布版本
页面提示 Schema 格式错误 返回结构不合法、字段列表为空、元素不是对象 改为 inputFields 平铺返回,至少返回一个对象元素
下拉显示成普通文本框 schemaType 写成大写或不支持的类型 使用小写 select
函数返回 code / message 但没有回退 平台把返回内容当作成功结果 需要降级时抛出异常,或在函数内部返回兜底字段
Action 节点配了函数不生效 函数模式只对 Trigger 生效 Action 使用静态字段

验收建议:

  1. 选择连接账号,确认表单出现函数返回的字段;
  2. 切换对象类型,确认后续字段随之刷新;
  3. 切换另一个连接账号,确认账号相关字段或选项变化;
  4. 让函数异常或返回空选项,确认页面回退到静态字段或函数兜底字段,没有白屏。

相关主题

2026-10-26
0 0