1. 后端
插件化手册
  • FH2 插件开发手册
    • 产品简介
    • 典型场景
    • 发版说明
    • 快速开始
      • 快速开始总览
      • 第一个插件
      • 后端插件
      • 全栈闭环
    • AI辅助开发
      • AI 开发 Skill
      • 安装与复验
      • 第一个工程
      • 真实需求示例:现场问题上报
      • 改造已有工程
      • 调试与交付
    • 开发指南
      • 开发指南
      • 基础概念
        • 基础概念总览
        • 什么是插件开发
        • 平台架构
        • 前端宿主、扩展点与能力
        • 后端运行时、入口与权限
        • 开发流程
        • 安全与隔离
        • 支持范围与问题反馈
      • 开发指南
        • 开发指南总览
        • 前端插件
          • 前端插件深度指南
          • 前端工程结构
          • 插件清单(fh2-plugin.json)
          • 入口与生命周期
          • 界面与状态
          • 多宿主插件
          • 跨宿主通信服务
          • HTTP、WebSocket 与事件
          • 存储、Blob 与定时器
          • 工具链与本地调试页面
        • 后端插件
          • 后端开发深度指南
          • 后端插件的结构
          • 后端源清单 fh2-plugin.json
          • HTTP 接口处理函数
          • 消息订阅与事件处理函数
          • ctx 与能力注入
          • 数据存储与缓存
          • 流程编排
          • 触发方式
          • 连接外部系统
          • 流程编排练习(DAG)
        • 前后端协作
          • 前后端协作总览
          • 前后端共享契约
          • 端到端幂等
          • 事件、通知与状态
          • 统一错误模型
          • 链路标识与诊断日志
        • 完整练习
          • 环境准备
          • 第一个前端插件
          • 第一个后端插件
          • 第一个全栈插件
      • 能力总览
        • 能力地图
        • 能力可用性矩阵
        • 前端能力
          • 平台通用能力
            • 平台通用能力总览
            • 基础运行时:HTTP、事件、WebSocket 与存储
            • 导航、位置与通知
            • 弹窗、音频与剪贴板
            • 地图能力
            • 项目设备能力
            • WPMZ 与航线预览
            • 受控对象上传
          • 项目宿主
            • 项目宿主总览
            • 项目上下文
            • 项目侧边栏入口
            • 项目插件路由
            • 项目工作区
          • 消息宿主
            • 消息宿主总览
            • 消息告警弹层
            • 消息导航与通知
          • 计划库宿主
            • 计划库宿主总览
            • 计划库表单上下文
            • 计划库表单扩展
            • 校验、提交与 `biz_ext`
          • 驾驶舱
            • 驾驶舱插件能力总览
            • 驾驶舱扩展点
            • 上下文与遥测
            • 相机、检测与 AI
            • 场景几何与直播指针
            • 飞控、云台与任务
            • 驾驶舱平台事件
        • 后端能力
          • 后端能力地图
          • 后端能力总览
          • 配置、受管出网与集成连接
          • 事件与流程
          • 飞行任务与违停巡逻
          • 数据存储
          • 媒体与前端通知
          • 资源租约
          • 作业、目标轨迹与视频处理
      • 调试与测试
        • 调试与测试总览
        • 快速入门排错
        • 本地开发
        • Web IDE:打开工程与保存改动
        • 工作流编辑器:节点、接线与交付
        • 知识与 MCP:先判断需要哪一层事实
        • 前端本地调试
        • 后端运行时与流程调试
        • 模拟数据与测试数据
        • 集成测试与 E2E
        • 日志与链路追踪
        • 常见问题排查
      • 完整示例
        • 示例与案例总览
        • 项目侧边栏与工作区
        • 消息告警卡片
        • 计划表单任务清单
        • 驾驶舱动作与左侧面板
        • 最小后端插件
        • 最小全栈插件
        • 多宿主插件实战
        • 事故快处
        • 交通抓拍
        • 违停巡逻完整案例
      • 构建发布与安全
        • 构建、发布与安全
        • 质量门禁
        • 行业包构建与打包
        • 能力版本发布
        • 安装、升级与回滚
        • 安全基线
      • API参考
        • API 参考总览
        • 前端
          • 前端 API 参考
          • 前端插件清单结构
          • 前端 SDK API
          • 前端扩展点目录
          • 前端能力目录
          • 前端平台事件目录
          • 跨宿主通信服务 API
          • 工具链命令行参考(`fh2-plugin`)
        • 后端
          • 后端 API 参考
          • 后端插件源清单
          • 后端 HTTP 接口参考
          • 后端事件消费参考
          • 后端脚本上下文(`ctx`)
          • 后端数据存储
          • 流程编排语言
          • 流程触发器参考
          • 后端能力目录
          • 后端 HTTP API
        • 共享契约
          • 共享契约参考
          • 类型与契约目录
          • 错误模型
          • 版本兼容性
      • 附录
        • 错误码
        • 术语表
        • 常见问题
  1. 后端

