Class: Taskinator::Task::Step

Inherits:
Taskinator::Task show all
Defined in:
lib/taskinator/task.rb

Overview

a task which invokes the specified method on the definition the args must be intrinsic types, since they are serialized to YAML

Instance Attribute Summary collapse

Attributes inherited from Taskinator::Task

#next, #options, #process, #uuid

Instance Method Summary collapse

Methods inherited from Taskinator::Task

#<=>, base_key, #cancelled?, define_job_task, define_step_task, define_sub_process_task, #enqueue, #on_completed_entry, #on_failed_entry, #paused?, #queue, #to_s

Methods included from Persistence

add_process_to_list, included, list_key

Constructor Details

#initialize(process, method, args, options = {}) ⇒ Step

Returns a new instance of Step.

Raises:

  • (ArgumentError)


136
137
138
139
140
141
142
143
144
145
# File 'lib/taskinator/task.rb', line 136

def initialize(process, method, args, options={})
  super(process, options)
  @definition = process.definition  # for convenience

  raise ArgumentError, 'method' if method.nil?
  raise NoMethodError, method unless executor.respond_to?(method)

  @method = method
  @args = args
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



134
135
136
# File 'lib/taskinator/task.rb', line 134

def args
  @args
end

#definitionObject (readonly)

Returns the value of attribute definition.



132
133
134
# File 'lib/taskinator/task.rb', line 132

def definition
  @definition
end

#methodObject (readonly)

Returns the value of attribute method.



133
134
135
# File 'lib/taskinator/task.rb', line 133

def method
  @method
end

Instance Method Details

#accept(visitor) ⇒ Object



162
163
164
165
166
167
# File 'lib/taskinator/task.rb', line 162

def accept(visitor)
  super
  visitor.visit_type(:definition)
  visitor.visit_attribute(:method)
  visitor.visit_args(:args)
end

#can_complete_task?Boolean

NOTE: this _does not_ work when checking out-of-process

Returns:

  • (Boolean)


158
159
160
# File 'lib/taskinator/task.rb', line 158

def can_complete_task?
  defined?(@is_complete) && @is_complete
end

#executorObject



147
148
149
# File 'lib/taskinator/task.rb', line 147

def executor
  @executor ||= Taskinator::Executor.new(@definition)
end

#startObject



151
152
153
154
155
# File 'lib/taskinator/task.rb', line 151

def start
  # ASSUMPTION: when the method returns, the task is considered to be complete
  executor.send(method, *args)
  @is_complete = true
end