驰骋JFlow,BPM,CCFlow 异表单分合流需求列表

CCFlow 异表单分合流需求列表

依据代码整理:CCFlow/Components/BP.WFVue3/src/WF/WorkOptVue3/src/WF/Admin/AttrNodeVue3/src/WF/MyFLDealThread.vueVue3/src/WF/ToolBar.vue

说明:本文档聚焦 异表单子线程(RunModel=5 / SubThreadUnSameWorkID) 及其与 分流(FL)/分合流(FHL)/合流(HL) 节点的协同能力;与同表单分流(RunModel=4)共用的机制在对应章节会标注。


一、总体架构

异表单分河流采用「干流程(FID=0)+ 子线程(FID=干流程 WorkID) 」双层实例结构。与同表单的核心差异在于:每个异表单子线程节点可绑定独立表单(FrmNode / NodeFrmID ,物理表通常为 ND{NodeID},子线程之间数据相互隔离。

层级 节点类型(RunModel) 数据特征 典型作用
干流程 0 线形 / 2 分流 / 3 分合流 / 1 合流 WorkID 为主键,FID=0 发起、分流、合流汇总
子线程 5 异表单 独立 WorkID(规则可配置),FID=干流程 WorkID,独立表单表 并行处理不同业务表单,如多专业并行填报

典型拓扑:普通节点 → 分流/分合流节点 → 一个或多个异表单子线程节点(可并行多表单)→ 合流节点 → 后续节点

核心后端入口:WorkNode.NodeSend_24_UnSameSheet(分流到异表单)、WorkNode.NodeSend_53_UnSameSheet_To_HeLiu(异表单子线程到合流)。


二、功能需求明细表

(一)设计配置 --- 节点运行模式

功能类别 功能名称 功能说明 需求场景概述
节点类型 异表单子线程节点 RunModel=5SubThreadUnSameWorkID),节点工作类型为 SubThreadWork;与同表单(4)区分 不同部门/专业使用不同表单并行处理,如财务表、法务表、技术表同时流转
节点类型 分流节点 RunModel=2(FL),向下可连接一个或多个异表单子线程节点 将干流程拆分为多条并行子线程,每条可对应不同表单
节点类型 分合流节点 RunModel=3(FHL),兼具分流下发与合流汇总 单节点完成分流与合流,简化流程图
节点类型 合流节点 RunModel=1(HL),等待子线程按通过率到达后激活干流程待办 汇总各异表单分支结果后继续主流程
流程约束 分流可连多个异表单路径 分流节点后续有多个节点时,若均为异表单子线程,调用 NodeSend_24_UnSameSheet(toNDs) 同时启动 一次分流同时发起财务、人事、行政等多张表单
流程约束 分流仅连一条异表单路径 分流后续仅一个异表单子线程节点时,同样走 NodeSend_24_UnSameSheet 标准单表单异分支场景
流程约束 禁止同异表单混发 分流同时启动同表单(4)与异表单(5)子线程时报错 workflow_error_4 保证分支类型一致,避免数据模型冲突
流程约束 禁止多同表单并行 分流同时启动多个同表单子线程时报错 workflow_error_5(异表单不受此限,可多异表单并行) 同表单仅允许单路径;异表单允许多路径
流程约束 普通节点不可直连子线程 线形节点直接连接异表单子线程节点报错 workflow_error_3 子线程必须由分流/分合流节点发起
流程约束 合流节点不可下连子线程 合流节点下连接子线程节点报错 workflow_error_6 子线程只能在合流之前运行
WorkID 规则 USSWorkIDRole=0 仅生成一个 WorkID 同一异表单子线程节点下所有接收人共享一个 WorkID;多人协作处理同一份表单实例 同一表单需多人会签、但只维护一份数据
WorkID 规则 USSWorkIDRole=1 按接收人生成 WorkID 每个接收人独立生成 WorkID,各自拥有独立表单实例 每人填写各自负责的异表单内容
WorkID 规则 合流后再异表单有效说明 USSWorkIDRole 配置说明:对「上一节点是合流、当前是异表单子线程」场景有效 合流后再次分流到异表单时的实例生成策略
表单权限 WhoIsPK 主键规则 USSWorkIDRole=1 时,WhoIsPK 必须为 WorkID(OID),不能为 FID;设计期 FlowCheckError 自动修正并告警 保证每人独立读写自己的表单实例
表单校验 物理表独立性 异表单子线程 MapData.PTable 设为 ND{NodeID},与流程主表 Flow.PTable 分离 各子线程表单物理隔离
表单绑定 FrmNode 多表单绑定 子线程节点通过 FrmNodes 绑定表单库表单;FrmEnableRole=Allways 的表单在分流时复制干流程数据 子线程可使用与干流程不同的业务表单
表单绑定 WhoIsPK=FID 特殊处理 单表单绑定且 WhoIsPK=FID 时,子线程 wk.OID 使用干流程 WorkID 以干流程 ID 为主键的表单继承场景
完成通过率 PassRate 合流节点 PassRate(默认 100),按「已到达合流子线程数 / 总子线程数 × 100」判断是否激活干流程待办 允许部分异表单分支完成即可合流
子线程删除方式 ThreadKillRole 合流节点:0 不能删除(须全部完成)、1 手工删除、2 自动删除未完成子线程 合流前仍有子线程未完成时的处理策略
增加子线程 ThreadIsCanAdd 分流/分合流节点:已发出子线程后是否允许追加;后端要求分流后续仅一条子线程路径(HisToNodes.Count==1)才显示增加按钮 单路径异表单流程运行中补发人员
增加子线程(合流) ThreadIsCanAddOfHL 合流节点是否允许增加子线程;ThreadDtl.vueFID==0 且该参数为真时显示「增加子线程」 合流阶段补录遗漏的异表单分支
删除子线程 ThreadIsCanDel 分流/分合流节点:子线程退回后是否允许删除/撤销整体发送 部分子线程退回后由分流人清理
移交子线程 ThreadIsCanShift 是否允许移交已发出的子线程(默认关闭) 子线程处理人变更
退回联动 IsKillEtcThread 子线程退回规则:0 不删除其它子线程、1 删除其它子线程、2 由退回人决定 一个异表单分支退回分流点时,其余分支是否一并取消
按钮权限 子线程按钮 ThreadEnable 控制工具栏「子线程」按钮;ThreadLab 自定义标签 分流人/合流人查看子线程明细入口
按钮权限 预置处理人 PreplaceWokerEnable0 不启用、1 单独启用、2 发送前打开、3 发送且单独启用;PreplaceWoker.vue 组织树选人 分流前预先指定各异表单分支接收人
方向条件 发送后手工选择 GPE_CondModel 说明:异表单合流节点可配置「发送后手工选择到达节点与接受人」 合流后操作员灵活选择下一节点与接收人
合流接收人 禁止由上一步指定 FlowCheckError:合流/分合流节点接收人规则不能为「由上一步指定」,必须为自动计算 合流节点待办人由系统计算,非人工逐条指定

