CCFlow 父子流程需求列表
依据代码整理:
CCFlow/Components/BP.WF、Vue3/src/WF/Admin/AttrNode/SubFlow、Vue3/src/WF/WorkOpt/SubFlow.vue
一、总体架构
CCFlow 父子流程采用「节点级父子流程组件(FrmSubFlow)+ 子流程绑定配置(WF_NodeSubFlow)」双层结构:
| 层级 | 数据实体 | 作用 |
|---|---|---|
| 组件层 | FrmSubFlow(挂接在WF_Node) | 控制表单上子流程区域的显示、权限、汇总规则 |
| 绑定层 | SubFlowHand/Auto/YanXu/Guide | 定义具体子流程编号、启动方式、联动与数据规则 |
子流程类型(SubFlowType)共 4 种:0 手动启动、1 自动触发、2 延续、3 前置导航。
二、功能需求明细表
(一)设计配置 — 父子流程组件
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 组件基础 | 父子流程组件启用 | SFSta:禁用 / 启用 / 只读;启用后自动在表单创建「父子流程」分组字段(GroupCtrlType.SubFlow) | 在审批节点表单嵌入子流程管理区域 |
| 组件基础 | 显示标签 | SFLab,默认「子流程」,控制表单分组标题 | 按业务命名,如「关联采购单」「子项目审批」 |
| 组件基础 | 组件高度 | SF_H,默认 300px | 控制子流程列表区域在表单中的可视高度 |
| 组件显示 | 显示方式 | SFShowModel:表格方式 / 自由模式(代码标注暂未充分使用) | 预留不同 UI 展现风格 |
| 组件显示 | 显示控制方式 | SFShowCtrl:可看所有子流程 / 仅看自己发起的 | 多人共办同一父流程时,限制子流程实例可见范围 |
| 组件显示 | 连接标题 | SFCaption,默认「启动子流程」 | 手工启动入口的默认链接文字 |
| 组件显示 | 可启动子流程编号 | SFDefInfo,多个流程编号逗号分隔 | 限制组件上允许启动的子流程范围 |
| 组件显示 | 审批格式字段 | SFFields | 配置子流程在审核组件中的展示字段 |
| 组件显示 | 打开子流程显示 | SFOpenType:工作查看器 / 流程轨迹 | 点击子流程实例时打开表单或轨迹图 |
| 组件联动 | 所有子流程结束规则 | AllSubFlowOverRole:不处理 / 父流程自动下一步 / 父流程结束 | 节点绑定多个子流程时,全部完成后统一驱动父流程 |
| 组件管理 | 子流程类型入口 | 提供「手动启动 / 自动触发 / 延续子流程」三个 RefMethod 管理入口 | 流程设计器节点属性中分类维护子流程 |
| 组件管理 | 组件禁用清理 | 禁用时删除对应GroupField(CtrlID=SubFlowND{NodeID}) | 关闭组件后表单不再显示子流程区域 |
(二)设计配置 — 新建子流程向导(GPN_NewSubFlow)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 向导创建 | 手工启动子流程 | 选择目标流程(排除当前父流程),创建SubFlowType=0,跳转SubFlowHand编辑 | 审批人按需手工发起子流程 |
| 向导创建 | 自动触发子流程 | 创建SubFlowType=1,节点SubFlowAutoNum自增,跳转SubFlowAuto编辑 | 发送/到达时按规则自动发起 |
| 向导创建 | 延续子流程 | 创建SubFlowType=2,跳转SubFlowYanXu编辑 | 父节点发送后冻结,转入延续流程 |
| 向导创建 | 前置导航子流程 | 创建SubFlowType=3,跳转SubFlowGuide编辑;对开始节点有效 | 先选子流程实例再发起父流程(如报销选采购单) |
| 向导创建 | 重复绑定校验 | 主键{NodeID}_{SubFlowNo}_{SubFlowType},已存在则提示 | 防止同一节点重复绑定同一子流程 |
| 向导创建 | 流程分组选择 | 按FlowSort分组展示可选流程列表 | 大量流程时分组快速定位 |
(三)设计配置 — 手动启动子流程(SubFlowHand)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 基本属性 | 子流程编号/名称 | 绑定目标子流程SubFlowNo、SubFlowName | 指定要发起的子流程模板 |
| 基本属性 | 子流程状态 | SubFlowSta:禁用 / 启用 / 只读 | 临时关闭某个子流程入口或只读展示 |
| 基本属性 | 启动文字标签 | SubFlowLab,覆盖默认「启动子流程」 | 如「发起投标流程」「创建合同审批」 |
| 基本属性 | 子流程模式 | SubFlowModel:下级子流程 / 同级子流程 | 下级挂当前 WorkID;同级挂父流程 PWorkID 并记录 SL 参数 |
| 基本属性 | 轨迹显示位置 | SubFlowShowNodeID,绑定设计器子流程图标节点 | 子流程实例显示在父流程轨迹图指定位置 |
| 基本属性 | 显示顺序 | Idx,支持上移/下移(DoUp/DoDown) | 多个子流程时控制列表排序 |
| 节点运动 | 父流程自动运行到下一步 | ParentFlowSendNextStepRole:不处理 / 子流程结束 / 子流程到指定节点 | 子流程完成后自动推进父流程 |
| 节点运动 | 父流程结束规则 | ParentFlowOverRole:同上三档 | 子流程完成后自动结束父流程 |
| 节点运动 | 指定子流程节点 ID | SubFlowNodeID,配合「到指定节点」规则 | 子流程到某审批节点即触发父流程联动 |
| 节点运动 | 同级子流程结束规则 | IsAutoSendSLSubFlowOver:不处理 / 同级自动下一步 / 结束同级 | 平级子流程全部完成后驱动发起它的同级流程 |
| 限制规则 | 仅能被调用 1 次 | StartOnceOnly | 同一父实例下该子流程只能发起一次 |
| 限制规则 | 结束后才可重新发起 | CompleteReStart | 上次实例归档后才允许再次发起 |
| 限制规则 | 指定流程启动后才能启动 | IsEnableSpecFlowStart+SpecFlowStart(逗号分隔多流程) | 子流程 B 必须在子流程 A 启动后才能发起 |
| 限制规则 | 指定流程结束后才能启动 | IsEnableSpecFlowOver+SpecFlowOver | 子流程 B 必须在子流程 A 完成后才能发起 |
| 数据传递 | 父→子字段拷贝 | SubFlowCopyFields,格式@父字段=子字段@... | 发起时把父流程数据带入子流程表单 |
| 数据传递 | 子→父字段反填规则 | BackCopyRole:不反填 / 自动匹配 / 按设置格式 / 混合 | 子流程结束后回填父流程 |
| 数据传递 | 子→父字段映射 | ParentFlowCopyFields,格式@子字段=父字段@... | 精确映射;签批字段建议用「按设置格式」 |
| 启动模式 | 单条手工启动 | SubFlowStartModel=0 | 一次发起一条子流程(SubFlow.vue 表格模式) |
| 启动模式 | 简单数据源批量启动 | SubFlowStartModel=1 | 按数据源多行批量发起 |
| 启动模式 | 分组数据源批量启动 | SubFlowStartModel=2 | 分组展示后批量发起 |
| 启动模式 | 树形结构批量启动 | SubFlowStartModel=3 | 树形选择后批量发起 |
| 展现模式 | 表格模式 | SubFlowShowModel=0 | 父子行可展开表格(当前 Vue 实现) |
| 展现模式 | 列表模式 | SubFlowShowModel=1 | 非单条启动时切换为 List 展现 |
| 配置入口 | 发起模式配置页 | DoStartModel→ SubFlowStartModel 配置 | 设计期配置批量/树形等启动方式 |
| 配置入口 | 显示模式配置页 | DoShowModel→ SubFlowShowModel 配置 | 设计期配置展现风格 |
(四)设计配置 — 自动触发子流程(SubFlowAuto)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 触发时机 | 调用时间 | InvokeTime:发送时(0) / 工作到达时(1)(前端另有流程结束时选项) | 父节点发送后或工作到达时自动触发 |
| 触发时机 | 自动发送方式 | SendModel:给当前人开始节点待办 / 发送到下一节点 | 子流程创建后停在开始节点或自动流转 |
| 触发时机 | 发送方式校验 | 选「发送到下一节点」时,下一节点接收人规则不能为「由上一步选择」 | 保证自动触发无需人工选人等 |
| 启动限制 | 仅调用 1 次 | 同手动子流程 | 防止重复自动发起 |
| 启动限制 | 结束后才可重新发起 | 同手动子流程 | 控制重复触发 |
| 启动限制 | 指定流程启动后/结束后 | 同手动子流程,支持多流程逗号分隔 | 串行依赖的自动子流程链 |
| 启动限制 | 按指定 SQL 配置 | IsEnableSQL+SpecSQL,SQL 返回值>0 才触发 | 按表单/SQL 动态判断是否触发 |
| 启动限制 | 按平级子流程节点完成 | IsEnableSameLevelNode+SameLevelNode(格式流程,节点;...) | 仅平级模式;指定平级节点完成后触发 |
| 启动数据源 | 当前表单主表数据 | DBSrcType=0,发起单个子流程并用主表赋值 | 一对一自动发起 |
| 启动数据源 | 指定 SQL 数据源 | DBSrcType=1+DBSrcDoc,每行发起一个子流程,列名匹配子流程字段 | 按子表明细批量自动发起(如每行物料一条子流程) |
| 节点运动 | 父流程联动规则 | 同 SubFlowHand(下一步/结束/指定节点/同级规则) | 自动子流程完成后的父流程驱动 |
| 数据传递 | 父→子 / 子→父 | SubFlowCopyFields、BackCopyRole、ParentFlowCopyFields | 自动发起与结束时数据同步 |
| 待办控制 | 发送后隐藏父流程待办 | SubFlowHidTodolist,设置父流程待办IsPass=100 | 批量/自动发起子流程后,父流程待办暂时隐藏 |
| 待办控制 | 子流程结束后恢复父待办 | 所有同类型子流程结束后,恢复IsPass=0 | 子流程全部完成后再显示父流程待办 |
| 轨迹显示 | 轨迹显示位置 | SubFlowShowNodeID | 同手动子流程 |
(五)设计配置 — 延续子流程(SubFlowYanXu)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 延续特性 | 延续子流程绑定 | 节点仅可配置延续子流程;发送时转入子流程,当前节点活动冻结 | 主流程暂停,由延续流程承接后续处理 |
| 延续特性 | 子流程模式 | 下级 / 同级,建立 PWorkID 或 SLWorkID 关系 | 延续流程作为下级或平级分支 |
| 延续特性 | 延续到的节点 | YanXuToNode,多节点逗号分隔,空则到子流程开始节点 | 延续可直接送到子流程中间节点 |
| 延续特性 | 条件表达式 | ExpType:按 SQL / 按参数;CondExp控制是否走延续 | 按条件决定是否进入延续流程 |
| 延续特性 | 接收人规则 | 延续子流程开始节点须能明确计算接收人(角色/部门/绑定人员等) | 发送延续流程时自动确定处理人 |
| 退回控制 | 越轨子流程退回方式 | YBFlowReturnRole:不能退回 / 退父开始 / 退父任意 / 退父启动 / 退指定节点 | 延续子流程开始节点可退回到父流程 |
| 退回控制 | 要退回的节点 | ReturnToNode,下拉选择父流程节点 | 配合「退指定节点」使用 |
| 运行时 | 父待办隐藏提示 | 延续启动后提示「待办不可见,需等子流程完成」 | 用户知晓父流程被挂起 |
| 运行时 | 撤销发送处理 | WorkUnSend中识别越轨状态并删除延续子流程 | 父流程撤销时清理延续子流程 |
(六)设计配置 — 前置导航子流程(SubFlowGuide / SubFlowHandGuide)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 前置导航 | 流程级前置导航 | 配合StartGuideWay.SubFlowGuide/SubFlowGuideEntity | 开始节点先选已有子流程实例再创建父流程 |
| 前置导航 | 批量发起前置导航 | IsSubFlowGuide+SubFlowGuideSQL(须含 No、Name 列) | 从 SQL 列表勾选多条记录批量发起子流程 |
| 前置导航 | 分组 SQL | SubFlowGuideGroup | 导航列表按分组展示 |
| 前置导航 | 实体字段映射 | SubFlowGuideEnNoFiled、SubFlowGuideEnNameFiled | 自定义 SQL 结果列名 |
| 前置导航 | 树形结构 | IsTreeConstruct+ParentNo | 树形前置导航选择 |
| 批量发起 | 多选批量发起 | SubFlowGuid_Send,线程池并发SendSingleSubFlow | 一次选中多条记录并行发起子流程 |
| 应用场景 | 先子后父 | 费用报销选采购申请单:子流程先存在,完成后出现父流程 | 经典「先出现子流程,后出现父流程」业务 |
(七)运行时 — 子流程组件 UI(SubFlow.vue)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 列表展示 | 表格模式 | 父行显示子流程名称;子行展示已发起实例(发起人、标题、节点、状态、处理人、时间) | 审批表单内查看/管理子流程 |
| 列表展示 | 行展开 | expandRowByClick,点击展开查看实例列表 | 折叠展示多个子流程绑定 |
| 列表展示 | 流程状态文本 | 草稿/新工作/归档/挂起/退回/转发/删除/加签等 | 快速识别子流程运行状态 |
| 列表展示 | 过滤草稿与 FID | 跳过WFState=0及FID!=0的记录 | 只展示有效主实例 |
| 权限控制 | 组件启用 + 子流程启用 | SFSta=1且SubFlowSta=1且非只读才可启动 | 双重开关控制 |
| 权限控制 | 跨节点只读 | 当前FK_Node与组件绑定节点不一致时,子流程置为只读 | 累加表单场景防止非绑定节点误操作 |
| 权限控制 | 只读模式 | isReadonly=true或组件/子流程只读时禁止启动 | 查看模式、已办查看 |
| 数据权限 | 显示控制 | SFShowCtrl=0查全部;=1仅查Starter=当前用户 | 多人协作时的实例隔离 |
| 启动操作 | 下级子流程启动 | 传PWorkID=当前WorkID、PNodeID、PFlowNo、PFID | 标准父子关系 |
| 启动操作 | 同级子流程启动 | 传PWorkID=父PWorkID,并带SLWorkID/SLNodeID/SLFlowNo | 与父流程平级的旁支子流程 |
| 启动操作 | 平级过滤 | 按SLWorkID过滤,只显示当前流程发起的平级子流程 | 避免看到其他节点发起的同级子流程 |
| 启动操作 | 启动链接文字 | 使用SubFlowLab或默认[启动子流程] | 可配置的业务入口文案 |
| 查看操作 | 打开子流程 | iframe 打开MyView,带PageFrom=SubFlow | 在父流程内查看/处理子流程 |
| 交互 | 子流程完成后刷新 | 监听ReloadPage消息,关闭 iframe 并重新加载列表 | 发起子流程后自动刷新父表单组件 |
| 展现切换 | List 模式切换 | SubFlowStartModel!=0时切换为 List(批量/导航模式) | 非单条手工启动走另一套 UI |
(八)运行时 — 子流程发起与父子关系
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 关系建立 | 父子流程关联 | SetParentInfo写入PWorkID/PNodeID/PFlowNo/PEmp | 建立实例级父子血缘 |
| 关系建立 | 同级子流程参数 | AtPara存储SLWorkID/SLNodeID/SLFlowNo/SLEmp | 标识由哪个同级流程发起 |
| 发起校验 | 能否发起校验 | Flow_IsCanStartThisFlow校验开始节点人员权限 | 防止无权限人员发起子流程 |
| 发起校验 | 启动限制综合判断 | 综合StartOnceOnly/CompleteReStart/SpecFlowStart/SpecFlowOver/SQL等 | 手工与自动发起前统一门禁 |
| 数据初始化 | 父数据复制到子 | 创建时从父节点 Work 复制,再按SubFlowCopyFields映射 | 子流程表单自动带数 |
| 数据初始化 | 标题同步 | 子流程 Title 可与父流程保持一致(代码注释中的设计意图) | 列表中父子标题一致便于识别 |
| 工具栏 | 发起子流程按钮 | 节点工具栏SubFlowStartModel!=0时显示SendSubFlow | 批量/导航模式从工具栏入口发起 |
| 工具栏 | 删除子流程 | DelSubFlow→Flow_DeleteSubThread | 手工删除误发起的子流程实例 |
| 删除联动 | 删除父流程时删子流程 | CB_IsDeleteSubFlow选项 | 删父流程时级联删除子流程 |
(九)运行时 — 父流程联动与待办
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 单个子流程联动 | 子流程结束→父流程下一步 | ParentFlowSendNextStepRole=FlowOver | 一个子流程完成即推进父流程 |
| 单个子流程联动 | 子流程结束→父流程结束 | ParentFlowOverRole=FlowOver | 子流程完成即结束父流程 |
| 单个子流程联动 | 子流程到指定节点→父流程下一步 | ParentFlowSendNextStepRole=SpecifiedNodes+SubFlowNodeID | 子流程到某节点即触发父流程 |
| 全部子流程联动 | 全部结束→父流程下一步 | 组件AllSubFlowOverRole=SendParentFlowToNextStep | 多子流程会签式全部完成后推进 |
| 全部子流程联动 | 全部结束→父流程结束 | 组件AllSubFlowOverRole=OverParentFlow | 全部子流程完成后结束父流程 |
| 全部子流程联动 | 运行中子流程计数 | Flow_NumOfSubFlowRuning判断是否全部完成 | 防止部分完成就触发父流程 |
| 同级子流程联动 | 同级自动下一步 | IsAutoSendSLSubFlowOver=1 | 平级子流程完成后推动发起它的流程 |
| 同级子流程联动 | 结束同级子流程 | IsAutoSendSLSubFlowOver=2 | 平级子流程完成后结束发起流程 |
| 流程属性级 | 子流程到该节点父流程自动下一步 | 流程属性IsToParentNextNode(子流程节点级) | 子流程到达特定节点时驱动父流程 |
| 自动发送 | 模拟父流程处理人登录发送 | SubFlowOver_ParentFlowAutoSendNextSetp切换用户上下文发送 | 无人值守自动推进父流程 |
| 待办恢复 | 隐藏待办后恢复 | 同类型子流程全部结束且SubFlowHidTodolist=true时恢复IsPass=0 | 子流程全完成后再出现父待办 |
(十)运行时 — 数据反填(子→父)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 反填规则 | 不反填 | BackCopyRole=None | 子流程与父流程数据独立 |
| 反填规则 | 字段自动匹配 | 同名字段自动 Copy | 内置表单、字段名一致时零配置 |
| 反填规则 | 按设置格式 | ParentFlowCopyFields精确映射 | 字段名不同或签批字段反填 |
| 反填规则 | 混合模式 | 自动匹配 + 按设置格式同时生效 | 通用字段自动、特殊字段手工映射 |
| 反填范围 | Work + Rpt 双表更新 | 同时更新节点 Work 与流程 Rpt | 表单与报表数据一致 |
| 反填扩展 | 签批信息拷贝 | 签批字段对应 Track 记录(ActionType=22)复制到父流程 | 子流程审批意见汇总到父流程轨迹 |
(十一)运行时 — 阻塞与发送校验
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 节点阻塞 | 指定子流程未完成不能发送 | BlockModel=SpecSubFlow,BlockExp配置节点,流程;... | 父节点必须等指定子流程完成 |
| 节点阻塞 | 指定子流程未到指定节点不能发送 | BlockModel=SpecSubFlowNode,配置节点,流程,子流程节点 | 子流程到某节点前父流程不能往下走 |
| 节点阻塞 | 平级子流程未完成不能发送 | BlockModel=SameLevelSubFlow | 平级分支全部完成才能继续 |
| 节点阻塞 | 阻塞错误提示 | 列出未完成子流程 ID、名称、标题、当前处理人 | 明确告知卡在哪条子流程 |
| 发送校验 | 子流程未完成阻止发送 | 发送前检查已发起子流程WFState | 有运行中子流程时不允许父流程发送 |
| 设计校验 | 越轨/子流程发起检查 | FlowCheckError中检查延续子流程配置 | 发布前发现配置错误 |
(十二)运行时 — 轨迹、审核与查看
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 轨迹图 | 子流程轨迹显示位置 | 设计器创建子流程 Icon 并绑定SubFlowShowNodeID | 父流程轨迹图上可视化子流程 |
| 轨迹图 | 子流程节点坐标 | X/Y属性存储图标位置 | 设计器拖拽定位 |
| 审核组件 | 子流程审核信息汇总 | WF_WorkOpt中输出子流程 Track,节点名前缀「(子流程)」 | 父流程审核区展示子流程审批记录 |
| 审核组件 | 多子流程发起人去重 | 批量发起时发起人只显示一次 | 避免审核列表重复 |
| 查看父流程 | 查看父流程按钮 | ShowParentFormEnable(处理/查看/抄送页可分别配置) | 子流程处理人跳转查看父流程 |
| 轨迹配置 | 轨迹图是否显示 | SFTrackEnable | 组件区是否展示子流程轨迹 |
| 轨迹配置 | 历史审核是否显示 | SFListEnable | 组件区是否展示历史审核 |
| 轨迹配置 | 显示所有步骤 | SFIsShowAllStep | 轨迹表是否展示全部子流程步骤 |
(十三)流程/节点级扩展配置
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 节点计数 | 自动子流程数量 | 节点SubFlowAutoNum,新建自动子流程时自增 | 标识节点是否配置了自动触发 |
| 节点计数 | 延续子流程数量 | 节点SubFlowYanXuNum | 标识节点是否配置延续子流程 |
| 节点属性 | 发起会签子流程 | ItIsSendDraftSubFlow工具栏入口 | 草稿/会签场景发起子流程 |
| 流程属性 | 前置导航-父子流程模式 | StartGuideWay.ByParentFlowModel | 流程级前置导航与父子流程集成 |
| 流程属性 | 前置导航-子流程实例列表 | StartGuideWay.SubFlowGuide | 从开始节点选子流程实例 |
| 移动端 | 移动端子流程组件 | CCMobile/WorkOpt/SubFlow.vue | 移动端同等父子流程能力 |
| 存储 | 统一存储表 | 所有类型子流程存WF_NodeSubFlow,主键含类型后缀 | 一种表结构支撑四种类型 |
三、子流程类型与模式对照
四、典型业务场景映射
| 业务场景 | 推荐配置组合 |
|---|---|
| 工程主流程 + 投标子流程,投标结果回填主流程 | 手动启动 +BackCopyRole反填 + 父流程自动下一步 |
| 采购主单按明细行自动生成审批子流程 | 自动触发 + SQL 数据源 + 批量发起 |
| 主流程暂停,转交专门审批线处理后再回来 | 延续子流程 + 父待办隐藏 + 子流程结束联动 |
| 报销前先选多张采购申请单 | 前置导航子流程 + 开始节点SubFlowGuide |
| 并行多个子审批,全部完成后主流程才往下走 | 组件AllSubFlowOverRole+ 节点SpecSubFlow阻塞 |
| 同一父流程下多人各发起自己的子流程 | SFShowCtrl=仅看自己发起的 |
五、相关代码路径
| 模块 | 路径 |
|---|---|
| 后端子流程模板 | CCFlow/Components/BP.WF/Template/SFlow/ |
| 后端运行逻辑 | CCFlow/Components/BP.WF/WF/WorkNode.cs、WorkNodePlus.cs |
| 前端配置实体 | Vue3/src/WF/Admin/AttrNode/SubFlow/ |
| 前端运行组件 | Vue3/src/WF/WorkOpt/SubFlow.vue |
| 父子流程组件配置 | Vue3/src/WF/TSClass/FrmSubFlowNode.ts |
文档生成依据 CCFlow 代码库当前实现整理。