Class: LcpRuby::Workflow::Resolver

Inherits:
Object
  • Object
show all
Includes:
Contract
Defined in:
lib/lcp_ruby/workflow/resolver.rb

Overview

Merges workflow definitions from all active sources. Priority: static > model > host (first match wins per model).

Instance Method Summary collapse

Constructor Details

#initialize(sources) ⇒ Resolver

Returns a new instance of Resolver.



8
9
10
# File 'lib/lcp_ruby/workflow/resolver.rb', line 8

def initialize(sources)
  @sources = sources
end

Instance Method Details

#workflow_by_name(name) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/lcp_ruby/workflow/resolver.rb', line 23

def workflow_by_name(name)
  @sources.each do |source|
    wf = source.workflow_by_name(name)
    return wf if wf
  end
  nil
end

#workflows_for(model_name) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/lcp_ruby/workflow/resolver.rb', line 12

def workflows_for(model_name)
  all = @sources.flat_map { |source| source.workflows_for(model_name) }
  # Deduplicate by name, preserving source priority order
  seen = {}
  all.each_with_object([]) do |wf, result|
    next if seen.key?(wf.name)
    seen[wf.name] = true
    result << wf
  end
end