触发器管理(Triggers)
触发器用于将外部事件(Webhook、定时任务、消息队列等)与工作流解耦,可以为同一个工作流配置多种触发方式。
触发器管理(/api/workflows/workflowId/triggers,/api/triggers)
- 列表:GET
/linker/workflows/{workflowId}/triggers - 创建:POST
/linker/workflows/{workflowId{/triggers - 获取:GET
/linker/triggers/<triggerId> - 更新:PUT
/linker/triggers/<triggerId> - 删除:DELETE
/linker/triggers/<triggerId> - 查看事件收件箱:GET
/linker/triggers/<triggerId>/events?page=&size= - Webhook 触发:POST
/linker/triggers/webhook/<triggerId>
Trigger 对象结构(TriggerDef)
常见字段(参考后端 TriggerDefEntity 与 TriggerController.TriggerDefDetail):
id:触发器 IDtype:触发类型,枚举值:WEBHOOK:通过 HTTP Webhook 触发CRON:定时任务触发MQ:消息队列触发
name:名称enabled:是否启用workflowApiKey:绑定的工作流apiKeyinputTemplate:输入模板,用于将触发事件转换为工作流的 Start 输入
Webhook 类型专用字段:
webhookSignatureHeader:签名头部名称(默认:X-Signature)webhookTimestampHeader:时间戳头部名称(默认:X-Timestamp)webhookMaxSkewSeconds:允许的时间偏移秒数(默认约 300 秒)webhookHasSecret:是否配置了 Webhook 密钥(只读,用于前端展示)
Cron 类型专用字段:
cronExpression:Cron 表达式(例如0 */5 * * * ?)cronTimezone:时区(例如Asia/Shanghai)cronNextFireAt:下次计划触发时间(只读,由调度器计算)
MQ 类型专用字段:
mqDriver:消息驱动类型(例如kafka、rabbitmq,视实现而定)mqQueue:队列 / Topic 名称
审计字段:
createdAt:创建时间updatedAt:更新时间
创建与更新 Trigger
- 创建:通过
POST /linker/workflows/<workflowId>/triggers绑定到指定工作流 - 更新:通过
PUT /linker/triggers/<triggerId>局部更新字段(仅请求体中出现的字段会被修改)
更新时的类型特定行为:
- 当类型为
WEBHOOK时,可更新:webhookSecretwebhookSignatureHeaderwebhookTimestampHeaderwebhookMaxSkewSeconds
- 当类型为
CRON时:- 更新
cronExpression或cronTimezone会自动重置内部的cronNextFireAt,由调度器重新计算
- 更新
- 当类型为
MQ时:- 可更新
mqDriver、mqQueue
- 可更新
示例:更新 Webhook 触发器的签名配置:
curl -X PUT "${API_BASE}/linker/triggers/<triggerId>" \
-H "Authorization: Bearer ${TOKEN}" \
-H "X-Tenant-Id: <tenantId>" \
-H "Content-Type: application/json" \
-d '{
"name": "Order Webhook",
"enabled": true,
"webhookSecret": "my-signing-secret",
"webhookSignatureHeader": "X-Signature",
"webhookTimestampHeader": "X-Timestamp",
"webhookMaxSkewSeconds": 300
}'