Class: AWS::Flow::DecisionTaskHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/decider/task_handler.rb

Overview

A decision task handler to work with a WorkflowTaskPoller. Create a ‘DecisionTaskHandler` and pass it to WorkflowTaskPoller on construction.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(workflow_definition_map, options = nil) ⇒ DecisionTaskHandler

Creates a new ‘DecisionTaskHandler`.

Parameters:

  • workflow_definition_map
  • options (defaults to: nil)

    An optional logger.



33
34
35
36
37
# File 'lib/aws/decider/task_handler.rb', line 33

def initialize(workflow_definition_map, options=nil)
  @workflow_definition_map = workflow_definition_map
  @logger = options.logger if options
  @logger ||= Utilities::LogFactory.make_logger(self)
end

Instance Attribute Details

#workflow_definition_mapObject (readonly)

Returns the value of attribute workflow_definition_map.



24
25
26
# File 'lib/aws/decider/task_handler.rb', line 24

def workflow_definition_map
  @workflow_definition_map
end

Instance Method Details

#create_async_decider(history_helper) ⇒ AsyncDecider

Creates a new asynchronous decider.

Parameters:

  • history_helper

Returns:



62
63
64
65
66
67
68
69
# File 'lib/aws/decider/task_handler.rb', line 62

def create_async_decider(history_helper)
  task = history_helper.get_decision_task
  workflow_type = task.workflow_type
  # TODO put in context correctly
  workflow_definition_factory = @workflow_definition_map[workflow_type]
  raise "No such definition for #{workflow_type}" if workflow_definition_factory.nil?
  AsyncDecider.new(workflow_definition_factory, history_helper, DecisionHelper.new)
end

#handle_decision_task(decision_task_iterator) ⇒ Object

Handles a decision task.

Parameters:

  • decision_task_iterator


44
45
46
47
48
49
50
51
52
53
54
# File 'lib/aws/decider/task_handler.rb', line 44

def handle_decision_task(decision_task_iterator)
  history_helper = HistoryHelper.new(decision_task_iterator)
  decider = create_async_decider(history_helper)
  decider.decide
  decisions = decider.get_decisions
  response = {:task_token => decider.task_token}
  context_data = decider.decision_helper.workflow_context_data
  response[:execution_context] = context_data.to_s unless context_data.nil?
  response[:decisions] = decisions unless decisions.nil?
  return response
end