(二)设计配置 --- 子线程接收人规则(DeliveryWay)

功能类别 功能名称 功能说明 需求场景概述
接收人 按明细表确定子线程接收人 ByDtlAsSubThreadEmps(13):读取分流节点表单明细表,须含 UserNoDeliveryParas 指定字段;仅子线程节点可用 分流表单明细每行指定一个异表单处理人
接收人 按 SQL 确定接收人与数据 BySQLAsSubThreadEmpsAndData(12):执行节点 SQL,结果集同时提供人员与行数据 外部数据源驱动多人并行,每人携带不同业务字段到各自异表单
接收人 按绑定部门(子线程) BySetDeptAsSubthread(16):绑定部门中一人完成即该部门子线程结束;返回 GroupMark 按部门维度并行处理异表单
接收人 按数据源确定子线程接收人 SubThreadByGenerDBSrc(81) 与流程数据源组件联动计算异表单分支处理人
接收人 由上一步发送人选择 BySelected(4)/ BySelectedFix 等:发送时弹出人员选择器 分流人手动指定各异表单分支处理人
接收人 预置海选 PreplaceWokerFree(710):自由选择预置处理人 发送前在组织树中预选异表单接收人
接收人 预置固定范围 PreplaceWokerFix(711):在固定人员范围内预选 限定组织范围内指定异表单处理人
接收人 按表单字段 / 部门负责人等 ByPreviousNodeFormEmpsFieldByFieldAsDeptNo 等常规规则 根据主表字段自动计算异表单分支处理人
明细表配置 子线程处理人字段 MapDtl.SubThreadWorker:从表字段下拉(Frm_SubThreadWorker)指定子线程处理人来源字段 从表明细驱动异表单人员分配
明细表配置 子线程分组标记 MapDtl.SubThreadGroupMark:同组多人共享子线程实例(与同表单 GroupMark 机制共用) 按组分派异表单任务
校验 非子线程误配 明细表/SQL/部门子线程方式配置在非子线程节点时抛异常 设计期防止接收人规则与节点类型不匹配
校验 找不到接收人 WhenNoWorker 与跳转规则联动;异表单分流找不到人时可跳转或报错 人员缺失时的容错策略

(三)运行期 --- 分流下发与节点选择(干流程 → 异表单子线程)

