module AWS::Flow::Workflows::InstanceMethods
Instance methods for {DecisionContext}.
Public Instance Methods
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
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
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
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
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
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
# File lib/aws/decider/decider.rb, line 425 def decision_helper FlowFiber.current[:decision_context].decision_helper end
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
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