class AWS::Flow::DecisionTaskHandler

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

Attributes

workflow_definition_map[R]

Public Class Methods

from_workflow_class(workflow_class) click to toggle source

Factory method to create a DecisionTaskHandler instance given a workflow class

# File lib/aws/decider/task_handler.rb, line 28
def from_workflow_class workflow_class
  self.new(WorkflowDefinitionFactory.generate_definition_map(workflow_class))
end
new(workflow_definition_map, options=nil) click to toggle source

Creates a new ‘DecisionTaskHandler`.

@param workflow_definition_map

@param options

An optional logger.
# File lib/aws/decider/task_handler.rb, line 42
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

Public Instance Methods

create_async_decider(history_helper) click to toggle source

Creates a new asynchronous decider.

@param history_helper

@return [AsyncDecider] The created {AsyncDecider}.

# File lib/aws/decider/task_handler.rb, line 71
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 workflow definition for #{workflow_type.inspect}" if workflow_definition_factory.nil?
  AsyncDecider.new(workflow_definition_factory, history_helper, DecisionHelper.new)
end
handle_decision_task(decision_task_iterator) click to toggle source

Handles a decision task.

@param decision_task_iterator

# File lib/aws/decider/task_handler.rb, line 53
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