平台接口
平台接口(Platform Interface)是 Chameleon 的可视化编程系统,通过拖拽组件、连线编排的方式实现业务逻辑,无需手写代码即可完成数据读写、流程控制、脚本计算与服务调用等复杂场景。
概述
平台接口挂在实体对象下,一个接口即一张流程图。流程图由「开始」节点、「结束」节点以及中间的业务组件构成,组件之间通过连线表达执行顺序。开发者在属性面板右侧配置每个组件的参数,保存并发布后即可被表单按钮、视图按钮、触发器、审批流或外部 API 调用。
平台接口的核心要素:
| 要素 | 说明 |
|---|---|
| 流程图 | 由节点(组件)和边(连线)组成的逻辑图,存储在接口的版本记录中 |
| 组件 | 流程中的最小功能单元,每个组件对应一项具体操作,如查询数据、写脚本 |
| 属性面板 | 选中节点后在右侧展开的配置区,用于填写该组件的参数 |
| 开始 / 结束节点 | 引擎固定节点,分别为流程入口与出口,不可删除 |
| 输出到最终结果 | 接口场景特有开关,开启后该组件的执行结果会作为接口的返回值 |
概念说明
本文档是 平台接口 概念文档的功能说明。建议先阅读概念文档了解整体定位,再查阅本模块的组件配置细节。
组件分类
平台接口画布左侧的组件面板按类别分组,共六类:
| 分类 | 说明 | 组件 |
|---|---|---|
| 基础组件 | 流程的入口、出口与调试 | Start、End、Debug |
| 数据操作 | 实体的增删改查、导入导出与数据源 | DbInsert、DbUpdate、DbBatchUpdateField、DbUpdateField、DbLogicDelete、DbDelete、DbQueryList、DbQuerySingle、DbQueryCount、DbQueryGroup、DbDataSource、DataTranslate、DataExport、DbImport、DataImportParse |
| 流程控制 | 条件分支与多路分支 | FlowCondition、Switch、SwitchCase、SwitchDefault |
| 高级组件 | 脚本、服务调用、数据权限、消息通知等 | Async、CSharpScript、JsonScript、ServiceCall、Workflow、Mou、CustomResponse、Notification |
| 审批流节点 | 审批流画布专用节点 | ApproveStart、ApproveEnd、ApproveNode、ApproveCondition、ApproveAutoHandle |
| 对象触发器 | 触发器画布专用入口 | TriggerStart |
各类组件在接口画布中的分组与顺序由前端 getMetaInterfaceSidebarItemConfig 统一配置。
组件一览
下表列出全部组件类型、对应的枚举名与文档入口。类型名与代码枚举完全一致,区分大小写。
| 组件 | 类型(枚举) | 分类 | 说明 |
|---|---|---|---|
| 开始 | Start | 基础组件 | 流程入口,初始化请求上下文 |
| 结束 | End | 基础组件 | 流程出口,返回执行结果 |
| 调试 | Debug | 基础组件 | 输出上下文用于排查问题 |
| 同步写入 | DbInsert | 数据操作 | 向实体对象插入一条记录 |
| 更新数据 | DbUpdate | 数据操作 | 按条件更新实体记录 |
| 批量字段赋值 | DbBatchUpdateField | 数据操作 | 一次配置多条字段赋值 |
| 字段赋值 | DbUpdateField | 数据操作 | 对单个字段赋值 |
| 逻辑删除 | DbLogicDelete | 数据操作 | 标记 IsDeleted 的软删除 |
| 物理删除 | DbDelete | 数据操作 | 从数据库永久删除 |
| 查询集合 | DbQueryList | 数据操作 | 分页查询记录列表 |
| 查询单条 | DbQuerySingle | 数据操作 | 查询单条记录 |
| 查询数量 | DbQueryCount | 数据操作 | 统计记录数量 |
| 分组聚合查询 | DbQueryGroup | 数据操作 | 分组的聚合统计 |
| 数据源 | DbDataSource | 数据操作 | 生成下拉选项等数据源 |
| 数据翻译 | DataTranslate | 数据操作 | 对多语言字段做翻译/还原 |
| 数据导出 | DataExport | 数据操作 | 导出 Excel 文件 |
| 数据导入 | DbImport | 数据操作 | 按模板导入数据 |
| 导入数据解析 | DataImportParse | 数据操作 | 解析导入文件 |
| 条件分支 | FlowCondition | 流程控制 | 条件判断与分支 |
| 多路分支 | Switch | 流程控制 | 基于脚本结果的多路分支 |
| 匹配分支 | SwitchCase | 流程控制 | 多路分支中的匹配项 |
| 默认分支 | SwitchDefault | 流程控制 | 多路分支的兜底分支 |
| 异步任务 | Async | 高级组件 | 后台异步执行 |
| C# 脚本 | CSharpScript | 高级组件 | 执行 C# 代码 |
| JSON 脚本 | JsonScript | 高级组件 | 配置 JSON 响应 |
| 服务 API 调用 | ServiceCall | 高级组件 | 调用内网微服务 |
| 发起审批流 | Workflow | 高级组件 | 发起指定审批流 |
| MOU 数据权限 | Mou | 高级组件 | 开启后续查询的数据权限过滤 |
| 自定义响应 | CustomResponse | 高级组件 | 自定义返回码与提示 |
| 消息通知 | Notification | 高级组件 | 发送站内消息 |
| 审批流开始 | ApproveStart | 审批流节点 | 审批流入口 |
| 审批流结束 | ApproveEnd | 审批流节点 | 审批流出口 |
| 审批节点 | ApproveNode | 审批流节点 | 人工审批节点 |
| 审批条件 | ApproveCondition | 审批流节点 | 审批分支条件 |
| 自动审批 | ApproveAutoHandle | 审批流节点 | 自动执行审批动作 |
| 触发器开始 | TriggerStart | 对象触发器 | 触发器流程入口 |
编排方式
一张接口流程图按以下顺序执行:
编排要点:
- 固定节点:
Start、End、ApproveStart、ApproveEnd、TriggerStart由流程引擎固定,不能禁用,也不能插入到边中间(见FlowCmpFixedTypes)。 - 节点顺序:组件属性面板中的「排序」值决定同一层级组件的执行顺序。
- 节点禁用:接口场景支持禁用普通节点(
IsDisabled),被禁用的节点在发布后的流程中不执行;固定节点不可禁用。 - 多结束点:一张流程图可以有多个
End节点,用于不同分支的收尾。
触发器与接口的关系
平台接口、审批流、对象触发器三种画布共用同一套流程引擎与节点模型,区别在于场景(Scenario)与可用节点白名单:
| 场景 | Scenario 常量 | 入口节点 | 输出到最终结果 |
|---|---|---|---|
| 平台接口 | MetaInterface | Start | 支持 |
| 审批流 | MetaWorkflow | ApproveStart | 不支持 |
| 对象触发器 | MetaTrigger | TriggerStart | 不支持 |
对象触发器画布只允许白名单节点(如数据操作、条件、消息通知),不允许脚本类组件,服务端也会对画布进行校验。
配置与调试
| 操作 | 说明 |
|---|---|
| 保存并发布 | 将当前画布保存为一个新版本并发布,发布后保留历史版本 |
| 版本切换 | 通过顶部版本选择器查看/切换历史版本 |
| 取消发布 | 将接口状态置为未发布(Status = 0) |
| 接口测试 | 通过 api/Biz/{接口ID} 直接传入 URL 参数与 Body 调试接口 |
| 授权 | 跳转至应用授权页,为接口配置访问资源 |
接口列表还支持复制(/api/MetaInterface/Copy)以基于已有接口快速创建新接口。
下一步
属性明细
以下内容面向技术实现与 AI 检索,说明接口实体与流程图的存储结构。
接口实体属性
接口存储在数据表 system_metainterface 中,继承 AppEntityBase:
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
_id | string(GUID) | 接口主键 | 例:9f1c0b2e-... |
AppId | string(GUID) | 所属应用 | 应用主键 |
MetaObjectId | string(GUID) | 所属实体对象 | 对象主键 |
Name | string | 接口名称 | 显示名称 |
Tags | string[] | 接口标签 | 见下方标签枚举 |
Description | string | 接口描述 | 纯文本,可为空 |
Customized | bool | 是否被自定义过 | 内置接口被修改后置 true |
CustomCreated | bool | 是否由用户自定义创建 | 用户新建为 true |
Version | string | 当前发布版本号 | 发布后由引擎写入 |
Status | PublishStatusEnum | 发布状态 | 1 已发布、0 未发布 |
接口标签枚举
Tags 的可选值来自前端 MetaInterfaceTagConst:
| 值 | 说明 |
|---|---|
FieldDs | 字段数据源 |
DataCmpDs | 组件数据源 |
ChartDs | 图表数据源 |
WidgetDs | 组件(Widget)数据源 |
Function | 功能接口(可被审批节点等的叠加接口引用) |
Mou | MOU 数据权限 |
ApprovalUser | 审批人数据源 |
流程图版本存储
流程图版本存储在数据表 system_metaflowversion 中:
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
_id | string(GUID) | 版本主键 | 每次保存发布生成 |
Scenario | string | 业务场景 | MetaInterface / MetaWorkflow / MetaTrigger |
MainObjectId | string(GUID) | 所属主对象 id | 接口 / 审批流 / 触发器的 _id |
LogicGraphical | string | 逻辑图(画布序列化数据) | JSON 字符串,含节点与边 |
相关接口
| 接口 | 说明 |
|---|---|
POST /api/MetaInterface/GetList | 分页获取接口列表 |
POST /api/MetaInterface/Create | 新建接口 |
POST /api/MetaInterface/Edit | 编辑接口 |
GET /api/MetaInterface/Get | 获取接口详情 |
GET /api/MetaInterface/GetWithVersions | 获取接口及其全部流程图版本 |
POST /api/MetaInterface/SaveAndPublish | 保存并发布画布 |
POST /api/MetaInterface/Copy | 复制接口 |
POST /api/MetaInterface/Cancel | 取消发布 |
POST /api/Biz/Test/{versionId} | 接口在线测试 |