流程引擎功能量化技术描述
统计日期 :2026-10-24
统计口径 :以当前仓库源码中的枚举项 / 属性常量 / 设计器 map.Add 字段 / 管理端 GPE·GPN 面板 为准,逐项清点。
说明:本文回答「有多少配置项、有多少规则」,不展开「每个怎么用」。功能需求粒度(四大流程模式共 769 个功能点)见姊妹文档《CCFlow 主要流程功能统计汇总报告》。
一、总览:一张表看体量
| 维度 | 数量 | 统计口径 | 源码锚点 |
|---|---|---|---|
| 找人规则(DeliveryWay) | 62 | 前端唯一枚举值(后端 59,含注释差异) | DeliveryWay.ts / EnumLib.DeliveryWay |
| 节点属性字段 | 138 | NodeAttr 常量 |
Template/NodeAttr.cs |
| 流程属性字段 | 93 | FlowAttr 常量 |
Template/FlowAttr.cs |
| 节点属性 UI 配置项 | 69 | NodeExt.ts 中 map.Add* |
AttrNode/NodeExt.ts |
| 流程属性 UI 配置项 | 63 | FlowExt.ts 中 map.Add* |
AttrFlow/FlowExt.ts |
| 按钮/工具栏属性字段 | 135 | BtnAttr 常量 |
Template/BtnAttr.cs |
| 工具栏按钮族 | 40 | BtnLab 中活跃的 *Lab 字段 |
AttrNode/BtnLab.ts |
| 工具栏相关配置项 | 121 | BtnLab 中 map.Add* |
同上 |
| 退回规则 | 6 | ReturnRole 枚举 |
EnumLib.ReturnRole |
| 删除规则 | 5 | DelWorkFlowRole 枚举 |
EnumLib.DelWorkFlowRole |
| 跳转规则 | 5 | JumpWay 枚举 |
EnumLib.JumpWay |
| 撤销规则 | 4 | CancelRole 枚举 |
EnumLib.CancelRole |
| 阻塞模式 | 8 | BlockModel 枚举 |
EnumLib.BlockModel |
| 多人处理模式 | 5 | TodolistModel 枚举 |
EnumLib.TodolistModel |
| 节点执行方式 | 5 | WhoExeIt(0~4) |
whoExeIt.ts / NodeExt |
| 节点运行模式 | 6 | RunModel 枚举 |
EnumLib.RunModel |
| 方向/条件数据源 | 18 | ConnDataFrom 枚举 |
Template/CondEnum.cs |
| 条件类型 | 5 | CondType 枚举 |
同上 |
| 节点事件标记 | 26 | EventListNode 常量 |
EvenListNode.cs |
| 流程事件标记 | 7 | EventListFlow 常量 |
EvenListFlow.cs |
| 事件执行类型 | 10 | EventDoType 枚举 |
BP.En30/Sys/EnumLib.cs |
| 轨迹动作类型 | 42 | ActionType 枚举 |
EnumLib.ActionType |
| 人员选择器模式 | 16 | SelectorModel 枚举 |
EnumLib.SelectorModel |
| 抄送规则 | 6 | CCRoleEnum 枚举 |
EnumLib.CCRoleEnum |
| 表单方案类型(活跃) | 9 | GPE_FrmSln 中启用的方案 |
AttrNode/FrmSln/GPE_FrmSln.ts |
| 审核组件配置项 | 25 | NodeWorkCheck 的 map.Add* |
AttrNode/NodeWorkCheck.ts |
| 节点管理 GPE/GPN 面板 | 33 | AttrNode/**/GPE_*.ts + GPN_*.ts |
Vue3/.../AttrNode/ |
| 流程管理 GPE/GPN 面板 | 23 | AttrFlow/**/GPE_*.ts + GPN_*.ts |
Vue3/.../AttrFlow/ |
| 对外 API(Dev2Interface) | 307 | public static 成员 |
BP.WF/Dev2Interface.cs |
读数提示 :同一概念常有两层数字------枚举/常量层 (引擎能表达什么)与 UI 层(设计器暴露多少)。例如节点属性常量 138 个,设计器主面板直接展示约 69 项,其余通过 GPE 子面板、参数表、关联实体展开。
二、找人规则:62 种 DeliveryWay
接收人规则是流程引擎差异化最明显的能力之一。前端 DeliveryWay.ts 定义 62 个唯一数值 (后端 EnumLib.DeliveryWay 活跃枚举约 59 项;前端多出如 ByDeptOrg=101、ZhieJieShangJi601/602 等扩展值)。
2.1 按机制分组(便于选型)
| 分组 | 代表规则 | 说明 |
|---|---|---|
| 组织结构 | ByStation、ByDept、ByBindEmp、ByDeptAndStation、ByStationOnly、ByDeptLeader、ByDeptSpecer、ByEmpLeader |
角色/部门/人员绑定及领导计算 |
| 范围交集 | ByStationSpecDepts、ByStationSpecStas、FindSpecDeptEmps* |
指定部门集合 ∩ 角色、指定角色集合 ∩ 部门 |
| 连续多级主管 | ByMLeader0/1/2、ZhieJieShangJi601/602 |
指定角色、通讯录等级、顶级部门、直属上级 |
| 与历史节点相同 | ByStarter、ByPreviousNodeEmp、BySpecNodeEmp、BySpecNodeEmpStation |
发起人 / 上一节点 / 指定节点处理人 |
| 上级部门 | BySenderParentDeptLeader、BySenderParentDeptStations |
发送人上级部门负责人 / 角色 |
| 表单字段驱动 | ByPreviousNodeFormEmpsField、...FrmDtl、...Team、...Depts、...DeptStations、...StationsAI、...StationsOnly |
主表/从表人员、部门、角色、权限组字段 |
| SQL / 数据源 / API | BySQL、BySQLTemplate、ByGenerDBSrc、SubThreadByGenerDBSrc、ByAPIUrl、BySFTable、ByFEE |
外部数据决定接收人 |
| 人员选择器 | BySelected、BySelected_1/2/3、BySelfUrl、BySelectedEmpsOrgModel、PreplaceWokerFree/Fix |
海选、固定范围、自定义 URL、预置处理人 |
| 用户组 | ByTeamOnly、ByTeamOrgOnly、ByTeamDeptOnly、ByTeamStationOnly、ByBindTeamEmp |
全集团 / 本组织 / 本部门用户组 |
| 路由 | ByFromEmpToEmp、ByFromDeptToEmp、ByFromAttrToEmp |
人员/部门/字段路由表 |
| 子线程专用 | BySQLAsSubThreadEmpsAndData、ByDtlAsSubThreadEmps、BySetDeptAsSubthread |
子线程接收人与数据源 |
| 项目 / 组织选择 | ByStationForPrj、BySelectedForPrj、BySelectedOrgs、BySelectEmpByOfficer |
项目组、多组织联络员 |
| 兜底 | ByCCFlowBPM=100 |
BPM 模式兜底处理 |
配置入口:GPE_AccepterRole(节点属性 → 接收人规则)。选择器另有 16 种 SelectorModel(部门/角色/人员/SQL/WebAPI/用户组等)。
三、节点属性:138 字段 · 69 项 UI · 33 个配置面板
3.1 字段层 vs UI 层
| 层 | 数量 | 含义 |
|---|---|---|
NodeAttr 常量 |
138 | 节点表可持久化的属性键全集 |
NodeExt.ts map.Add* |
69 | 节点属性主面板直接编辑的项 |
AttrNode 下 GPE/GPN |
33 | 复杂规则的独立配置向导 |
3.2 节点属性主面板分组(NodeExt.ts)
| 分组 | 典型配置项 |
|---|---|
| 基本属性 | 名称、WhoExeIt(谁执行它,5 档)、已读回执、撤销规则、已阅即完成、游离态、焦点字段、分配人员、投递记忆、排除发送人 |
| 运行模式 | RunModel(线形/合流/分流/分合流/同表单/异表单,6 种)、通过率、子线程增删移交、异表单 WorkID 规则 |
| 跳转 | 自动跳转 4 类角色 + 表达式 + 找不到人是否跳转 |
| 按钮权限 | 内嵌整份 BtnLab(见第四节) |
3.3 节点侧关键规则枚举(配置深度)
| 规则 | 档位数 | 枚举 |
|---|---|---|
| 谁执行它 | 5 | 操作员 / 机器 / 混合 / 流水线 / 过程 |
| 运行模式 | 6 | Ordinary / HL / FL / FHL / 同表单子线程 / 异表单子线程 |
| 多人处理 | 5 | 抢办 / 协作 / 队列 / 共享 / 协作组长 |
| 阻塞模式 | 8 | 不阻塞 / 当前未完子线程 / 指定子流程 / SQL / 表达式 / 子流程节点 / 平级子流程 / URL |
| 批处理 | 3 | 不可 / 批量审批 / 分组批量 |
| 撤销规则 | 4 | 不能 / 仅上一步 / 上一步+开始 / 指定节点 |
| 跳转规则 | 5 | 不能 / 向后 / 向前 / 任意 / 指定节点 |
| 退回规则 | 6 | 见第五节 |
| 子线程删除 | 3 | 不能 / 手工 / 自动 |
| 抄送规则 | 6 | 不抄送 / 手工 / 自动 / 手+自 / 系统字段 / 发送时 |
| 分流规则 | 3 | 按人 / 按部门 / 按角色 |
3.4 节点管理面板清单(33)
覆盖但不限于:接收人、多人处理、抄送写入、表单方案、批处理、审核组件、流转自定义、阻塞、转向、考核、超时、子流程新建、消息推送、Frm 权限等(GPE_AccepterRole、GPE_TodolistModel、GPE_FrmSln、GPE_BlockModel、GPE_OvertimeRole...)。
3.5 审核组件
NodeWorkCheck.ts 另有 25 个 map.Add* 配置项(签名、立场、附件、显示模式等),是节点属性之外的独立实体。
四、工具栏按钮:40 个按钮族 · 121 项配置 · 135 个属性字段
节点办理页工具栏不是「几个固定按钮」,而是按节点可开关、可改标签、可配规则的能力集合。
4.1 三个数字的关系
| 数字 | 含义 |
|---|---|
| 40 | 活跃的工具栏按钮族(每个族通常有「标签 + 启用/规则」) |
| 121 | BtnLab 实体上设计器可见的配置字段(含标签、开关、规则、打印子项等) |
| 135 | BtnAttr 常量总数(含查看器/抄送工具栏镜像字段等) |
4.2 40 个按钮族一览
| 类别 | 按钮族 |
|---|---|
| 流转核心 | 发送、延期发送、保存、退回、跳转、结束流程、催办、移交、作废、删除、冻结 |
| 协作 | 抄送、会签、加主持人、调整未来处理人、预置处理人、子线程 |
| 信息与辅助 | 轨迹、挂起、关注、确认、小纸条、评论、帮助、流转自定义、二维码、优先级 |
| 数据 | 数据版本、数据批阅、回滚、切换部门、提交身份 |
| 打印 | 打印 Html、打印 PDF、打包 Zip、自定义打印 |
| 公文 | 打开公文、公文版本、下载 VSTO、KK 预览、下载公文正文 |
BtnLab 分组:按钮权限 / 退回 / 打印 / 公文 / 会加签。
五、退回规则:6 种主规则 + 配套配置
5.1 主规则(ReturnRole)
| 值 | 含义 |
|---|---|
CanNotReturn |
不能退回 |
ReturnPreviousNode |
只能退回上一个节点 |
ReturnAnyNodes |
可退回以前任意节点(默认) |
ReturnSpecifiedNodes |
可退回指定的节点 |
ReturnStartNode |
退回到开始节点 |
ByReturnLine |
由流程图设计的退回路线决定 |
5.2 配套配置项(挂在同一「退回」分组)
不止 6 个枚举值。退回相关还有:
- 可退回节点列表
ReturnNodes - 被退回后提示
ReturnAlert - 原路返回
IsBackTracking(不允许 / 由退回人决定 / 强制) - 原路返回后是否重算接收人
- 退回时是否上传附件
- 退回原因列表、退回信息填写字段
- 主流程退回时子流程删除规则(不删除 / 全部 / 指定)
- 退回到协作节点时痕迹处理(
TeamReturnRole)
结论 :主规则 6 档;若把配套项算进「退回配置能力」,退回分组在 BtnLab 内单独占一组十余项。
六、删除规则:5 种
DelWorkFlowRole:
| 值 | 含义 |
|---|---|
None |
不能删除 |
DeleteByFlag |
按标记删除(需交互、填原因) |
DeleteAndWriteToLog |
删除到日志库(需交互) |
DeleteReal |
彻底删除(无交互) |
ByUser |
由用户决定删除方式 |
工具栏侧 DelEnable 绑定该规则;另有「退回时是否隐藏删除按钮」等配套开关。子线程另有独立的 3 档 ThreadKillRole(不能 / 手工 / 自动)。
七、流程属性:93 字段 · 63 项 UI · 23 个配置面板
7.1 字段层 vs UI 层
| 层 | 数量 |
|---|---|
FlowAttr 常量 |
93 |
FlowExt.ts map.Add* |
63 |
AttrFlow 下 GPE/GPN |
23 |
7.2 流程属性主面板分组(FlowExt.ts)
| 分组 | 典型配置项 |
|---|---|
| 基本属性 | 编号、类别、名称、路由标识、流程标记、事件实体、标题规则、独立启动、草稿规则、测试人、抄送/分享、设计模式、水印 |
| 数据&表单 | 表单信息、装载上一笔、手机发起、MD5、加密、数据版本、物理表、单据编号格式 |
| 轨迹 | 轨迹图 / 时间轴 / 时间表、排序方式、共享方案 |
7.3 流程管理面板(23)覆盖能力
自动发起、发起限制、前置导航、流程共享、数据导入、流程事件、流程消息、批量发起、实例查看权限、回滚权限、数据篡改规则、业务字段、流程实体绑定、版本导入导出/复制/版本管理、未来处理人计算、数据同步等。
八、条件与方向:18 种数据源 · 5 种条件类型
方向条件、节点完成条件、流程完成条件共用 Cond 实体。
| 枚举 | 数量 | 内容 |
|---|---|---|
ConnDataFrom |
18 | 节点表单、独立表单、角色、部门、SQL、SQL 模板、参数、URL、WebApi、审核立场、部门负责人、人员、存储过程、业务单元、从表字段、审核通过率、通用数据源、操作符 |
CondType |
5 | 节点完成 / 流程完成 / 方向 / 启动子流程 / 抄送条件 |
SpecOperWay |
4 | 当前人 / 指定节点人 / 表单人员字段 / 指定人员编号 |
CondAttr 字段 |
25 | 条件实体属性常量 |
九、事件与轨迹
| 项目 | 数量 | 说明 |
|---|---|---|
| 节点事件标记 | 26 | 发送前/成功/失败、到达、退回前后、撤销前后、移交、催办、抄送、加签、打开、预警逾期等 |
| 流程事件标记 | 7 | 建单、结束前后、删除前后等 |
| 事件执行类型 | 10 | 禁用、SP、SQL、URL、WS、SpecClass、EventBase、BuessUnit、WebApi、SFProc |
| 轨迹动作类型 | 42 | 发起、前进、退回、移交、分流合流、子流程、加签、跳转、抄送、公文...... |
事件与参数机制的设计说明见:《参数与事件:流程引擎的两个可编程接口》。
十、表单方案:9 种活跃类型
GPE_FrmSln 当前启用的方案(部分历史类型已注释下线):
| 方案 | 说明 |
|---|---|
| 节点表单(经典表单) | 默认 |
| 累加表单 | FoolTruck |
| 嵌入式表单 | SelfForm |
| SDK 表单 | SDKForm |
| 单表单(绑定独立表单) | RefOneFrmTree |
| 多表单 | SheetTree |
| 绑定高代码 TS | EntityTS |
| Excel 表单 | ExcelForm |
| Word 表单 | WordForm |
十一、对外 API:307 个静态入口
Dev2Interface.cs 中 public static 成员约 307 个(含方法与少量字段/属性),覆盖发起、发送、退回、移交、撤销、抄送、查询待办已办、删除、结束、子线程、会签等运行时能力。这是「引擎可被嵌入」的量化指标------二开主要调这套 API,而不是改内核。
十二、与「769 功能点」文档的关系
| 文档 | 口径 | 适合回答 |
|---|---|---|
| 本文 | 枚举 / 属性 / 面板 / API 配置体量 | 「有多少种找人规则?节点能配多少项?」 |
| 《CCFlow 主要流程功能统计汇总报告》 | 线性/同表单/异表单/父子流程需求表 功能点(合计 769) | 「四大流程模式各覆盖多少能力点?」 |
两套数字不互相替代:配置项是「旋钮数量」,功能点是「场景能力条目」。选型或对外说明时,建议两套一起给。
十三、统计方法与边界
- 枚举计数 :去掉注释行后的枚举成员;
DeliveryWay以唯一数值为准(前端 62,后端活跃约 59)。 - 属性计数 :
public const string个数;含主键、隐藏字段,故大于「设计器一眼可见项」。 - UI 计数 :设计器实体中未被注释的
map.Add*;BtnLab内嵌进NodeExt,节点主面板可见项与工具栏配置有重叠,报告时已分开表述。 - 按钮族 :以
*Lab标签字段为「一个按钮族」;同一族可能有多个开关(如打印 Html 的启用 + 查看器显示 + 抄送工具栏显示)。 - 未计入:表单设计器控件种类、报表/大屏图表种类、组织结构实体、低代码菜单类型------那些属于平台层,另文统计。
- 版本敏感:枚举与面板随版本增减;本文数字以 2026-10-24 仓库静态扫描为准,升级后建议重跑清点脚本。
十四、一句话结论
驰骋流程引擎在配置层的体量可以概括为:
62 种找人规则 · 138 个节点属性字段 · 93 个流程属性字段 · 40 个工具栏按钮族 · 6 档退回 · 5 档删除 · 26+7 个生命周期事件 · 307 个对外静态 API。
这些数字说明的不是「功能清单有多长」,而是:同一套发送引擎上,可调旋钮足够密,才能覆盖从行政审批到工业自动化、从线性到分合流/父子流程的落地差异,而不必为每个行业重写内核。
附录 A:源码索引
| 主题 | 路径 |
|---|---|
| 找人规则(后端) | CCFlow/Components/BP.WF/EnumLib.cs → DeliveryWay |
| 找人规则(前端) | Vue3/src/WF/Admin/AttrNode/AccepterRole/DeliveryWay.ts |
| 找人配置面板 | Vue3/src/WF/Admin/AttrNode/AccepterRole/GPE_AccepterRole.ts |
| 节点/流程/按钮属性常量 | Template/NodeAttr.cs、FlowAttr.cs、BtnAttr.cs |
| 节点/流程属性 UI | Vue3/.../AttrNode/NodeExt.ts、AttrFlow/FlowExt.ts |
| 工具栏 | Vue3/.../AttrNode/BtnLab.ts |
| 条件枚举 | Template/CondEnum.cs |
| 节点/流程事件 | BP.En30/Sys/EvenListNode.cs、EvenListFlow.cs |
| 对外 API | CCFlow/Components/BP.WF/Dev2Interface.cs |
| 功能点统计(姊妹篇) | doc/BP架构/CCFlow主要流程功能统计汇总报告.md |
附录 B:清点时可复用的命令(PowerShell)
powershell
# DeliveryWay 唯一值
Select-String DeliveryWay.ts -Pattern 'static readonly\s+\w+\s*=\s*(\d+)' |
ForEach-Object { if ($_.Line -match '=(\d+)'){[int]$Matches[1]} } | Sort-Object -Unique | Measure-Object
# 属性常量
(Select-String NodeAttr.cs -Pattern 'public const string').Count
(Select-String FlowAttr.cs -Pattern 'public const string').Count
(Select-String BtnAttr.cs -Pattern 'public const string').Count
# 设计器字段
(Get-Content NodeExt.ts | ? { $_ -match '^\s*map\.Add' -and $_ -notmatch '^\s*//' }).Count
(Get-Content FlowExt.ts | ? { $_ -match '^\s*map\.Add' -and $_ -notmatch '^\s*//' }).Count
(Get-Content BtnLab.ts | ? { $_ -match '^\s*map\.Add' -and $_ -notmatch '^\s*//' }).Count
# API
(Select-String Dev2Interface.cs -Pattern '^\s*public static').Count
延伸阅读
- 《CCFlow 主要流程功能统计汇总报告》 (
doc\BP架构\CCFlow主要流程功能统计汇总报告.md):四大流程模式 769 功能点。 - 《参数与事件:流程引擎的两个可编程接口》 (
doc\低代码部分\参数与事件-流程引擎的两个可编程接口.md):事件与参数机制。 - 《业务流程的分类:管理类流程与工业自动化流程》 (
doc\低代码部分\业务流程的分类-管理类流程与工业自动化流程.md):WhoExeIt与流程分类。 - 《一个属性,五种执行者》 (
doc\BP架构\驰骋BPM-节点执行方式的设计规范.md):节点执行方式运行时细节。
本文基于当前仓库源码静态清点;若与线上帮助文档不一致,以你所部署版本的枚举与设计器实测为准。