流程触发器参考

每个流程 JSON 必须自带 trigger 段,声明「这个流程怎么被启动」。五轴 api / schedule / stream / bizNotify / job 至少启用一轴,同一流程可以同时启用多轴。

总表#

轴启动方式关键字段
api调用 POST /flows/{name}/startseed?
schedule平台定时调度intervalSec 必填、paused?
stream消费统一事件流,命中即启动match 必填、seed 必填
bizNotify消费任务系统通知subscriber 必填、seed 必填、params?
job只能被本插件代码 flow.start() 启动seed?

HTTP 触发(api)#

{ "trigger": {"api": {"seed": ["eventId"]}} }
seed 列出启动请求会写入 trigger.* 的键。
声明了 api 才允许 HTTP 启动;否则流程存在但调用返回 403 / 40301。

定时触发(schedule)#

{ "trigger": {"schedule": {"intervalSec": 300, "paused": false}} }
intervalSec > 0 必填;paused 默认 false。
平台按声明维护定时调度(调度 ID 固定为 flow-schedule-<流程名>):手工暂停会被下一轮对账恢复,要停就改声明并重新发布。
调度触发会提供 run.intervalSec。

事件流触发(stream)#

{
  "trigger": {
    "stream": {
      "match": {"event_type": "traffic.accident", "status": "pending"},
      "seed": ["eventId", "eventType", "payload", "lat", "lng"]
    }
  }
}
match 必填非空;键只能是 event_id / event_type / tenant_id / source / status / priority / occurred_at / flight_mission_id / result_code / notify_on / payload,全部按字符串等值 AND。
seed 用小驼峰命名法写:eventId, eventType, tenantId, source, status, priority, occurredAt, flightMissionId, resultCode, notifyOn, payload, lat, lng。
空字符串值不写入 seed;lat/lng 从 payload.poi 提取,任一为 0 或非法则两者都不写入。
eventId 是业务幂等键(流程 ID = <流程名>-<bizId>,重复启动返回 {already: true})。

业务通知触发(bizNotify)#

{
  "trigger": {
    "bizNotify": {
      "subscriber": "patrol_demo",
      "seed": ["taskUuid", "projectUuid", "dockSn", "waylineUuid"],
      "params": {
        "recheck_delay_sec": {"as": "recheckDelaySec", "type": "number", "max": 3600}
      }
    }
  }
}
subscriber 必填,对应任务通知 biz_ext 顶层的 key;按它匹配是否归本流程处理。
seed 值域:eventId, eventKind, occurredAt, taskUuid, projectUuid, taskName, taskType, dockSn, droneSn, waylineUuid, taskStatus。
params 只投影白名单键,可改名;类型 number/string/bool,number 可设 max 钳值。
用任务 UUID 做幂等键(每次通知自带的事件 ID 会变,不要用它)。

作业触发(job)#

{ "trigger": {"job": {"seed": ["event_id", "file_id"]}} }
只能被本插件的 HTTP 接口处理函数或事件脚本经 flow.start(flowName, bizId, seed) 启动;HTTP 启动端点不会因此放行。
seed 名不能为空、带首尾空白、重复或叫 script;运行时会校验实际传入的 seed 覆盖声明的键。
重复启动同一业务 ID 返回 {already: true},不是错误。

幂等与投递#

项行为
流程 ID固定 <流程名>-<bizId>;同一业务 ID 即使流程已结束也不能重跑(重复启动返回 already)
事件流启动失败不确认消息,等待重新投递
业务通知启动失败退避后重新入队;永久坏消息确认并告警

常见问题#

现象原因与处理
启动返回 40301流程没声明 api 触发器;补声明并重新发布,或改用其他轴
定时触发到点没跑声明被 paused,或 intervalSec 非法;注意手工暂停会被平台对账恢复
事件流命中但流程没起match 键名不在允许列表、或值类型不是字符串等值
flow.start 报流程不存在作业流程必须与调用脚本在同一个插件包内
修改于 2026-10-22 03:39:48
上一页
流程编排语言
下一页
后端能力目录
Built with