Skip to content

[refactor][P1] 四个 Flow 类型的注册/快照/传播样板逐字复制——应抽 flowBase 内嵌 #94

Closed

Description

@zy84338719

现象

PipeFlow/ParallelFlow/AsyncFlow/SwitchFlow 各自重复同一组字段与方法(复核确认四个类型的 Add/Hooks/SetHookManager/snapshot 方法形态一致):

  • pipe.go:17-103、parallel.go:19-140、async.go:26-84、switch.go:20-117
mu sync.Mutex; runnables ...; hookManager *HookManager
func (p *PipeFlow) Add(...) { p.mu.Lock(); defer p.mu.Unlock(); p.runnables = append(...); for ... setHookManagerByRunnable }

Add/Hooks/SetHookManager/snapshot 四个方法在 4 个类型中语义逐字相同(SwitchFlow 的 runnables 是 map),Run 也都是 _, hm := s.snapshot(); return s.runWithHooks(ctx, hm)(pipe.go:68、parallel.go:80、async.go:93、switch.go:73)。

建议方案

抽 type flowBase struct { mu sync.Mutex; runnables []Runnable; hookManager *HookManager },内嵌到三个切片型 Flow,Add/Hooks/SetHookManager/snapshot 一次实现(方法集自动提升,公开 API 形状不变);SwitchFlow 保留 map 差异,只内嵌 hookManager + mu 部分或复用 setHookManagerByRunnable 传播循环。

备注

  • 行号基于 2026-11-11 的 main

Activity

  1. added a commit that references this issue on Nov 11, 2026
  2. zy84338719 commented on Nov 11, 2026

    @zy84338719
    ContributorAuthor

    已在 v0.11.0 修复并发布 ✅

    变更内容

    本条修复(在 v0.11.0 的版本节里定位到):

    该版本 `v0.11.0` 的其余变更

    关联问题单:workflow#94、workflow#96、workflow#97、workflow#98、workflow#99。

    Release: https://github.com/oekit/workflow/releases/tag/v0.11.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    refactor重构机会(代码审查产出)

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions