Class: JFlow::Activity::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/jflow/activity/definition.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{}
OPTIONS_VALIDATOR =
{
  :version => "string",
  :domain  => "string",
  :name    => "string",
  :default_task_list => {
    :name => "string"
  }
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, options = {}) ⇒ Definition

Possible options are : domain: “DomainName”, # required name: “Name”, # required version: “Version”, # required description: “Description”, default_task_start_to_close_timeout: “DurationInSecondsOptional”, default_task_heartbeat_timeout: “DurationInSecondsOptional”, default_task_list:

name: "Name", # required

, default_task_priority: “TaskPriority”, default_task_schedule_to_start_timeout: “DurationInSecondsOptional”, default_task_schedule_to_close_timeout: “DurationInSecondsOptional”,



31
32
33
34
35
36
37
38
# File 'lib/jflow/activity/definition.rb', line 31

def initialize(klass, options = {})
  @klass = klass
  @options = DEFAULT_OPTIONS.merge(options)
  @options[:name] = name
  validate_activity!
  register_activity unless registered?
  add_to_activity_mapping
end

Instance Attribute Details

#klassObject (readonly)

Returns the value of attribute klass.



16
17
18
# File 'lib/jflow/activity/definition.rb', line 16

def klass
  @klass
end

#optionsObject (readonly)

Returns the value of attribute options.



16
17
18
# File 'lib/jflow/activity/definition.rb', line 16

def options
  @options
end

Instance Method Details

#add_to_activity_mappingObject



45
46
47
# File 'lib/jflow/activity/definition.rb', line 45

def add_to_activity_mapping
  JFlow.configuration.activity_map.add_activity(name, options[:version], klass, options)
end

#nameObject



49
50
51
# File 'lib/jflow/activity/definition.rb', line 49

def name
  @options[:name] || klass.name.to_s.split('::').last.scan(/[A-Z][a-z]*/).join("_").downcase
end

#register_activityObject



40
41
42
43
# File 'lib/jflow/activity/definition.rb', line 40

def register_activity
  JFlow.configuration.swf_client.register_activity_type(options)
  JFlow.configuration.logger.info "Activity #{name} was registered successfuly"
end

#registered?Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/jflow/activity/definition.rb', line 57

def registered?
  response = JFlow.configuration.swf_client.list_activity_types({
    domain: options[:domain],
    name: name,
    registration_status: "REGISTERED"
  })

  response.type_infos.each do |type_info|
    if type_info.activity_type.name == name && type_info.activity_type.version == version
      JFlow.configuration.logger.info "Activity #{name} #{version} is already registered"
      return true
    end
  end

  return false
end

#versionObject



53
54
55
# File 'lib/jflow/activity/definition.rb', line 53

def version
  @options[:version]
end