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