CCFlow 同表单分流需求列表
依据代码整理:
CCFlow/Components/BP.WF、Vue3/src/WF/WorkOpt、Vue3/src/WF/Admin/AttrNode、Vue3/src/WF/MyFLDealThread.vue、Vue3/src/WF/ToolBar.vue说明:本文档聚焦 同表单子线程(RunModel=4 / SubThreadSameWorkID) 及其与 分流(FL)/分合流(FHL)/合流(HL) 节点的协同能力;异表单分流(RunModel=5)仅在对比或共用机制处提及。
一、总体架构
同表单分流采用「干流程(FID=0)+ 子线程(FID=干流程WorkID) 」双层实例结构,子线程与干流程 共用同一张物理表单表(Flow.PTable) ,通过 FID 字段关联。
| 层级 | 节点类型(RunModel) | 数据特征 | 典型作用 |
|---|---|---|---|
| 干流程 | 0 线形 / 2 分流 / 3 分合流 / 1 合流 | WorkID 为主键,FID=0 |
发起、分流、合流汇总 |
| 子线程 | 4 同表单 | 独立 WorkID,FID=干流程WorkID |
并行处理同一表单的不同人员任务 |
典型拓扑:普通节点 → 分流/分合流节点 → 同表单子线程节点(可多个处理人)→ 合流节点 → 后续节点。
核心后端入口:WorkNode.NodeSend_24_SameSheet(分流到同表单)、WorkNode.NodeSend_53_SameSheet_To_HeLiu(子线程到合流)。
二、功能需求明细表
(一)设计配置 --- 节点运行模式
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 节点类型 | 同表单子线程节点 | RunModel=4(SubThreadSameWorkID),节点工作类型为 SubThreadWork;与异表单(5)区分 |
多人并行处理同一份主表数据,如多部门会签、多专业并行审批 |
| 节点类型 | 分流节点 | RunModel=2(FL),向下可连接同表单子线程 |
将干流程拆分为多条并行子线程 |
| 节点类型 | 分合流节点 | RunModel=3(FHL),兼具分流与合流能力 |
一个节点完成分流下发与合流汇总,简化流程图 |
| 节点类型 | 合流节点 | RunModel=1(HL),等待子线程按通过率到达后激活干流程待办 |
汇总各子线程结果后继续主流程 |
| 流程约束 | 分流仅连一条同表单路径 | 分流节点若仅有一个后续节点且为同表单,调用 NodeSend_24_SameSheet |
标准同表单分流场景 |
| 流程约束 | 禁止多同表单并行分支 | 分流同时启动多个同表单子线程节点时报错 workflow_error_5 |
避免同一分流点产生多套同表单分支 |
| 流程约束 | 禁止同异表单混发 | 分流同时启动同表单与异表单子线程时报错 workflow_error_4 |
保证分支类型一致 |
| 流程约束 | 普通节点不可直连子线程 | 线形节点直接连接同表单/异表单子线程节点报错 workflow_error_3 |
子线程必须由分流/分合流节点发起 |
| 流程约束 | 合流节点不可下连子线程 | 合流节点下连接子线程节点报错 workflow_error_6 |
子线程只能在合流之前运行 |
| 表单权限 | 同表单主键规则 | 同表单子线程(及按接收人生成 WorkID 的异表单)表单权限 WhoIsPK 必须为 WorkID(OID),不能为 FID |
保证每个子线程独立读写自己的表单实例 |
| 表单校验 | 物理表一致性 | FlowCheckError.CheckMode_SpecTable 强制同表单子线程 PTable 与流程主表一致 |
设计期自动修复/告警,防止表单映射错误 |
| 完成通过率 | PassRate | 合流节点 PassRate(默认 100),按「已到达合流子线程数 / 总子线程数 × 100」判断是否激活干流程待办 |
允许部分子线程完成即可合流(如 3 人中 2 人完成) |
| 子线程删除方式 | ThreadKillRole | 合流节点:0 不能删除(须全部完成)、1 手工删除、2 自动删除未完成子线程 |
合流前仍有子线程未完成时的处理策略(WorkNodePlus.DealHeLiuState) |
| 增加子线程 | ThreadIsCanAdd | 分流/分合流节点:当前节点已发出子线程后,是否允许追加子线程;要求后续仅一条子线程路径 | 流程运行中补发遗漏处理人 |
| 增加子线程(合流) | ThreadIsCanAddOfHL | 合流节点是否允许增加子线程(ThreadDtl.vue 中 FID==0 时判断) |
合流阶段补录子线程 |
| 删除子线程 | ThreadIsCanDel | 分流/分合流节点:子线程退回后,是否允许删除/撤销整体发送 | 部分子线程退回后由分流人清理 |
| 移交子线程 | ThreadIsCanShift | 是否允许移交已发出的子线程(配置项,默认关闭) | 子线程处理人变更 |
| 退回联动 | IsKillEtcThread | 子线程节点退回规则:0 不删除其它子线程、1 删除其它子线程、2 由退回人决定(ReturnWork.vue 复选框) |
一个子线程退回分流点时,其余子线程是否一并取消 |
| 按钮权限 | 子线程按钮 | ThreadEnable 控制工具栏「子线程」按钮;ThreadLab 自定义标签 |
分流人/合流人查看子线程明细入口 |
| 按钮权限 | 预置处理人 | PreplaceWokerEnable:发送前/单独维护子线程接收人(PreplaceWoker.vue 组织树选人) |
分流前预先指定各子线程处理人 |
(二)设计配置 --- 子线程接收人规则(DeliveryWay)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 接收人 | 按明细表确定子线程接收人 | ByDtlAsSubThreadEmps:读取分流节点表单明细表,须含 UserNo 或 DeliveryParas 指定字段;仅子线程节点可用 |
报销明细每行指定一个审批人,自动按行发起子线程 |
| 接收人 | 按 SQL 确定接收人与数据 | BySQLAsSubThreadEmpsAndData:执行节点 SQL,结果集同时提供人员与行数据;按索引复制到各子线程主表 |
外部数据源驱动多人并行,且每人携带不同业务字段 |
| 接收人 | 按绑定部门(子线程) | BySetDeptAsSubthread:绑定部门中一人完成即该部门子线程结束;返回 GroupMark |
按部门维度并行,部门内任一人员处理即可 |
| 接收人 | 按绑定人员 | ByBindEmp 等常规规则 |
固定人员列表发起子线程 |
| 接收人 | 子线程通用数据源 | SubThreadByGenerDBSrc 等扩展方式 |
与流程数据源组件联动 |
| 校验 | 非子线程误配 | 明细表/SQL/部门子线程方式配置在非子线程节点时抛异常 | 设计期防止接收人规则与节点类型不匹配 |
| 校验 | 明细表无数据 | 明细表方式找不到 UserNo 字段或无数据时报错并提示检查分流节点明细表 |
发起前数据完整性校验 |
(三)运行期 --- 分流下发(干流程 → 同表单子线程)
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 分流发送 | 同表单分流核心逻辑 | NodeSend_24_SameSheet:由分流/分合流节点向同表单子线程节点发送 |
一次发送产生 N 条子线程待办 |
| 数据复制 | 主表数据复制 | 复制干流程 rptGe、当前 HisWork 到各子线程 Work;设置 mywk.FID = 干流程WorkID、Rec = 接收人 |
各处理人看到相同基础表单内容 |
| 数据复制 | 明细表数据复制 | 从分流节点明细表(MapDtls)复制到子线程;支持多明细表 |
子线程继承分流节点填写的明细 |
| 数据复制 | SQL/明细行级复制 | BySQLAsSubThreadEmpsAndData / ByDtlAsSubThreadEmps 时按 idx 将 DataRow 复制到对应子线程主表 |
每人处理不同明细行数据 |
| 数据复制 | 附件复制 | SendToSameSheet_CopyData 复制 FrmAttachmentDB,重映射 FrmID、RefPKVal;单附件/多附件主键规则分别处理 |
子线程可查看分流节点上传的附件 |
| 数据复制 | 签名/电子签章复制 | 复制 FrmEleDB(非图片类),重映射节点表单 ID |
继承分流节点表单签章 |
| 实例标识 | 子线程 WorkID 生成 | 默认 DBAccess.GenerOID("WorkID") 或 GUID 模式;每个接收人一条子线程实例 |
独立跟踪每条子线程 |
| 实例标识 | 分合流再次分流复用 | 若曾走过分合流,按「同节点+同FID+同人员」查找历史 WorkID 并复用数据 |
子线程退回后再次下发不丢历史 |
| 分组批次 | GroupMark 分组 | ItIsHaveSubThreadGroupMark=true 时,同 GroupMark 仅生成一个 WorkID,多人共享子线程实例 |
按部门/批次分组,组内一人完成即可 |
| 分组批次 | 重复人员去重 | 启用 GroupMark 时对 EmpNo+GroupMark 去重,删除重复 GenerWorkerList |
避免同组重复待办 |
| 状态维护 | ThreadCount 归零 | 分流时 HisGenerWorkFlow.SetPara("ThreadCount", 0) |
为合流通过率计算准备计数 |
| 状态维护 | 节点名称追加 | 分流时 NodeName 追加子线程节点名 |
干流程列表展示当前所在分支 |
| 轨迹记录 | 分流前进 | 记录 ActionType.ForwardFL(分流前进) |
轨迹图/时间轴标识分流动作 |
| 异常防护 | 同表单重复发送 | 分流点下同表单已发送后再次发送会检测并报错(#region 如果是分流点下同表单发送失败再次发送就出现错误) |
防止重复拆分子线程 |
| 发送失败 | 发送失败回滚 | 分流发送异常时回滚机制,避免干流程与子线程状态不一致 | 保证数据一致性 |
(四)运行期 --- 子线程处理与向下发送
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 待办打开 | 子线程独立待办 | 子线程处理人待办 WorkID 为子线程 ID,FID 指向干流程;MyFlowTree 等同表单节点特殊处理 |
处理人仅看到自己的子任务 |
| 表单访问 | 查看子线程表单 | ThreadDtl.OpenFrm / MyFLDealThread.OpenFrm 打开 MyView,传入 WorkID/FID/FK_Node |
分流人从管理界面查看任意子线程表单 |
| 子线程发送 | 子线程向下运行 | RunModel.SubThreadSameWorkID 节点向下发送,动作类型 ActionType.SubThreadForward |
子线程内各节点正常审批 |
| 子线程发送 | 子线程到合流 | NodeSend_53_SameSheet_To_HeLiu:子线程完成后向合流节点汇聚 |
并行分支汇入主流程 |
| 数据汇总 | 合流主表数据合并 | 将子线程报表数据写回合流点干流程主表(排除系统字段) | 合流后主表单体现各子线程填写结果 |
| 数据汇总 | 合流明细汇总 | GenerHieLiuHuiZhongDtlData_2013 生成合流汇总从表数据 |
多子线程明细合并展示 |
| 数据汇总 | 同表单绑定不重复拷贝 | 合流节点与子线程绑定相同 NodeFrmID 时 isCopyData=false |
避免重复覆盖已合并数据 |
| 通过率 | 合流到达计数 | 记录 ThreadCount,计算 passRate = ThreadCount / 总子线程数 × 100 |
判断合流条件 |
| 通过率 | 达到通过率激活待办 | passRate >= PassRate 时,合流节点 GenerWorkerList.IsPass 置 0,干流程处理人可见待办 |
满足比例后推进主流程 |
| 通过率 | 未达通过率隐藏待办 | 未达标时合流节点 IsPass=3(在途不可见状态) |
等待更多子线程完成 |
| 轨迹记录 | 子线程前进 | ActionType.SubThreadForward,前端 WorkCheckParseTrack/TimeBase 绿色展示 |
时间轴区分子线程与普通过件 |
| 轨迹记录 | 合流前进 | ActionType.ForwardHL |
标识合流节点激活 |
| 提示信息 | 到达合流提示 | 提示「流程已运行到合流节点」「您是第 N 个到达的处理人」 | 处理人了解合流进度 |
(五)运行期 --- 子线程退回与分流人处理
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 子线程退回 | 退回到分流节点 | 子线程节点可退回到上游分流/分合流节点;WFState=ReturnSta |
子线程处理人认为需发起人修改后重办 |
| 退回规则 | 全部子线程退回选项 | IsKillEtcThread=1 时退回并删除其它子线程;ReturnWork.vue 展示「全部子线程退回」复选框 |
一人退回即终止其余并行任务 |
| 退回规则 | 由退回人决定 | IsKillEtcThread=2 时退回人勾选是否删除其它子线程 |
灵活处理部分退回 |
| 分流人界面 | 子线程退回处理页 | MyFLDealThread.vue:分流人打开后展示退回子线程、可发起节点、运行中子线程 |
分流人集中处理退回后的子线程 |
| 分流人界面 | 退回子线程列表 | 展示退回节点、退回人、日期、退回原因;支持「发送」「终止」 | 逐条处理已退回子线程 |
| 分流人界面 | 可发起子线程节点 | WF_ThreadNode 列表,展示可追加子线程的节点(ThreadIsCanAdd=1 且非同表单多路径) |
补发新的子线程 |
| 分流人界面 | 运行中子线程 | 按 GenerWorkFlow 卡片展示标题、待办人、发起时间;嵌套 GenerWorkerList 节点/人员/状态 |
总览所有在途子线程 |
| 分流人工具栏 | 分流退回专用工具栏 | Flow_IsCanToFLTread 为真时加载 InitToolBar_ForFenLiu:查看表单、撤销整体发送、增加子线程、轨迹 |
子线程退回后分流人操作集合 |
| 单条重发 | 发送退回子线程 | ThreadDtl_SendSubThread → Node_SendSubTread:恢复子线程为运行态,更新待办,支持小纸条 ScripMsg |
分流人修改后重新下发该子线程 |
| 单条重发 | 末条子线程重发联动 | 若所有退回子线程已处理,自动将干流程置为运行态并跳转 MyView |
全部分支恢复后回到主流程 |
| 子线程退回 | ThreadDtl 单条退回 | ThreadDtl.ReturnThread 打开 ReturnWork,FromPage=ThreadDtl,预选退回目标 |
分流人从子线程管理界面代为退回 |
| 撤销退回 | 撤销子线程退回 | UnReturnThread 调用 MyView_UnReturn |
误退回后恢复 |
| 分流人判断 | 是否分流退回态 | Flow_IsCanToFLTread:FID!=0 且 WFState=ReturnSta 且当前在 FL/FHL 节点 |
决定是否进入分流处理模式 |
(六)运行期 --- 子线程增删与管理
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 子线程管理弹窗 | ThreadDtl 组件 | ToolBar 点击「子线程」打开 ThreadDtl 弹窗(宽 70%);合流节点干流程人查看 |
查看所有子线程运行明细 |
| 子线程列表 | 按 GenerWorkFlow 分组 | 每张卡片对应一条子线程实例:标题、待办人员、发起时间 | 一览子线程概况 |
| 子线程列表 | 节点处理明细表 | 列:节点、处理人、状态(已完成/未读/已读未处理)、应完成日期、实际完成日期 | 掌握子线程内部进度 |
| 子线程列表 | 空状态 | 无子线程时展示「当前暂时没有子线程」占位 | 合流节点尚未下发或已全部结束 |
| 增加子线程 | 合流节点增加 | ThreadIsCanAddOfHL 且 FID==0 时显示「增加子线程」;输入人员账号(逗号分隔) |
合流阶段补录漏发人员 |
| 增加子线程 | 分流节点增加 | ThreadIsCanAdd 且后续仅一条子线程路径;DoSubFlowAddEmps → Node_FHL_AddSubThread |
分流后补发新人员 |
| 增加子线程 | 新增从下一节点执行 | 提示「新增加的人员,从分流节点的下一个节点开始执行」 | 补发人员不重复走子线程入口 |
| 增加子线程 | 人员校验 | 校验账号存在性,支持中英文逗号/分号分隔 | 防止无效人员 |
| 增加子线程 | 数据复制 | 新建 GenerWorkFlow、GenerWorkerList,wkSub.Copy(wk) 复制干流程表单 |
新子线程继承当前主表数据 |
| 终止子线程 | 手工终止 | ThreadDtl_DelSubThread → Flow_DeleteSubThread → DoDeleteWorkFlowByReal |
分流人终止异常/多余子线程 |
| 终止子线程 | 终止权限 | ThreadKillRole=1(手工删除)时 ThreadDtl 显示「终止」链接 |
按节点配置控制是否可删 |
| 终止子线程 | 终止后合流重算 | 删除后按剩余子线程重算合流 PassRate,可能自动激活合流待办或恢复分流待办 |
终止子线程后自动调整主流程状态 |
| 终止子线程 | 全部终止后恢复分流 | 若所有子线程已删除,恢复分流节点处理人待办并跳转 MyFlow |
所有分支取消后回到分流人 |
| 撤销整体发送 | UnSendAllThread | 删除 FID 下全部子线程,分流节点待办恢复,WFState=Running,记录 DeleteSubThread 轨迹 |
分流人整体收回所有子线程 |
| 撤销整体发送 | 权限控制 | 仅 ThreadIsCanDel=true 且当前用户为分流发送人 |
防止非发起人误操作 |
| 单条删除 | KillSubThread | 分流节点删除单条已退回子线程(WF_MyFlow) |
清理退回后不再需要的子线程 |
| 轨迹记录 | 删除子线程 | ActionType.DeleteSubThread,记录删除原因(手工删除/自动删除/分流点手工删除等) |
审计子线程被终止的原因 |
(七)运行期 --- 撤销发送与合流控制
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 撤销发送 | 合流节点撤销 | 撤销前删除 FID 下所有子线程实例(Flow_DeleteSubThread) |
合流后发现异常需回到分流 |
| 撤销发送 | 分合流撤销 | DoUnSendInFeiLiuHeiliu:恢复分流节点待办,删除合流及子线程待办 |
分合流节点专用撤销 |
| 合流前检查 | 未完成子线程阻断 | DealHeLiuState:ThreadKillRole=None 时存在未完成子线程则禁止合流节点向下发送,并列出人员与节点 |
强制全部完成再推进 |
| 合流前检查 | 手工删除提示 | ThreadKillRole=ByHand 时提示「请通知处理完成或强制删除子流程」 |
允许人工干预未完成分支 |
| 合流前检查 | 自动删除 | ThreadKillRole=ByAuto 时自动 Flow_DeleteSubThread 删除未完成子线程后继续 |
超时或不再等待的场景 |
| 撤销范围 | SpanSubTheadNodes | 递归计算合流点与上游分流点之间所有子线程节点 ID,用于统计与撤销 | 精确定义子线程节点范围 |
(八)运行期 --- 轨迹、审核与时间轴
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 流程轨迹 | OneWork 多页签 | OneWork_GetTabs 返回轨迹图(Truck)、时间轴(TimeBase)、时间表(Table) |
查看整单(含子线程)运转情况 |
| 时间轴 | 子线程待办展示 | TimeBase.vue:分流/合流/分合流节点下,按 gwl.FID === WorkID 过滤展示子线程待办 |
干流程处理人看到各子线程当前处理人 |
| 时间轴 | 分流前进着色 | ActionType.ForwardFL 绿色标识 |
区分分流与普通发送 |
| 时间轴 | 子线程前进着色 | ActionType.SubThreadForward 绿色标识 |
区分子线程内部流转 |
| 时间轴 | 合流前进着色 | ActionType.ForwardHL 绿色标识 |
标识合流动作 |
| 轨迹图 | 分流节点到达判断 | Track.vue 对 ForwardFL 做特殊到达判断 |
流程图正确展示分流状态 |
| 审核组件 | 干/子 WorkID 切换 | WorkCheck.vue 使用 `RealWorkID |
|
| 审核轨迹 | 普通/轨迹/时间模式 | WorkCheckParse / WorkCheckParseTrack / WorkCheckParseTrackTime 三套展现 |
按节点审核组件配置展示 |
| 审核轨迹 | 分流/子线程动作标签 | 分别展示「分流前进」「子线程前进」「合流前进」 | 审核轨迹中读懂分支动作 |
| 审核轨迹 | 待办状态 | 展示「处理中」「未开始」等中间态 | 当前节点尚未完成时 |
(九)运行期 --- 催办、预置处理人与辅助能力
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| 催办 | 子流程催办 | Flow_DoPress(workID, msg, isPressSubFlow=true) 支持催办子线程待办 |
分流人催促子线程处理人 |
| 预置处理人 | 组织树选人 | PreplaceWoker.vue 调用 SelectEmps_Init 按部门懒加载人员树 |
发送前指定各子线程接收人 |
| 预置处理人 | 发送前强制打开 | PreplaceWokerEnable=2 发送前自动弹出预置界面 |
确保分流前人员已确定 |
| 待办过滤 | 同表单待办识别 | GL_MyPressWork 等列表对 RunModel=4/5 且 FID!=0 做特殊处理 |
待办列表正确显示子线程任务 |
| 合流查询 | 合流点子线程查询 | DB_GenerHLSubFlowDtl_TB 获取同表单合流点上的子线程 GenerWorkerList |
合流节点展示各分支状态 |
| 权限 | 轨迹查看权限 | Flow_IsCanViewTruck 对子线程节点类型直接返回 true |
子线程参与人可查看轨迹 |
| 退回初始化 | ThreadDtl 专用退回 | ReturnWork 在 FromPage=ThreadDtl 时跳过后端 Return_Init,直接使用传入节点与处理人 |
简化分流人代退回操作 |
(十)后端 API 与数据实体
| 功能类别 | 功能名称 | 功能说明 | 需求场景概述 |
|---|---|---|---|
| HTTP 接口 | ThreadDtl_Init | WF_MyFlow:加载节点信息、可发起子线程节点、退回子线程、GenerWorkFlow/GenerWorkerList |
MyFLDealThread 页面初始化 |
| HTTP 接口 | ThreadDtl_SendSubThread | 发送单条退回子线程 | 分流人重发 |
| HTTP 接口 | ThreadDtl_DelSubThread | 删除/终止子线程,含合流通过率联动 | 子线程管理终止 |
| HTTP 接口 | ThreadDtl_DelSubThread | WF_WorkOpt:合流节点弹窗内删除子线程 |
ThreadDtl.vue 终止 |
| HTTP 接口 | Return_DoReturn | 支持 IsKillEtcThread 参数 |
子线程退回时联动删除其它分支 |
| HTTP 接口 | MyView_UnReturn | 撤销子线程退回 | 恢复误操作 |
| HTTP 接口 | UnSendAllTread | 撤销整体发送 | 分流人收回全部分支 |
| HTTP 接口 | InitToolBar / InitToolBar_ForFenLiu | 常规定义与分流退回专用工具栏 | 前端 ToolBar 按钮渲染 |
| HTTP 接口 | WorkCheck_Init / WorkTrack_Init | 审核组件数据,含子线程轨迹 | 表单审核区 |
| HTTP 接口 | OneWork_GetTabs | 流程运转页签 | OneWork.vue |
| 实体方法 | GenerWorkFlow.DoSubFlowAddEmps | 干流程实例上增加子线程人员 | 合流/分流补人 |
| 实体方法 | Dev2Interface.Node_FHL_AddSubThread | 核心增线程逻辑 | 后端统一入口 |
| 实体方法 | Dev2Interface.Flow_DeleteSubThread | 删除子线程并写轨迹 | 终止/撤销统一入口 |
| 实体方法 | Dev2Interface.Node_FHL_DoReject | 合流点驳回子线程 | 合流人打回分支 |
| 实体方法 | Dev2Interface.Node_SendSubTread | 单条子线程重发 | 退回后重办 |
| 数据表 | WF_GenerWorkFlow.FID | 子线程记录关联干流程 WorkID | 主从实例关联 |
| 数据表 | WF_GenerWorkerList.FID/IsPass | 子线程待办;IsPass=-2 表示分流人观察态;IsPass=3 合流在途 |
待办状态机 |
| 数据表 | ND{FlowNo}Track | 记录 ForwardFL / SubThreadForward / ForwardHL / DeleteSubThread 等 | 全链路审计 |
三、关键动作类型(ActionType)对照
| 动作值 | 名称 | 含义 | 前端展示 |
|---|---|---|---|
| 6 | ForwardFL | 分流前进 | 绿色「分流前进」 |
| 7 | ForwardHL | 合流前进 | 绿色「合流前进」 |
| 11 | SubThreadForward | 子线程前进 | 绿色「子线程前进」 |
| 23 | DeleteSubThread | 删除子线程 | 轨迹记录删除原因 |
四、典型业务场景串联
场景 1:标准同表单分流会签
- 发起人填写表单 → 提交至 分流节点
- 分流人发送 → 系统按接收人规则创建 N 条 同表单子线程(复制主表/明细/附件)
- 各处理人并行审批 → 子线程内记录 SubThreadForward
- 子线程完成 → 合流节点 按
PassRate判断是否激活干流程待办 - 合流人处理后 → 流程继续向下
场景 2:子线程退回后分流人重发
- 某子线程处理人 退回到分流节点(可选「全部子线程退回」)
- 分流人进入 MyFLDealThread 或专用工具栏模式
- 修改表单后对退回子线程点击 发送(可填写小纸条)
- 子线程恢复运行 → 全部处理完成后干流程回到 运行态
场景 3:运行中补发与终止
- 分流后发现漏人 → 增加子线程 输入账号补发
- 某分支异常 → 分流人在 ThreadDtl 中 终止 该子线程
- 系统重算合流通过率 → 满足条件则自动推进合流
五、代码索引(便于对照)
| 模块 | 关键文件 |
|---|---|
| 分流发送核心 | CCFlow/Components/BP.WF/WF/WorkNode.cs(NodeSend_24_SameSheet、NodeSend_53_SameSheet_To_HeLiu) |
| 合流状态检查 | CCFlow/Components/BP.WF/WF/WorkNodePlus.cs(DealHeLiuState) |
| 增删子线程 API | CCFlow/Components/BP.WF/Dev2Interface.cs(Node_FHL_AddSubThread、Flow_DeleteSubThread) |
| 分流人页面 API | CCFlow/Components/BP.WF/HttpHandler/WF_MyFlow.cs(ThreadDtl_*、UnSendAllTread) |
| 子线程管理弹窗 | Vue3/src/WF/WorkOpt/ThreadDtl.vue |
| 分流退回处理页 | Vue3/src/WF/MyFLDealThread.vue |
| 退回联动 | Vue3/src/WF/WorkOpt/ReturnWork.vue |
| 节点设计配置 | Vue3/src/WF/Admin/AttrNode/NodeExt.ts、BtnLab.ts |
| 时间轴/轨迹 | Vue3/src/WF/WorkOpt/OneWork/TimeBase.vue、WorkCheckParseTrack.vue |
| 枚举定义 | CCFlow/Components/BP.WF/EnumLib.cs(RunModel、ThreadKillRole、DeliveryWay) |
文档版本:依据当前工作区代码静态分析生成。