Class: Taskinator::Process::Concurrent

Inherits:
Taskinator::Process show all
Defined in:
lib/taskinator/process.rb

Instance Attribute Summary collapse

Attributes inherited from Taskinator::Process

#definition, #options, #parent, #queue, #uuid

Instance Method Summary collapse

Methods inherited from Taskinator::Process

#<=>, base_key, define_concurrent_process_for, define_sequential_process_for, #enqueue, #no_tasks_defined?, #on_completed_entry, #on_failed_entry, #reload, #task_failed, #tasks, #to_s

Methods included from Taskinator::Persistence

add_process_to_list, deserialize, included, list_key, serialize

Constructor Details

#initialize(definition, complete_on = CompleteOn::Default, options = {}) ⇒ Concurrent

Returns a new instance of Concurrent.



170
171
172
173
# File 'lib/taskinator/process.rb', line 170

def initialize(definition, complete_on=CompleteOn::Default, options={})
  super(definition, options)
  @complete_on = complete_on
end

Instance Attribute Details

#complete_onObject (readonly)

Returns the value of attribute complete_on.



168
169
170
# File 'lib/taskinator/process.rb', line 168

def complete_on
  @complete_on
end

Instance Method Details

#accept(visitor) ⇒ Object



198
199
200
201
# File 'lib/taskinator/process.rb', line 198

def accept(visitor)
  super
  visitor.visit_attribute(:complete_on)
end

#startObject



175
176
177
178
179
180
181
# File 'lib/taskinator/process.rb', line 175

def start
  if tasks.any?
    tasks.each(&:enqueue!)
  else
    complete! # weren't any tasks to start with
  end
end

#task_completed(task) ⇒ Object



183
184
185
186
187
# File 'lib/taskinator/process.rb', line 183

def task_completed(task)
  # when complete on first, then don't bother with subsequent tasks completing
  return if completed? || failed?
  complete! if can_complete?
end

#tasks_completed?(*args) ⇒ Boolean

Returns:

  • (Boolean)


189
190
191
192
193
194
195
196
# File 'lib/taskinator/process.rb', line 189

def tasks_completed?(*args)
  # TODO: optimize this
  if (complete_on == CompleteOn::First)
    tasks.any?(&:completed?)
  else
    tasks.all?(&:completed?)
  end
end