Conversation
- FlowSession 新增 loadPreviousNodeOperatorIds 能力:以当前流程记录所在节点作为上一节点, 按 fromId 定向查询该节点的流程记录,提取审批人员Id并去重、排序 - GroovyScriptRequest 透传 findPreviousNodeOperatorIds 脚本函数, 支持后续节点复用前序节点审批人(如 D 节点审批人与 C 节点保持一致) - 修复 FlowOperatorLocalThreadCache 合并缓存时打乱操作人顺序的问题, 按入参Id顺序返回,保证多人审批顺序稳定 - 新增 A-B-C-D-E 场景测试(正常流转、D节点拒绝回退C节点、流程节点预览) closes #185 Co-Authored-By: Claude <noreply@anthropic.com>
沉淀 A-B-C-D-E 场景测试(#185)的完整实践经验: - 阶段一:PKR 查阅与现有机制对照(发起人/审批人设定、并签、拒绝退回等) - 阶段二:TDD 编写场景测试(步骤化助手方法、待办/processId/展示断言要点) - 阶段三:问题定位方法(失败信息分类、临时诊断、调用链追根因、最小化修复) - 阶段四:回归验证命令 - 阶段五:issue 记录与关联提交推送流程 Co-Authored-By: Claude <noreply@anthropic.com>
前端代码通过 submodule(flow-frontend)集成,涉及前端的改动必须在 前端仓库内处理与提交,不能直接提交到后端仓库;后端仓库仅维护子模块指针。 Co-Authored-By: Claude <noreply@anthropic.com>
- AdviceStrategy 新增 adviceHidden 配置,toMap/fromMap/copy 同步,反序列化兼容存量数据 - NodeStrategyManager 新增 isAdviceHidden;隐藏审批意见时意见必填放宽,避免流程卡死 - FlowContent 详情接口下发 adviceHidden,供前端审批弹框控制意见输入框展示 - 新增 FlowAdviceHiddenServiceTest:序列化往返与存量兼容、详情下发、免填意见审批、必填对照 closes #180 Co-Authored-By: Claude <noreply@anthropic.com>
子流程配置通过 /api/cmd/workflow/meta 获取目标流程开始节点的动作列表, 获取到的流程节点操作应均为非 disable 的动作按钮,禁用的动作不应作为候选。 - WorkflowMeta 按 IFlowAction::enable 过滤开始节点动作 - 新增 WorkflowMetaTest:禁用动作排除复现用例 + 全启用回归用例 closes #183 Co-Authored-By: Claude <noreply@anthropic.com>
- 新增流程级参数 maxNestDepth(int 默认 10),完整贯穿 Workflow/WorkflowVersion/JPA 实体/Convertor/toJson-formJson 持久化链路 - 子流程创建前沿 parentId 父链循环检测:同一子流程节点(同节点+同运行时)在实例链上重复触发即抛 execution.subProcess.loop - 子流程嵌套深度校验:超过 maxNestDepth 抛 execution.subProcess.maxDepth,兜底任意动态脚本循环 - 普通节点 errorTrigger 跳转 visited 节点集合 + 深度双重防护(execution.node.errorTriggerLoop / errorTriggerDepth) - errorTrigger/Reject/Return 跳转抄送或子流程节点时抛 execution.node.invalidJumpTarget,不再静默停滞 - 节点执行次数兜底检测(execution.node.loopDepth),覆盖环形状循环链 - FlowSubProcessLoopGuardTest 覆盖 9 个循环防护场景(自循环/复合循环/errorTrigger 自循环/深度超限/跳转拦截/合法嵌套) closes #182 Co-Authored-By: Claude <noreply@anthropic.com>
- NodeViewJavaScriptCacheContext:每缓存项一个 Timer 且覆盖/删除/保存不 cancel,生产频繁更新视图缓存即线程累积 - MockInstance + MockInstanceFactory:外部 clear 不 cancel 定时任务,线程存活至多 15 分钟 - DelayTaskManager:每任务一个 Timer - 统一改为共享 daemon ScheduledExecutorService(单线程调度),覆盖/删除/关闭时 cancel - 升级 springboot-framework 3.4.54 -> 3.4.55(上游 TempGroovyScriptContext 同类 Timer 泄漏修复) closes #186 Co-Authored-By: Claude <noreply@anthropic.com>
- 新增 LoopTriggerTraceContext:触发点内存标记 + 时间窗口 + 共享调度线程定时清理,被动式检测不主动查询数据库,消除每次流转的 findProcessRecords 全量查询 - 移除 BaseAuditNode/NotifyNode 的 verifyNodeExecutionCount(原高频路径全量扫描,且 processId 无索引) - NotifyNode 抄送自动流转环改为内存标记检测(execution.node.loopDepth) - SubProcessStrategy parentId 回溯加深度上限(最多 maxNestDepth 层),并对未落库记录(id=0,数据库生成)做防御性跳过 - 新增 LoopTriggerTraceContextTest 5 个单元测试;删除过时的重审次数拦截测试(重审为合法用户操作) closes #182 Co-Authored-By: Claude <noreply@anthropic.com>
- PassAction 先保存当前记录再触发后续节点,避免子流程嵌套执行完成后 以陈旧的运行中状态覆盖已更新的流程完成状态 - 新增自动完成场景测试(SubProcess+抄送/触发/延迟/最简流程) - 新增 copy-on-read 测试仓储模拟生产 JPA 对象隔离语义复现问题 closes #184 Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.