Class: Roast::Workflow::StateManager

Inherits:
Object
  • Object
show all
Defined in:
lib/roast/workflow/state_manager.rb

Overview

Manages workflow state persistence and restoration

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(workflow, logger: nil, state_repository: nil, storage_type: nil) ⇒ StateManager

Returns a new instance of StateManager.



9
10
11
12
13
# File 'lib/roast/workflow/state_manager.rb', line 9

def initialize(workflow, logger: nil, state_repository: nil, storage_type: nil)
  @workflow = workflow
  @logger = logger
  @state_repository = state_repository || StateRepositoryFactory.create(storage_type)
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



7
8
9
# File 'lib/roast/workflow/state_manager.rb', line 7

def logger
  @logger
end

#workflowObject (readonly)

Returns the value of attribute workflow.



7
8
9
# File 'lib/roast/workflow/state_manager.rb', line 7

def workflow
  @workflow
end

Instance Method Details

#save_state(step_name, step_result) ⇒ Object

Save the current state after a step execution

Parameters:

  • step_name (String)

    The name of the step that just completed

  • step_result (Object)

    The result of the step execution



19
20
21
22
23
24
25
26
27
# File 'lib/roast/workflow/state_manager.rb', line 19

def save_state(step_name, step_result)
  return unless should_save_state?

  state_data = build_state_data(step_name, step_result)
  @state_repository.save_state(workflow, step_name, state_data)
rescue => e
  # Don't fail the workflow if state saving fails
  log_warning("Failed to save workflow state: #{e.message}")
end

#should_save_state?Boolean

Check if state should be saved for the current workflow

Returns:

  • (Boolean)

    true if state should be saved



32
33
34
# File 'lib/roast/workflow/state_manager.rb', line 32

def should_save_state?
  workflow.respond_to?(:session_name) && workflow.session_name
end