Module: LcpRuby::Workflow::Approval::Setup

Defined in:
lib/lcp_ruby/workflow/approval/setup.rb

Class Method Summary collapse

Class Method Details

.apply!(loader) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/lcp_ruby/workflow/approval/setup.rb', line 5

def self.apply!(loader)
  return unless Workflow::Registry.available?

  # Check if any workflow has approvals
  has_any_approvals = false
  each_workflow_with_approvals do |_wf|
    has_any_approvals = true
    break
  end
  return unless has_any_approvals

  # Validate 3 model contracts
  validate_models!(loader)

  Registry.mark_available!

  register_view_slot!

  # Inject on_entry/on_exit events and register handlers
  each_workflow_with_approvals do |wf|
    wf.approvals.each do |state_name, _approval_def|
      state = wf.state(state_name)
      next unless state

      inject_events!(state)
      register_handlers(wf.model)
    end

    register_discard_handler(wf.model)
  end
end