module AWS::Flow::Workflows::InstanceMethods

Instance methods for {DecisionContext}.

Public Instance Methods

activity_client(name=nil, &block) click to toggle source

Sets the activity client for this decision context.

@param name

The name of the activity client.

@param block

A block of {ActivityOptions} for the activity client.
# File lib/aws/decider/decider.rb, line 438
def activity_client(name=nil, &block)
  options = Utilities::interpret_block_for_options(ActivityOptions, block)
  begin
    activity_class = get_const(options.prefix_name)
  rescue Exception => e
    #pass
  end
  activity_options = {}
  if activity_class
    values = activity_class.activities.map{|x| [x.name.split(".").last.to_sym, x.options]}
    activity_options = Hash[*values.flatten]
  end
  client = GenericActivityClient.new(self.decision_helper, options)
  self.class.send(:define_method, name) { client }  if ! name.nil?
  client
end
async_create_timer(delay_seconds, &block) click to toggle source

Creates an asynchronous timer on the workflow that executes the supplied block after a specified delay.

@param (see create_timer)

@deprecated

Use {#create_timer_async} instead.

@api private

# File lib/aws/decider/decider.rb, line 475
def async_create_timer(delay_seconds, &block)
  task { self.decision_context.workflow_clock.create_timer(delay_seconds, block) }
end
continue_as_new(*args, &block) click to toggle source

Restarts the workflow as a new workflow execution.

@param args

Arguments for this workflow execution, in JSON format.

@param [ContinueAsNewOptions] block

The {ContinueAsNewOptions} for this workflow execution.
# File lib/aws/decider/decider.rb, line 497
def continue_as_new(*args, &block)
  continue_as_new_options = Utilities::interpret_block_for_options(ContinueAsNewOptions, block)
  @data_converter ||= YAMLDataConverter.new
  if ! args.empty?
    input = @data_converter.dump args
    continue_as_new_options.input = input
  end
  known_workflows = self.class.workflows
  # If there is only one workflow, we can unambiguously say that we should use that one.

  if known_workflows.length == 1
    continue_as_new_options.precursors << known_workflows.first.options
  end
  # If we can find a name that matches, use that one.
  if continue_as_new_options.execution_method
    matching_option = self.class.workflows.map(&:options).find {|x| x.execution_method == continue_as_new_options.execution_method }
    continue_as_new_options.precursors << matching_option unless matching_option.nil?
  end
  self.decision_context.workflow_context.continue_as_new_options = continue_as_new_options
end
create_timer(delay_seconds, &block) click to toggle source

Creates a timer on the workflow that executes the supplied block after a specified delay.

@param delay_seconds

The number of seconds to delay before executing the block.

@param block

The block to execute when the timer expires.
# File lib/aws/decider/decider.rb, line 463
def create_timer(delay_seconds, &block)
  self.decision_context.workflow_clock.create_timer(delay_seconds, block)
end
create_timer_async(delay_seconds, &block) click to toggle source

Creates an asynchronous timer on the workflow that executes the supplied block after a specified delay.

@param (see create_timer)

# File lib/aws/decider/decider.rb, line 484
def create_timer_async(delay_seconds, &block)
  task { self.decision_context.workflow_clock.create_timer(delay_seconds, block) }
end
decision_context() click to toggle source

Returns the {DecisionContext} instance. @return [DecisionContext]

The {DecisionContext} instance.
# File lib/aws/decider/decider.rb, line 405
def decision_context
  FlowFiber.current[:decision_context]
end
decision_helper() click to toggle source
# File lib/aws/decider/decider.rb, line 425
def decision_helper
  FlowFiber.current[:decision_context].decision_helper
end
run_id() click to toggle source

Returns the decision helper for the decision context. This should be an instance of {DecisionHelper} or a class derived from it.

# File lib/aws/decider/decider.rb, line 421
def run_id
  self.decision_context.workflow_context.decision_task.workflow_execution.run_id
end
workflow_id() click to toggle source

Returns the workflow ID.

@return

The workflow ID.
# File lib/aws/decider/decider.rb, line 415
def workflow_id
  self.decision_context.workflow_context.decision_task.workflow_execution.workflow_id
end