Module: AWS::Flow::Workflows::InstanceMethods

Defined in:
lib/aws/decider/decider.rb

Overview

Instance methods for DecisionContext

Instance Method Summary collapse

Instance Method Details

#activity_client(name = nil, &block) ⇒ Object

Sets the activity client for this decision context.

Parameters:

  • name (defaults to: nil)

    The name of the activity client.

  • block

    A block of ActivityOptions for the activity client.



417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
# File 'lib/aws/decider/decider.rb', line 417

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

#continue_as_new(*args, &block) ⇒ Object

Restarts the workflow as a new workflow execution.

Parameters:



477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
# File 'lib/aws/decider/decider.rb', line 477

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) ⇒ Object

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

Parameters:

  • delay_seconds

    The number of seconds to delay before executing the block.

  • block

    The block to execute when the timer expires.



443
444
445
# File 'lib/aws/decider/decider.rb', line 443

def create_timer(delay_seconds, &block)
  self.decision_context.workflow_clock.create_timer(delay_seconds, block)
end

#create_timer_async(delay_seconds, &block) ⇒ Object

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

Parameters:

  • delay_seconds

    The number of seconds to delay before executing the block.

  • block

    The block to execute when the timer expires.



464
465
466
# File 'lib/aws/decider/decider.rb', line 464

def create_timer_async(delay_seconds, &block)
  task { self.decision_context.workflow_clock.create_timer(delay_seconds, block) }
end

#decision_contextDecisionContext

Returns the DecisionContext instance.

Returns:



384
385
386
# File 'lib/aws/decider/decider.rb', line 384

def decision_context
  FlowFiber.current[:decision_context]
end

#decision_helperObject



404
405
406
# File 'lib/aws/decider/decider.rb', line 404

def decision_helper
  FlowFiber.current[:decision_context].decision_helper
end

#run_idObject

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



400
401
402
# File 'lib/aws/decider/decider.rb', line 400

def run_id
  self.decision_context.workflow_context.decision_task.workflow_execution.run_id
end

#workflow_idObject

Returns the workflow ID.

Returns:

  • The workflow ID



394
395
396
# File 'lib/aws/decider/decider.rb', line 394

def workflow_id
  self.decision_context.workflow_context.decision_task.workflow_execution.workflow_id
end