功能类别 功能名称 功能说明 需求场景概述
分流发送 异表单分流核心逻辑 NodeSend_24_UnSameSheet(toNDs):分流/分合流节点向一个或多个异表单子线程节点发送 一次发送产生一条或多条异表单分支
历史数据复用 子线程退回/撤销后重发 发送前查询 GenerWorkFlow(FID=干流程WorkID),同节点历史实例可复用 WorkID 与表单数据 子线程退回后再次下发不丢失已填数据
数据初始化 主表数据复制(USSWorkIDRole=0) 复制 rptGe 到子线程 Workwk.FID=干流程WorkID;按 WhoIsPK 决定 wk.OID 异表单继承干流程基础数据
数据初始化 绑定表单数据复制 遍历 FrmNodesFrmEnableRole=Allways 的表单从干流程复制到子线程 GEEntityOID 子线程异表单获得干流程已填数据
数据初始化 按接收人生成(USSWorkIDRole=1) 每个 GenerWorkerList 接收人独立 GenerOID、独立 wk.OID、独立 GenerWorkFlow 每人一份独立异表单实例
数据初始化 共享 WorkID(USSWorkIDRole=0) 多人共享一个 workIDSubThread,更新各 GenerWorkerList.WorkID 指向同一实例 多人协作填写同一份异表单
待办生成 GenerWorkerList 生成 Func_GenerWorkerLists_Thread / Func_GenerWorkerLists 计算各异表单节点处理人 按接收人规则产生待办
待办生成 分流节点发送副本 为子线程产生分流节点 GenerWorkerList 副本(PassInt=-2IsRead=true 分流人可观察各分支发送状态
待办生成 找不到人跳转 WhenNoWorker=true 时记录 Skip 轨迹并尝试跳转下一节点 人员缺失时自动跳过
实例维护 GenerWorkFlow 子线程实例 每条异表单分支创建/更新 GenerWorkFlowFID=干流程WorkID,继承标题、业务字段、父流程关联等 子线程在待办列表独立展示
状态维护 ThreadCount 归零 分流时 HisGenerWorkFlow.SetPara("ThreadCount", 0) 为合流通过率计算准备计数
状态维护 节点名称追加 分流时 NodeName 追加异表单子线程节点名(多节点逗号拼接) 干流程列表展示当前分支概况
轨迹记录 分流前进 非开始节点记录 ActionType.Forward(含异表单分流提示信息 FenLiuUnSameSheet 轨迹图/时间轴标识分流动作
系统变量 发送结果变量 写入 VarTreadWorkIDsVarAcceptersIDVarAcceptersNameVarToNodeIDs 供发送后事件/自定义开发使用
节点选择 ToNodes 初始化 ToNodes_InitWorkOpt_GetToNodes:线性/同表单节点单选,异表单节点多选 分流发送前选择要启动的异表单分支
节点选择 「可以分发启动的异表单」 后端插入 NodeID=0 虚拟节点,前端 ToNodes.vue 展示为「可以分发启动的异表单」;选此项时 radioSelected=0,通过复选框多选异表单节点 一次分流同时启动多张异表单
节点选择 异表单全选 ToNodes.vue 提供「全选节点」复选框,支持半选状态 快速选择所有可达异表单分支
节点选择 接收人选择与校验 异表单节点 DeliveryWay 为 4/21/43/60 时需「选择接收人」;发送前校验每个选中节点已指定人员 手动选人场景的发送前校验
节点选择 发送执行 ToNodes_Send 将选中节点 ID(逗号分隔)写入 Paras_ToNodes 并执行发送 完成多异表单分支并行下发
节点选择 记忆上次选择 WorkOpt_ToNodes_GetLasterSelectNodeID 从轨迹表读取上次选择节点 改善用户重复操作体验
接收人维护 增加预选接收人 AccepterOfGener_AddEmps:选择器确认后将人员写入 WF_SelectAccper 发送前维护各异表单节点接收人
接收人维护 移除预选接收人 ToNodes.vueRemoveEmp 删除 SelectAccper 记录 调整已选异表单分支处理人

(四)运行期 --- 子线程处理与向下发送

功能类别 功能名称 功能说明 需求场景概述
待办打开 子线程独立待办 子线程处理人待办 WorkID 为子线程 ID,FID 指向干流程;打开对应异表单(NodeFrmID 处理人仅看到自己的异表单任务
表单访问 查看子线程表单 ThreadDtl.OpenFrm 打开 MyView,传入 WorkID/FID/FK_Node/FK_Flow 分流人从管理界面查看任意异表单分支
表单访问 MyFLDealThread 查看表单 OpenFrm 通过 BaseComponent.openDrawerByUrl 抽屉打开子线程表单 分流退回处理页内查看异表单
子线程发送 子线程向下运行 异表单子线程节点内正常审批发送,动作类型 ActionType.SubThreadForward 异表单分支内部多节点流转
子线程发送 子线程到合流 NodeSend_53_UnSameSheet_To_HeLiu:异表单完成后向合流节点汇聚 并行异表单分支汇入主流程
数据汇总 合流主表数据合并 将子线程 HisWork 复制到合流点 heLiuWKOID=干流程WorkID);若绑定相同 NodeFrmIDisCopyData=false 跳过重拷 合流后主表单体现各异表单填写结果
数据汇总 合流报表同步 rptGe.Copy(HisWork) 同步到干流程报表 合流后干流程数据一致
数据汇总 合流汇总从表 删除子线程时 ThreadDtl_DelSubThread 清理 ItIsHLDtl=true 的合流汇总从表数据 终止分支后清除合流汇总脏数据
通过率 合流到达计数 ThreadCount 自增,计算 passRate = ThreadCount / 总子线程数 × 100 判断合流条件
通过率 达到通过率激活待办 passRate >= PassRate 时激活合流节点待办 满足比例后推进主流程
通过率 未达通过率隐藏待办 未达标时合流节点待办不可见(IsPass=3 等待更多异表单分支完成
轨迹记录 子线程前进 ActionType.SubThreadForward,前端展示绿色「子线程前进」 时间轴区分子线程与普通审批
轨迹记录 合流前进 ActionType.ForwardHL,前端展示绿色「合流前进」 标识合流节点激活
轨迹记录 子线程向合流发送 合流时记录「子线程向合流节点发送」 审计异表单分支到达合流

(五)运行期 --- 子线程退回与分流人处理

功能类别 功能名称 功能说明 需求场景概述
子线程退回 退回到分流节点 异表单子线程节点可退回到上游分流/分合流节点;WFState=ReturnSta(5) 异表单处理人认为需发起人修改后重办
退回规则 全部子线程退回选项 IsKillEtcThread=1 时退回并删除其它子线程;ReturnWork.vue 展示「全部子线程退回」复选框 一人退回即终止其余异表单并行任务
退回规则 由退回人决定 IsKillEtcThread=2 时退回人勾选是否删除其它子线程 灵活处理部分退回
分流人界面 子线程退回处理页 MyFLDealThread.vue:分流人打开后展示退回子线程、可发起节点、运行中子线程 分流人集中处理退回后的异表单分支
分流人界面 退回子线程列表 WF_ReturnWork 表:退回节点、退回人、日期、退回原因;支持「发送」「终止」 逐条处理已退回异表单分支
分流人界面 可发起子线程节点 WF_ThreadNode 列表;isSameThread=falseThreadIsCanAdd=1 时展示「增加子线程」 存在多条异表单路径时可补发新分支
分流人界面 运行中子线程 GenerWorkFlow 卡片展示(WFState!=5);嵌套 GenerWorkerList 节点/人员/状态/日期 总览所有在途异表单分支
分流人工具栏 分流退回专用工具栏 Flow_IsCanToFLTread 为真时 InitToolBar_ForFenLiu:查看表单、撤销整体发送、增加子线程、轨迹 子线程退回后分流人操作集合
单条重发 发送退回子线程 ThreadDtl_SendSubThreadNode_SendSubTread:恢复子线程为运行态;支持小纸条 ScripMsg 分流人修改后重新下发该异表单分支
单条重发 小纸条传达 SendThread 弹窗输入传达信息,写入 GenerWorkFlow.ScripMsg / ScripNodeID 重发时向处理人附带说明
单条重发 末条子线程重发联动 所有退回子线程处理完毕后,自动恢复干流程运行态并跳转 全部分支恢复后回到主流程
子线程退回 ThreadDtl 单条退回 ReturnThread 打开 ReturnWorkFromPage=ThreadDtl,预选退回目标与处理人 分流人从子线程管理界面代为退回
子线程退回 ThreadDtl 退回条件 IsPass==1(已完成)时显示「退回」;IsPass==0WFState==5 时显示「撤销」 按子线程状态控制可操作项
撤销退回 撤销子线程退回 UnReturnThread 调用 MyView_UnReturn,传入 UnReturnToNode 误退回后恢复异表单分支
分流人判断 是否分流退回态 Flow_IsCanToFLTreadFID!=0WFState=ReturnSta 且当前在 FL/FHL 节点 决定是否进入分流处理模式
合流驳回 合流点驳回子线程 Node_FHL_DoReject:合流人将指定异表单子线程驳回 合流阶段发现某分支有问题需打回

(六)运行期 --- 子线程增删与管理

功能类别 功能名称 功能说明 需求场景概述
子线程管理弹窗 ThreadDtl 组件 ToolBar 点击「子线程」打开 ThreadDtl 弹窗(宽 70%);发送前自动 SaveExt 分流人/合流人查看异表单分支明细
子线程列表 按 GenerWorkFlow 分组 每张卡片:标题、待办人员(TodoEmps)、发起时间(RDT 一览各异表单分支概况
子线程列表 节点处理明细表 列:节点、处理人、状态(已完成/未读/已读未处理)、应完成日期、实际完成日期 掌握异表单分支内部进度
子线程列表 空状态 无子线程时展示「当前暂时没有子线程」占位图与禁用按钮 尚未下发或已全部结束
子线程列表 过滤已删除待办 GetGwlsData 过滤 IsPass=-2 的记录 不展示分流人观察态副本
增加子线程 合流节点增加 ThreadIsCanAddOfHLFID==0:输入人员账号(逗号分隔),调用 DoSubFlowAddEmps 合流阶段补录遗漏异表单人员
增加子线程 分流节点增加 ThreadIsCanAdd 且后续仅一条子线程路径;Node_FHL_AddSubThread 单路径异表单流程补发新人员
增加子线程 新增从下一节点执行 提示「新增加的人员,从分流节点的下一个节点开始执行」 补发人员不重复走子线程入口
增加子线程 人员校验 校验账号存在性;支持中英文逗号/分号分隔 防止无效人员
增加子线程 合流节点定位分流 当前在合流节点时,自动向上查找分流节点 RunModel=FL 正确确定增线程起点
增加子线程 指定目标子线程节点 toNodeID 参数指定异表单子线程节点;默认取分流下第一个子线程节点 多异表单路径时指定补发到哪张表单
终止子线程 手工终止 ThreadDtl_DelSubThreadFlow_DeleteSubThreadDoDeleteWorkFlowByReal 分流人终止异常/多余异表单分支
终止子线程 终止权限 ThreadKillRole=1(手工删除)时显示「终止」 按节点配置控制是否可删
终止子线程 终止后合流重算 删除后按剩余子线程重算合流 PassRate;清理合流汇总从表 终止分支后自动调整主流程状态
终止子线程 全部终止后恢复分流 所有子线程删除后,恢复分流节点处理人待办并跳转 MyFlow 所有异表单分支取消后回到分流人
终止子线程 写终止轨迹 WriteTrackInfo 记录「分流点手工删除」 审计人为终止原因
撤销整体发送 UnSendAllThread 删除 FID 下全部子线程,分流节点待办恢复 分流人整体收回所有异表单分支
撤销整体发送 权限控制 ThreadIsCanDel=true 且当前用户为分流发送人 防止非发起人误操作
MyFLDealThread 终止 分流退回页终止 DoDelThread 确认后调用 ThreadDtl_DelSubThread;若返回 PageName 则跳转 MyView 退回处理页内终止单条分支

(七)运行期 --- 撤销发送与合流控制

功能类别 功能名称 功能说明 需求场景概述
撤销发送 合流节点撤销 撤销前删除 FID 下所有子线程实例(Flow_DeleteSubThread 合流后发现异常需回到分流
撤销发送 分合流撤销 DoUnSendInFeiLiuHeiliu:恢复分流节点待办,删除合流及子线程待办 分合流节点专用撤销
撤销发送 子线程撤销发送 DoThreadUnSend:撤销到分流/分合流时,联动处理 Span 范围内子线程节点待办 子线程内撤销不影响其它分支
合流前检查 未完成子线程阻断 DealHeLiuStateThreadKillRole=None 时存在未完成子线程则禁止合流节点向下发送 强制全部异表单分支完成再推进
合流前检查 手工删除提示 ThreadKillRole=ByHand 时提示通知完成或强制删除 允许人工干预未完成分支
合流前检查 自动删除 ThreadKillRole=ByAuto 时自动删除未完成子线程后继续 超时或不再等待的场景
撤销范围 SpanSubThreadNodeIds 递归计算合流点与上游分流点之间所有子线程节点 ID 精确定义异表单分支节点范围
合流查询 异表单合流点子线程 DB_GenerHLSubFlowDtl_YB:查询 FID=workidIsPass=0 的在途子线程 合流节点展示各异表单分支状态

(八)运行期 --- 轨迹、审核与时间轴

功能类别 功能名称 功能说明 需求场景概述
流程轨迹 OneWork 多页签 OneWork_GetTabs 返回轨迹图(Truck)、时间轴(TimeBase)、时间表(Table) 查看整单(含异表单子线程)运转情况
流程轨迹 OneWork 页签切换 OneWork.vue 固定 Tab 导航,支持 currTab 参数指定默认页签 从工具栏轨迹按钮直达指定视图
时间轴 子线程待办展示 TimeBase.vue:分流/合流/分合流节点下按 gwl.FID 过滤展示子线程待办 干流程处理人看到各异表单分支当前处理人
时间轴 分流前进着色 ActionType.ForwardFL 绿色标识「分流前进」 区分分流与普通发送
时间轴 子线程前进着色 ActionType.SubThreadForward 绿色标识「子线程前进」;StepForwardOutlined 图标 区分子线程与普通过件
时间轴 合流前进着色 ActionType.ForwardHL 绿色标识「合流前进」;FastForwardOutlined 图标 标识合流动作
轨迹图 分流节点到达判断 Track.vueForwardFL 做特殊到达判断 流程图正确展示分流状态
审核组件 干/子 WorkID 切换 WorkCheck.vue 使用 `RealWorkID
审核组件 三种显示模式 FWCShowModel0 普通(WorkCheckParse)、1 轨迹(WorkCheckParseTrack)、2 时间轴(WorkCheckParseTrackTime 按节点审核组件配置展示
审核组件 普通模式 WorkCheck_Init / WorkCheck_Init2019 按轨迹逐条渲染;IsDoc=true 的可编辑 常规节点审核意见录入与历史展示
审核组件 轨迹模式 WorkTrack_Init + 时间线;自动插入「流程结束」节点;过滤跳转与发送重复项 以时间线方式查看含异表单动作的审批历程
审核组件 时间轴模式 表格式表头(环节/审批人/信息/节点/完成时间);同节点多人合并为 NodeArr;退回节点单独分组 领导查看结构化审批时间轴
审核组件 停留时间计算 FWCTimeModel0 倒序(当前-下一节点)、1 正序(当前-上一节点);排除节点 ID 末位 01 展示各审批环节耗时
审核组件 审核意见编辑 支持文本录入(≤2000字)、失焦自动保存(SaveWorkCheck(true) 异表单节点处理人填写审批意见
审核组件 审核立场 FWCView 配置立场选项;提交时校验必选(FWCView 参数) 同意/不同意/附条件等立场选择
审核组件 签名模式 SigantureEnabel0 不签名、1 图片签名、2 写字板手写签名 按配置展示/采集签名
审核组件 审核时间修改 IsChangeFWCTime=1 时可编辑 DatePicker 修改审批时间 补录或修正审批时间
审核组件 审核附件 FWCAth=1 时支持上传/下载/删除;WorkCheck_GetNewUploadedAths 获取列表 审批过程附带材料
审核组件 常用短语 CommonConfig.IsShowWorkCheckUsefulExpres 时展示标签快选与 GL_WorkcheckWorks 管理 快速录入常见审批语
审核组件 审核标准 NodeCheckStandard 配置:1 外链打开、2 弹窗展示 MapExt.Doc 处理人查看审批依据
审核组件 仅显示自己意见 FWCMsgShow=1 时过滤只显示当前用户审核内容与附件 协作节点隐私展示
审核组件 会签节点名称 节点名 (会签) 替换为灰色 HTML 标注 区分会签与普通节点
审核组件 退回原因前缀 ActionType=Return/ReturnAndBackWay 时消息前缀「退回原因:」 轨迹中明确退回信息
审核组件 传阅信息展示 抄送节点展示 cclist 人员及状态;计算传阅耗时 时间轴完整展示抄送链
审核组件 子线程动作标签 轨迹/时间轴分别展示「分流前进」「子线程前进」「合流前进」 审核轨迹中读懂异表单分支动作
审核组件 待办中间态 展示「处理中」「未开始」「审批中」等 当前异表单节点尚未完成时
审核组件 外部保存暴露 WorkCheck.vue 暴露 WorkCheckSave;根据模式调用子组件 SaveWorkCheck 工具栏发送前统一保存审核意见
审核组件 InitWorkCheck 事件 监听 Event.on('InitWorkCheck') 外部注入审核内容 与其他组件联动填充意见

(九)运行期 --- 预置处理人与辅助能力

功能类别 功能名称 功能说明 需求场景概述
预置处理人 组织树懒加载 PreplaceWoker.vue 调用 SelectEmps_Init,按部门展开加载人员与下级部门 发送前按组织架构指定异表单接收人
预置处理人 上一级导航 toPrevDept 返回上级机构;到根节点时提示「已到第一机构」 大型组织树中快速定位
预置处理人 单选/多选 isMultiSelect 控制树节点 checkable;支持 selectedKeyscheckedKeys 按场景选择单个或多个预置人员
预置处理人 确定/取消 BtnOK 校验已选人后 emit('AddEmps')Cancel 返回空数组 与发送流程集成
预置处理人 发送前强制打开 PreplaceWokerEnable=2 时发送前自动弹出;ToolBar 检测未点击则拦截发送 确保异表单分流前人员已确定
预置处理人 单独按钮打开 PreplaceWokerEnable=1/3 时工具栏显示「预置处理人」按钮 随时维护后续节点处理人
预置处理人 自由节点预置 GetPreplaceWokerFreeNodes 获取需预置的节点列表 多异表单分支批量预置处理人
催办 子流程催办 Flow_DoPress(workID, msg, isPressSubFlow=true) 支持催办子线程待办 分流人催促异表单分支处理人
待办过滤 异表单待办识别 待办列表对 RunModel=5FID!=0 做特殊处理 待办列表正确显示异表单分支任务
权限 轨迹查看权限 子线程节点类型参与 Flow_IsCanViewTruck 判断 异表单分支参与人可查看轨迹
退回初始化 ThreadDtl 专用退回 ReturnWorkFromPage=ThreadDtl 时跳过后端 Return_Init,直接使用传入节点与处理人 简化分流人代退回操作
项目文件 审核区项目文件卡片 WorkCheck.vue 嵌入 CCPrjFileReviewCard 异表单审批时关联项目文件查阅

(十)后端 API 与数据实体

功能类别 功能名称 功能说明 需求场景概述
HTTP 接口 ThreadDtl_Init WF_MyFlow:加载节点信息、可发起子线程节点、退回子线程、GenerWorkFlow/GenerWorkerList MyFLDealThread 页面初始化
HTTP 接口 ThreadDtl_SendSubThread 发送单条退回子线程 → Node_SendSubTread 分流人重发异表单分支
HTTP 接口 ThreadDtl_DelSubThread WF_MyFlow / WF_WorkOpt:删除子线程,含合流通过率联动与合流从表清理 子线程管理终止
HTTP 接口 ToNodes_Init 获取可达节点列表,含异表单多选虚拟节点 ToNodes.vue 初始化
HTTP 接口 ToNodes_Send 按选中节点 ID 执行分流发送 多异表单分支并行下发
HTTP 接口 AccepterOfGener_AddEmps 为指定节点增加预选接收人 发送前人员维护
HTTP 接口 Return_DoReturn 支持 IsKillEtcThread 参数 异表单子线程退回时联动删除其它分支
HTTP 接口 MyView_UnReturn 撤销子线程退回 恢复误操作
HTTP 接口 UnSendAllTread 撤销整体发送 分流人收回全部异表单分支
HTTP 接口 InitToolBar / InitToolBar_ForFenLiu 常规定义与分流退回专用工具栏 前端 ToolBar 按钮渲染
HTTP 接口 WorkCheck_Init / WorkTrack_Init 审核组件数据,含异表单子线程轨迹 表单审核区
HTTP 接口 WorkCheck_Save 保存审核意见、立场、签名、时间 发送前/失焦保存
HTTP 接口 WorkCheck_GetNewUploadedAths 获取节点审核附件列表 附件展示与下载
HTTP 接口 OneWork_GetTabs 流程运转页签 OneWork.vue
HTTP 接口 SelectEmps_Init 部门人员树数据 PreplaceWoker.vue / ToNodes 选人
实体方法 GenerWorkFlow.DoSubFlowAddEmps 干流程实例上增加子线程人员 → Node_FHL_AddSubThread 合流/分流补人
实体方法 Dev2Interface.Node_FHL_AddSubThread 核心增线程逻辑:校验人员、定位分流节点、创建 GWF/GWL/Work 后端统一入口
实体方法 Dev2Interface.Flow_DeleteSubThread 删除子线程并写轨迹 终止/撤销统一入口
实体方法 Dev2Interface.Node_FHL_DoReject 合流点驳回子线程 合流人打回异表单分支
实体方法 Dev2Interface.Node_SendSubTread 单条子线程重发 退回后重办
实体方法 Dev2Interface.WorkOpt_GetToNodes 计算可达节点,插入异表单多选虚拟节点 分流/合流发送选人
实体方法 Dev2Interface.DB_GenerHLSubFlowDtl_YB 获取异表单合流点上的在途子线程 合流节点状态查询
数据表 WF_GenerWorkFlow.FID 子线程记录关联干流程 WorkID 主从实例关联
数据表 WF_GenerWorkerList.FID/IsPass 子线程待办;IsPass=-2 分流人观察态;IsPass=3 合流在途 待办状态机
数据表 ND{FlowNo}Track 记录 Forward / SubThreadForward / ForwardHL / DeleteSubThread 等 全链路审计
数据表 WF_SelectAccper 存储发送前预选的各节点接收人 异表单多分支人员预选

三、关键动作类型(ActionType)对照

动作值 名称 含义 前端展示
6 ForwardFL 分流前进 绿色「分流前进」
7 ForwardHL 合流前进 绿色「合流前进」
11 SubThreadForward 子线程前进 绿色「子线程前进」
23 DeleteSubThread 删除子线程 轨迹记录删除原因

四、异表单与同表单分流差异对照

对比项 异表单(RunModel=5) 同表单(RunModel=4)
表单物理表 各子线程节点独立 ND{NodeID} 共用流程主表 Flow.PTable
分流多路径 允许同时启动多个异表单子线程节点 仅允许一条同表单路径
节点选择 UI ToNodes.vue 复选框多选异表单 单选同表单节点
WorkID 规则 USSWorkIDRole:共享或按人独立 默认每人独立 WorkID
合流数据汇总 NodeSend_53_UnSameSheet_To_HeLiu;绑定相同表单时跳过重拷 NodeSend_53_SameSheet_To_HeLiu;明细/附件复制
合流查询 API DB_GenerHLSubFlowDtl_YB DB_GenerHLSubFlowDtl_TB
混发限制 不可与同表单混发 不可与异表单混发

五、典型业务场景串联

场景 1:多异表单并行分流

  1. 发起人填写主表单 → 提交至 分流节点
  2. 分流人发送 → 弹出 ToNodes 选择「可以分发启动的异表单」,勾选财务表、法务表、技术表
  3. 系统调用 NodeSend_24_UnSameSheet 同时创建三条 异表单子线程
  4. 各专业人员在各自异表单中并行审批 → 记录 SubThreadForward
  5. 各分支完成 → 合流节点PassRate 判断是否激活干流程待办
  6. 合流人处理后 → 流程继续向下

场景 2:异表单子线程退回后分流人重发

  1. 某异表单分支处理人 退回到分流节点(可选「全部子线程退回」)
  2. 分流人进入 MyFLDealThread 专用页面
  3. 对退回分支点击 发送(可填写小纸条传达修改要求)
  4. 该异表单分支恢复运行 → 全部处理完成后干流程回到 运行态

场景 3:合流阶段补发与终止

  1. 合流人打开 ThreadDtl 发现遗漏人员 → 增加子线程 输入账号
  2. 某异表单分支异常 → 在 ThreadDtl终止 该分支
  3. 系统重算合流通过率 → 满足条件则自动推进合流

场景 4:发送前预置异表单处理人

  1. 分流节点配置 PreplaceWokerEnable=2
  2. 分流人点击发送 → 自动弹出 PreplaceWoker 组织树
  3. 为各异表单分支预选处理人 → 确认后执行分流发送

六、代码索引(便于对照)

模块 关键文件
异表单分流发送核心 CCFlow/Components/BP.WF/WF/WorkNode.csNodeSend_24_UnSameSheetNodeSend_53_UnSameSheet_To_HeLiu
分流多选节点 CCFlow/Components/BP.WF/Dev2Interface.csWorkOpt_GetToNodes
增删子线程 API CCFlow/Components/BP.WF/Dev2Interface.csNode_FHL_AddSubThreadFlow_DeleteSubThread
分流人页面 API CCFlow/Components/BP.WF/HttpHandler/WF_MyFlow.csThreadDtl_*
子线程管理弹窗 Vue3/src/WF/WorkOpt/ThreadDtl.vue
分流目标选择 Vue3/src/WF/WorkOpt/ToNodes.vue
分流退回处理页 Vue3/src/WF/MyFLDealThread.vue
预置处理人 Vue3/src/WF/WorkOpt/PreplaceWoker.vue
退回联动 Vue3/src/WF/WorkOpt/ReturnWork.vue
审核组件 Vue3/src/WF/WorkOpt/WorkCheck.vueWorkCheckParse.vueWorkCheckParseTrack.vueWorkCheckParseTrackTime.vue
流程轨迹 Vue3/src/WF/WorkOpt/OneWork.vueOneWork/TimeBase.vue
节点设计配置 Vue3/src/WF/Admin/AttrNode/NodeExt.tsBtnLab.ts
接收人规则 Vue3/src/WF/Admin/AttrNode/AccepterRole/GPE_AccepterRole.ts
枚举定义 CCFlow/Components/BP.WF/EnumLib.csRunModelThreadKillRoleDeliveryWay

文档版本:依据当前工作区代码静态分析生成。

相关推荐
驰骋工作流2 天前
驰骋 BPM(CCFlow/JFlow)四大运行模式与 Flowable/Camunda 技术对比
工作流引擎·工作流·bpm
SuniaWang13 天前
《AgentX 专栏》08-工作流引擎:AgentWorkflow怎么把工具记忆流程串成一条流水线
java·ai·架构·langchain·工作流引擎·langgraph·agent架构
驰骋工作流21 天前
CCFast 驰骋低代码BPM-积木菜单设计思想
低代码·工作流引擎·工程引擎·菜单体系
迪迦AI智能体22 天前
一个内容生产 AI 工作流的设计思路:任务状态、知识库与人工审核
工作流引擎
Flynt2 个月前
用AI自动生成科研工作流:原理、架构与局限性
agent·工作流引擎
雪兽软件2 个月前
业务流程管理 (BPM) 在物联网 (IoT) 中的作用
物联网·bpm·业务流程管理
流之云低代码平台3 个月前
突破传统,PHP工作流引领软件开发新潮流
工作流引擎·系统可靠性·php工作流技术·软件开发效能·业务流程自动化·系统灵活性
决斗小饼干3 个月前
拒绝扯皮!3步搞定工作流,我被JNPF硬控了15分钟
低代码·工作流引擎
德育处主任3 个月前
『n8n』If组件的用法
人工智能·aigc·工作流引擎