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