You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
发布期:WorkflowRegistry.publish 以「待发布定义 + 已发布定义」为引用图做 DFS 环检测(节点 id@version,同 id 不同 version 不算环),发现环直接拒绝发布并给出闭合链(a@1 -> b@2 -> a@1);引用未发布的定义是合法前向引用,不阻塞发布,执行期解析不到走既有 "workflow version is not published" 失败。
Activity
konlue commentedon Nov 8, 2026
您好,我想认领 #273。
方案(双层防线)
WorkflowRegistry.publish以「待发布定义 + 已发布定义」为引用图做 DFS 环检测(节点id@version,同 id 不同 version 不算环),发现环直接拒绝发布并给出闭合链(a@1 -> b@2 -> a@1);引用未发布的定义是合法前向引用,不阻塞发布,执行期解析不到走既有 "workflow version is not published" 失败。id@version,跨挂起/恢复延续,parallel 分支各自拷贝)——进入链上已有的 subflow 抛携带引用链的WorkflowSubflowRecursionException,链达到配置深度上限同样以领域错误结束(诊断链从根定义起含每一层),不再依赖 JVM 栈耗尽。默认上限 16,Builder.subflowMaxDepth(int)显式可配。测试
新增
WorkflowSubflowBoundaryTest8 用例:发布期自引用拒绝、跨定义间接环拒绝(含前向发布一步)、前向引用发布成功 + 执行期 not published、深层无环链(20 层)领域错误而非 StackOverflowError、subflowMaxDepth配置生效、顺序复用、并行复用、subflow 内取消正常终止。实现前 4F 红,实现后 workflow-core 46/46 绿。fix(workflow): detect subflow reference cycles at publish and bound t…
Merge pull request #360 from konlue/feat/issue273-subflow-recursion-b…