Class: JFlow::Activity::Task

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task) ⇒ Task

Returns a new instance of Task.



7
8
9
# File 'lib/jflow/activity/task.rb', line 7

def initialize(task)
  @task = task
end

Instance Attribute Details

#taskObject (readonly)

Returns the value of attribute task.



5
6
7
# File 'lib/jflow/activity/task.rb', line 5

def task
  @task
end

Instance Method Details

#completed!(result) ⇒ Object



49
50
51
52
53
54
# File 'lib/jflow/activity/task.rb', line 49

def completed!(result)
  swf_client.respond_activity_task_completed({
    task_token: token,
    result: result,
  })
end

#failed!(exception) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/jflow/activity/task.rb', line 57

def failed!(exception)
  swf_client.respond_activity_task_failed({
    task_token: token,
    reason: exception.message,
    details: exception.backtrace.join("\n"),
  })
end

#inputObject



11
12
13
# File 'lib/jflow/activity/task.rb', line 11

def input
  YAML.load(task.input)
end

#klassObject



28
29
30
31
32
# File 'lib/jflow/activity/task.rb', line 28

def klass
  @klass_value ||= JFlow.configuration.activity_map.klass_for(name,version)
  raise "Could not find code to run for given activity" unless @klass_value
  @klass_value
end

#methodObject



34
35
36
37
38
39
40
# File 'lib/jflow/activity/task.rb', line 34

def method
  if name.split('.').size > 1
    method = name.split('.').last
  else
    method = "process"
  end
end

#nameObject



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

def name
  task.activity_type.name
end

#run!Object



42
43
44
45
46
47
# File 'lib/jflow/activity/task.rb', line 42

def run!
  log "Started #{klass}##{method} with #{input}"
  result = klass.new.send(method, input) || "done"
  log "Result is #{result.class} #{result}"
  completed!(result)
end

#tokenObject



24
25
26
# File 'lib/jflow/activity/task.rb', line 24

def token
  task.token
end

#versionObject



20
21
22
# File 'lib/jflow/activity/task.rb', line 20

def version
  task.activity_type.version
end