审批流配置
在实体对象下配置审批流程,通过可视化流程设计器编排审批节点与分支条件。
概述
审批流(Approval Flow)是挂在实体对象上的业务流程配置。同一实体对象可以配置多条审批流,每条审批流定义一条从「发起审批」到「审批结束」的完整路径,用于对该对象的数据进行多级审批。
审批流的典型用途:
- 对业务数据(合同、报销单、请假单等)进行多级审批;
- 根据数据字段值走不同的审批分支;
- 审批过程中自动执行接口、发送通知;
- 审批结束后回调自定义接口,驱动后续业务逻辑。
审批流在 开发中心 → 对象配置 → 审批流管理 中维护。与字段、表单、视图列表、接口一样,审批流都属于单个实体对象,因此同一条审批流只服务于它所属的对象。
创建审批流
- 进入 开发中心 → 对象配置,打开目标实体对象;
- 切换到「审批流管理」页签;
- 点击「新增流程」,填写名称、选择审批页面、标题、描述后保存;
- 保存成功后会自动打开该审批流的流程设计器,编排节点;
- 编排完成后点击「保存并发布」,生成一个新版本,对新发起的审批生效。
列表中每条审批流支持「查看详情」「编辑」「复制」操作。
节点类型一览
流程设计器左侧为组件面板,按分组展示可拖拽的节点:
| 分组 | 节点 | NodeType | 说明 |
|---|---|---|---|
| 基础组件 | 发起审批 | ApproveStart | 流程起点,引擎固定节点,每个流程有且仅有一个 |
| 基础组件 | 审批结束 | ApproveEnd | 流程终点,引擎固定节点 |
| 流程审批组件 | 条件分支 | ApproveCondition | 根据数据条件决定流向 |
| 流程审批组件 | 审批节点 | ApproveNode | 人工审批环节 |
| 流程审批组件 | 自动审批 | ApproveAutoHandle | 由系统自动执行审批动作 |
新画布会自动预置「发起审批」与「审批结束」两个节点并自动连线。固定节点不能禁用,也不能插入到连线中间。
界面结构
流程设计器(FlowEditor)由以下区域组成:
- 标题栏:显示流程名称、发布状态与最近更新时间;提供版本切换、保存并发布、流程属性设置入口。
- 左侧组件面板:按「基础组件」「流程审批组件」分组展示可拖拽节点,拖到画布空白处或连线中间即可新增。
- 画布区:可视化编排节点与连线。
- 右侧属性面板(属性设置):选中节点后展示该节点的全部可配置属性,修改即保存到画布草稿。
- 版本下拉框:查看、切换历史版本。
版本与发布
审批流按版本管理:
- 只有点击「保存并发布」才会生成新版本;
- 新发起的审批使用最新发布版本;
- 发布新版本不影响已发起的审批,历史审批仍按原版本继续执行;
- 未发布的改动只存在于草稿,不会生效。
审批入口
审批流可以通过以下方式发起:
- 视图列表的列表行按钮(配置了发起审批的按钮);
- 通过自定义接口在业务逻辑中发起。
审批过程中与结束后,可按配置回调自定义接口继续处理业务逻辑。
审批页面
为审批流选择「审批页面」后,审批待办通知中会附带该页面的链接,审批人点击可直接打开审批详情。
下一步
- 流程属性设置 - 配置审批页面、终态回调接口、通知模板与操作文案
- 发起审批节点 - 流程起点配置
- 审批节点 - 人工审批节点配置
- 条件分支节点 - 条件分支配置
- 自动审批节点 - 系统自动审批配置
- 审批结束节点 - 流程终点配置
数据模型与存储
以下内容面向技术实现与知识库检索,说明审批流相关实体的类型、含义与存储格式。
审批流主对象 MetaWorkflow
存储于数据表 system_metaworkflow。
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
_id | string(GUID) | 主键 | 例:3f5a1c2d-... |
AppId | string | 所属应用 | 应用 ID |
MetaObjectId | string | 所属对象 | 实体对象 ID,列表按此字段过滤 |
Name | string | 名称,必填 | 显示名称 |
Title | string | 标题 | 通知等场景展示的标题 |
Description | string | 描述 | 纯文本 |
MetaPageId | string | 审批页面 ID | 关联的页面,可为空 |
Status | enum(PublishStatusEnum) | 发布状态 | 0=UnPublish 未发布,1=Published 已发布 |
Version | string | 已发布版本 ID | 指向 system_metaflowversion._id |
Properties | object(MetaWorkflowProperties) | 全局属性 | JSON 序列化后存储 |
Customized | bool | 是否被自定义过 | true / false |
CustomCreated | bool | 是否由用户自定义创建 | true / false |
流程图版本 MetaFlowVersion
每次发布生成一条记录,存储于 system_metaflowversion。
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
_id | string(GUID) | 版本主键 | |
Scenario | string | 业务场景 | 审批流固定为 MetaWorkflow |
MainObjectId | string | 主对象 ID | 指向 system_metaworkflow._id |
LogicGraphical | string(JSON) | 流程图 JSON | 见「流程图存储格式」 |
流程图存储格式
LogicGraphical 为 JSON 字符串,采用 cells 数组:节点 shape 为 node,连线 shape 为 edge。
{
"cells": [
{
"shape": "node",
"id": "node-start",
"data": {
"meta": { "type": "ApproveStart", "Title": "发起审批", "SubTitle": "" }
}
},
{
"shape": "node",
"id": "node-approve-1",
"data": {
"meta": { "type": "ApproveNode", "Title": "部门审批", "PassCondition": "0" }
}
},
{
"shape": "edge",
"source": { "cell": "node-start" },
"target": { "cell": "node-approve-1" }
}
]
}
引擎解析时以 data.meta.type 作为节点类型 Type,以 data.meta 作为节点属性字典 Meta,以 data.meta.order 作为执行优先级 Order。
流程实例数据 WorkflowData
每次发起审批生成一条实例,存储于 system_workflowdata。
| 属性名 | 类型 | 含义 |
|---|---|---|
BizDataId | string | 关联的业务数据 ID |
MetaObjectCode | string | 对象编码 |
WorkflowId | string | 关联审批流 ID |
WorkflowVersionId | string | 关联流程版本 ID |
LaunchUserId | string | 发起人 |
Status | enum(ApprovalStatusEnum) | 审批状态 |
CurrentNode | string | 当前节点 ID |
PendingApproverUserIds | string[] | 当前节点未处理审批人 ID 数组 |
ParticipantUserIds | string[] | 参与人 ID 数组 |
NodeItems | array(WorkflowDataNode) | 节点明细列表 |
相关接口
| 接口 | 说明 |
|---|---|
POST /api/MetaWorkflow/GetList | 分页获取某对象下的审批流列表 |
POST /api/MetaWorkflow/Create | 新建审批流 |
POST /api/MetaWorkflow/Edit | 编辑审批流基本信息 |
POST /api/MetaWorkflow/Save | 保存审批流全局属性 |
GET /api/MetaWorkflow/GetWithVersions | 获取审批流及其全部版本 |
POST /api/MetaWorkflow/SaveAndPublish | 保存并发布流程图 |
POST /api/MetaWorkflow/Copy | 复制审批流 |
GET /api/MetaWorkflow/Get | 获取审批流详情 |