Class: JFlow::Activity::Definition

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

Constant Summary collapse

DEFAULT_OPTIONS =
{
  :exceptions_to_exclude => []
}
JFLOW_OPTIONS =
[:exceptions_to_exclude]
OPTIONS_VALIDATOR =
{
  :version => "string",
  :domain  => "string",
  :name    => "string",
  :default_task_list => {
    :name => "string"
  },
  :exceptions_to_exclude => 'array'
}

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”,



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

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.



21
22
23
# File 'lib/jflow/activity/definition.rb', line 21

def klass
  @klass
end

#optionsObject (readonly)

Returns the value of attribute options.



21
22
23
# File 'lib/jflow/activity/definition.rb', line 21

def options
  @options
end

Instance Method Details

#add_to_activity_mappingObject



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

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

#domainObject



62
63
64
# File 'lib/jflow/activity/definition.rb', line 62

def domain
  JFlow::Domain.new(options[:domain])
end

#nameObject



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

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

#register_activityObject



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

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

#registered?Boolean

Returns:

  • (Boolean)


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/jflow/activity/definition.rb', line 66

def registered?
  response = JFlow.configuration.swf_client.list_activity_types({
    domain: domain.domain_name,
    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



58
59
60
# File 'lib/jflow/activity/definition.rb', line 58

def version
  @options[:version]
end