Module: AWS::Flow::Activities

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

Overview

Methods and constants related to activities.

Defined Under Namespace

Modules: InstanceMethods

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#activitiesObject

Gets an list of activities for this Activity.



331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# File 'lib/aws/decider/activity.rb', line 331

module Activities
  @precursors ||= []
  attr_accessor :activity_client, :activities
  def self.extended(base)
    base.send :include, InstanceMethods
  end
  module InstanceMethods
    attr_writer :_activity_execution_context
    def activity_execution_context
      raise IllegalStateException.new("No activity execution context") unless @_activity_execution_context
      @_activity_execution_context
    end
    def record_activity_heartbeat(details)
      @_activity_execution_context.record_activity_heartbeat(details)
    end
  end


  # @!visibility private
  extend Utilities::UpwardLookups

  # @!visibility private
  def look_upwards(variable)
    precursors = self.ancestors.dup
    precursors.delete(self)
    results = precursors.map { |x| x.send(variable) if x.methods.map(&:to_sym).include? variable }.compact.flatten.uniq
  end
  property(:activities, [])

  # @!visibility private
  def _options; @activities.map(&:options); end

  # Defines one or more activities, with {ActivityOptions} provided in the supplied block.
  #
  # @param [Array] activity_names
  #   The names of the activities to define.
  #
  # @param [Hash] block
  #   {ActivityOptions} to use on the defined activities.
  #
  # @example Defining an activity
  #   new_activity_class = Class.new(MyActivity) do
  #     extend Activities
  #     activity :run_activity1 do
  #     {
  #       :default_task_heartbeat_timeout => "3600",
  #       :default_task_list => task_list,
  #       :default_task_schedule_to_close_timeout => "20",
  #       :default_task_schedule_to_start_timeout => "20",
  #       :default_task_start_to_close_timeout => "20",
  #       :version => "1",
  #       :prefix_name => "#{class_name}Activity"
  #     }
  #     end
  #     def run_activity1
  #     end
  #   end
  def activity(*activity_names, &block)
    options = Utilities::interpret_block_for_options(ActivityOptions, block)
    activity_names.each do |activity_name|
      prefix_name = options.prefix_name || self.to_s
      activity_type = ActivityType.new(prefix_name + "." + activity_name.to_s, options.version, options)
      @activities ||= []
      @activities << activity_type
    end
  end
end

#activity_clientObject

Gets the [ActivityClient] for this Activity.



331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# File 'lib/aws/decider/activity.rb', line 331

module Activities
  @precursors ||= []
  attr_accessor :activity_client, :activities
  def self.extended(base)
    base.send :include, InstanceMethods
  end
  module InstanceMethods
    attr_writer :_activity_execution_context
    def activity_execution_context
      raise IllegalStateException.new("No activity execution context") unless @_activity_execution_context
      @_activity_execution_context
    end
    def record_activity_heartbeat(details)
      @_activity_execution_context.record_activity_heartbeat(details)
    end
  end


  # @!visibility private
  extend Utilities::UpwardLookups

  # @!visibility private
  def look_upwards(variable)
    precursors = self.ancestors.dup
    precursors.delete(self)
    results = precursors.map { |x| x.send(variable) if x.methods.map(&:to_sym).include? variable }.compact.flatten.uniq
  end
  property(:activities, [])

  # @!visibility private
  def _options; @activities.map(&:options); end

  # Defines one or more activities, with {ActivityOptions} provided in the supplied block.
  #
  # @param [Array] activity_names
  #   The names of the activities to define.
  #
  # @param [Hash] block
  #   {ActivityOptions} to use on the defined activities.
  #
  # @example Defining an activity
  #   new_activity_class = Class.new(MyActivity) do
  #     extend Activities
  #     activity :run_activity1 do
  #     {
  #       :default_task_heartbeat_timeout => "3600",
  #       :default_task_list => task_list,
  #       :default_task_schedule_to_close_timeout => "20",
  #       :default_task_schedule_to_start_timeout => "20",
  #       :default_task_start_to_close_timeout => "20",
  #       :version => "1",
  #       :prefix_name => "#{class_name}Activity"
  #     }
  #     end
  #     def run_activity1
  #     end
  #   end
  def activity(*activity_names, &block)
    options = Utilities::interpret_block_for_options(ActivityOptions, block)
    activity_names.each do |activity_name|
      prefix_name = options.prefix_name || self.to_s
      activity_type = ActivityType.new(prefix_name + "." + activity_name.to_s, options.version, options)
      @activities ||= []
      @activities << activity_type
    end
  end
end

Class Method Details

.extended(base) ⇒ Object



334
335
336
# File 'lib/aws/decider/activity.rb', line 334

def self.extended(base)
  base.send :include, InstanceMethods
end

Instance Method Details

#activity(*activity_names, &block) ⇒ Object

Defines one or more activities, with AWS::Flow::ActivityOptions provided in the supplied block.

Examples:

Defining an activity

new_activity_class = Class.new(MyActivity) do
  extend Activities
  activity :run_activity1 do
  {
    :default_task_heartbeat_timeout => "3600",
    :default_task_list => task_list,
    :default_task_schedule_to_close_timeout => "20",
    :default_task_schedule_to_start_timeout => "20",
    :default_task_start_to_close_timeout => "20",
    :version => "1",
    :prefix_name => "#{class_name}Activity"
  }
  end
  def run_activity1
  end
end

Parameters:

  • activity_names (Array)

    The names of the activities to define.

  • block (Hash)

    AWS::Flow::ActivityOptions to use on the defined activities.



388
389
390
391
392
393
394
395
396
# File 'lib/aws/decider/activity.rb', line 388

def activity(*activity_names, &block)
  options = Utilities::interpret_block_for_options(ActivityOptions, block)
  activity_names.each do |activity_name|
    prefix_name = options.prefix_name || self.to_s
    activity_type = ActivityType.new(prefix_name + "." + activity_name.to_s, options.version, options)
    @activities ||= []
    @activities << activity_type
  end
end