Class: BatchKit::Database::Task

Inherits:
Object
  • Object
show all
Defined in:
lib/batch-kit/database/models.rb

Overview

Records details of Task definitions

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task_def) ⇒ Task

Returns a new instance of Task.



228
229
230
231
232
233
234
235
236
# File 'lib/batch-kit/database/models.rb', line 228

def initialize(task_def)
    super(job_id: task_def.job.job_id, job_version: task_def.job.job_version,
          task_name: task_def.name, task_class: task_def.task_class.name,
          task_method: task_def.method_name.to_s, task_desc: task_def.description,
          task_run_count: 0, task_success_count: 0, task_fail_count: 0,
          task_abort_count: 0, task_min_success_duration_ms: 0,
          task_max_success_duration_ms: 0, task_mean_success_duration_ms: 0,
          task_m2_success_duration_ms: 0)
end

Class Method Details

.register(job_def) ⇒ Object



212
213
214
215
216
217
218
219
220
221
222
223
224
225
# File 'lib/batch-kit/database/models.rb', line 212

def self.register(job_def)
    Task.where(job_id: job_def.job_id).update(task_current_flag: false)
    job_def.tasks.each do |task_key, task_def|
        task = self.where(job_id: job_def.job_id,
                          task_method: task_def.method_name.to_s).first
        if task
            task.update(task_name: task_def.name, task_class: task_def.task_class.name,
                        task_desc: task_def.description, task_current_flag: 'Y')
        else
            task = Task.new(task_def).save
        end
        task_def.task_id = task.task_id
    end
end

Instance Method Details

#task_abort(task_run) ⇒ Object



267
268
269
270
# File 'lib/batch-kit/database/models.rb', line 267

def task_abort(task_run)
    self.task_abort_count += 1
    self.save
end

#task_failure(task_run) ⇒ Object



261
262
263
264
# File 'lib/batch-kit/database/models.rb', line 261

def task_failure(task_run)
    self.task_fail_count += 1
    self.save
end

#task_start(task_run) ⇒ Object



239
240
241
242
243
# File 'lib/batch-kit/database/models.rb', line 239

def task_start(task_run)
    self.task_last_run_at = task_run.start_time
    self.task_run_count += 1
    self.save
end

#task_success(task_run) ⇒ Object



246
247
248
249
250
251
252
253
254
255
256
257
258
# File 'lib/batch-kit/database/models.rb', line 246

def task_success(task_run)
    self.task_success_count += 1
    n = self.task_success_count
    ms = task_run.elapsed * 1000
    delta = ms - self.task_mean_success_duration_ms
    self.task_min_success_duration_ms = self.task_min_success_duration_ms == 0 ?
        ms : [self.task_min_success_duration_ms, ms].min
    self.task_max_success_duration_ms = self.task_max_success_duration_ms == 0 ?
        ms : [self.task_max_success_duration_ms, ms].max
    mean = self.task_mean_success_duration_ms += delta / n
    self.task_m2_success_duration_ms += delta * (ms - mean)
    self.save
end

#task_timeout(task_run) ⇒ Object



273
274
275
276
# File 'lib/batch-kit/database/models.rb', line 273

def task_timeout(task_run)
    self.task_abort_count += 1
    self.save
end