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 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.



31
32
33
34
35
# File 'lib/aws/decider/task_handler.rb', line 31

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

Instance Method Details

#create_async_decider(history_helper) ⇒ AsyncDecider

Creates a new asynchronous decider.

Parameters:

  • history_helper

Returns:



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

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


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

def handle_decision_task(decision_task_iterator)
  history_helper = HistoryHelper.new(decision_task_iterator)
  @logger.debug "made history_helper"
  decider = create_async_decider(history_helper)
  @logger.debug "made async_decider"
  decider.decide
  @logger.debug "decided"
  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