Class: Kiqchestra::BaseJob

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker
Defined in:
lib/kiqchestra/base_job.rb

Overview

BaseJob provides a standard interface for all workflow jobs. It includes the necessary callback mechanism to notify the Workflow once a job has completed and trigger any follow-up jobs based on the dependencies.

Subclasses are expected to implement the perform method to define the specific logic for the job. This method will be automatically invoked as part of the job execution flow, and callbacks like on_complete will be triggered when the job finishes.

Instance Method Summary collapse

Instance Method Details

#perform(workflow_id, *args) ⇒ Object

Perform the job and trigger workflow callbacks on completion.

Parameters:

  • workflow_id (String)

    The unique ID for the workflow

  • args (Array)

    Arguments to be passed to the specific job's perform method



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/kiqchestra/base_job.rb', line 22

def perform(workflow_id, *args)
  @workflow_id = workflow_id
  @args = args

  log_info "Starting job #{job_name} in workflow #{@workflow_id} with args: #{@args.inspect}"

  begin
    # Delegate the actual job work to the subclass's perform method
    perform_job(*@args)

    workflow.handle_completed_job job_name
  rescue StandardError => e
    log_error "#{job_name} failed: #{e.message}"

    # Re-raise to let Sidekiq handle retries
    raise e
  end
end

#perform_job(*args) ⇒ Object

Subclasses should define the actual job logic here. This is called by the perform method of BaseJob.

Parameters:

  • args (Array)

    Arguments passed to the job

Raises:

  • (NotImplementedError)


45
46
47
# File 'lib/kiqchestra/base_job.rb', line 45

def perform_job(*args)
  raise NotImplementedError, "Subclasses must implement `perform_job`"
end