Class: Tasker::Orchestration::TaskFinalizer::ReasonDeterminer

Inherits:
Object
  • Object
show all
Defined in:
lib/tasker/orchestration/task_finalizer.rb

Overview

Service class to determine reasons for pending/reenqueue Reduces complexity by organizing reason determination logic

Constant Summary collapse

PENDING_REASON_MAP =

Frozen hash for O(1) pending reason lookups

{
  Constants::TaskExecution::ExecutionStatus::HAS_READY_STEPS =>
    Constants::TaskFinalization::PendingReasons::READY_FOR_PROCESSING,
  Constants::TaskExecution::ExecutionStatus::WAITING_FOR_DEPENDENCIES =>
    Constants::TaskFinalization::PendingReasons::WAITING_FOR_DEPENDENCIES,
  Constants::TaskExecution::ExecutionStatus::PROCESSING =>
    Constants::TaskFinalization::PendingReasons::WAITING_FOR_STEP_COMPLETION
}.freeze
REENQUEUE_REASON_MAP =

Frozen hash for O(1) reenqueue reason lookups

{
  Constants::TaskExecution::ExecutionStatus::HAS_READY_STEPS =>
    Constants::TaskFinalization::ReenqueueReasons::READY_STEPS_AVAILABLE,
  Constants::TaskExecution::ExecutionStatus::WAITING_FOR_DEPENDENCIES =>
    Constants::TaskFinalization::ReenqueueReasons::AWAITING_DEPENDENCIES,
  Constants::TaskExecution::ExecutionStatus::PROCESSING =>
    Constants::TaskFinalization::ReenqueueReasons::STEPS_IN_PROGRESS
}.freeze

Class Method Summary collapse

Class Method Details

.determine_pending_reason(context) ⇒ String

Determine reason for pending state

Parameters:

Returns:

  • (String)

    The pending reason



381
382
383
384
385
386
387
388
# File 'lib/tasker/orchestration/task_finalizer.rb', line 381

def determine_pending_reason(context)
  return Constants::TaskFinalization::PendingReasons::CONTEXT_UNAVAILABLE unless context

  PENDING_REASON_MAP.fetch(
    context.execution_status,
    Constants::TaskFinalization::PendingReasons::WORKFLOW_PAUSED
  )
end

.determine_reenqueue_reason(context) ⇒ String

Determine reason for reenqueue

Parameters:

Returns:

  • (String)

    The reenqueue reason



394
395
396
397
398
399
400
401
# File 'lib/tasker/orchestration/task_finalizer.rb', line 394

def determine_reenqueue_reason(context)
  return Constants::TaskFinalization::ReenqueueReasons::CONTEXT_UNAVAILABLE unless context

  REENQUEUE_REASON_MAP.fetch(
    context.execution_status,
    Constants::TaskFinalization::ReenqueueReasons::CONTINUING_WORKFLOW
  )
end