Class: Utils::Operaton::ExternalTaskClient

Inherits:
BaseClient
  • Object
show all
Defined in:
lib/bas/utils/operaton/external_task_client.rb

Overview

Client for interacting with Operaton’s External Task API.

This client provides methods to manage external task lifecycle including:

  • Fetching and locking tasks

  • Completing tasks with variables

  • Unlocking tasks

  • Reporting task failures

Examples:

client = Utils::Operaton::ExternalTaskClient.new(base_url: "https://api.operaton.com", worker_id: "worker-123")
tasks = client.fetch_and_lock("my-topic")

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ ExternalTaskClient

Returns a new instance of ExternalTaskClient.



23
24
25
26
27
# File 'lib/bas/utils/operaton/external_task_client.rb', line 23

def initialize(params)
  @worker_id = params[:worker_id]
  validate_params!(params)
  super(base_url: params[:base_url])
end

Instance Method Details

#complete(task_id, variables = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/bas/utils/operaton/external_task_client.rb', line 41

def complete(task_id, variables = {})
  post(
    "/external-task/#{task_id}/complete",
    {
      workerId: @worker_id,
      variables: format_variables(variables)
    }
  )
end

#fetch_and_lock(topics_str, lock_duration: 10_000, max_tasks: 1, use_priority: true, variables: []) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/bas/utils/operaton/external_task_client.rb', line 29

def fetch_and_lock(topics_str, lock_duration: 10_000, max_tasks: 1, use_priority: true, variables: [])
  post(
    "/external-task/fetchAndLock",
    {
      workerId: @worker_id,
      maxTasks: max_tasks,
      usePriority: use_priority,
      topics: build_topics_payload(topics_str, lock_duration, variables)
    }
  )
end

#get_variables(task_id) ⇒ Object



51
52
53
# File 'lib/bas/utils/operaton/external_task_client.rb', line 51

def get_variables(task_id)
  get("/external-task/#{task_id}/variables")
end

#report_failure(task_id, error_message:, error_details:, retries:, retry_timeout:) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/bas/utils/operaton/external_task_client.rb', line 59

def report_failure(task_id, error_message:, error_details:, retries:, retry_timeout:)
  post(
    "/external-task/#{task_id}/failure",
    {
      workerId: @worker_id,
      errorMessage: error_message,
      errorDetails: error_details,
      retries: retries,
      retryTimeout: retry_timeout
    }
  )
end

#unlock(task_id) ⇒ Object



55
56
57
# File 'lib/bas/utils/operaton/external_task_client.rb', line 55

def unlock(task_id)
  post("/external-task/#{task_id}/unlock")
end