Module: Tasker::Constants

Defined in:
lib/tasker/constants.rb,
lib/tasker/constants/registry_events.rb,
lib/tasker/constants/event_definitions.rb

Overview

Constants used throughout the Tasker gem

This module contains constants for workflow step and task statuses, validation states, and configuration schemas.

Event constants are generated from YAML definitions in config/tasker/system_events.yml Run rake tasker:generate_constants to regenerate after YAML changes.

Defined Under Namespace

Modules: ObservabilityEvents, RegistryEvents, StepEvents, TaskEvents, TaskExecution, TaskFinalization, TaskStatuses, TestEvents, WorkflowEvents, WorkflowStepStatuses Classes: EventDefinitions

Constant Summary collapse

VALID_WORKFLOW_STEP_STATUSES =

All valid status values for workflow steps

[
  WorkflowStepStatuses::PENDING,
  WorkflowStepStatuses::IN_PROGRESS,
  WorkflowStepStatuses::ERROR,
  WorkflowStepStatuses::COMPLETE,
  WorkflowStepStatuses::CANCELLED,
  WorkflowStepStatuses::RESOLVED_MANUALLY
].freeze
UNREADY_WORKFLOW_STEP_STATUSES =

Status values for steps that are not ready to be processed

[
  WorkflowStepStatuses::IN_PROGRESS,
  WorkflowStepStatuses::COMPLETE,
  WorkflowStepStatuses::CANCELLED,
  WorkflowStepStatuses::RESOLVED_MANUALLY
].freeze
VALID_TASK_STATUSES =

All valid status values for tasks

[
  TaskStatuses::PENDING,
  TaskStatuses::IN_PROGRESS,
  TaskStatuses::ERROR,
  TaskStatuses::COMPLETE,
  TaskStatuses::CANCELLED,
  TaskStatuses::RESOLVED_MANUALLY
].freeze
VALID_STEP_COMPLETION_STATES =

Step status values that indicate completion (success or otherwise)

[
  WorkflowStepStatuses::COMPLETE,
  WorkflowStepStatuses::RESOLVED_MANUALLY,
  WorkflowStepStatuses::CANCELLED
].freeze
VALID_STEP_STILL_WORKING_STATES =

Step status values that indicate the step is still in a working state

[WorkflowStepStatuses::PENDING, WorkflowStepStatuses::IN_PROGRESS].freeze
VALID_TASK_EXECUTION_STATUSES =

All valid execution status values from TaskExecutionContext view

[
  TaskExecution::ExecutionStatus::HAS_READY_STEPS,
  TaskExecution::ExecutionStatus::PROCESSING,
  TaskExecution::ExecutionStatus::BLOCKED_BY_FAILURES,
  TaskExecution::ExecutionStatus::ALL_COMPLETE,
  TaskExecution::ExecutionStatus::WAITING_FOR_DEPENDENCIES
].freeze
[
  TaskExecution::RecommendedAction::EXECUTE_READY_STEPS,
  TaskExecution::RecommendedAction::WAIT_FOR_COMPLETION,
  TaskExecution::RecommendedAction::HANDLE_FAILURES,
  TaskExecution::RecommendedAction::FINALIZE_TASK,
  TaskExecution::RecommendedAction::WAIT_FOR_DEPENDENCIES
].freeze
VALID_TASK_HEALTH_STATUSES =

All valid health status values from TaskExecutionContext view

[
  TaskExecution::HealthStatus::HEALTHY,
  TaskExecution::HealthStatus::RECOVERING,
  TaskExecution::HealthStatus::BLOCKED,
  TaskExecution::HealthStatus::UNKNOWN
].freeze
ACTIONABLE_TASK_EXECUTION_STATUSES =

Execution statuses that indicate the task can make immediate progress

[
  TaskExecution::ExecutionStatus::HAS_READY_STEPS
].freeze
REENQUEUE_TASK_EXECUTION_STATUSES =

Execution statuses that indicate the task should be re-enqueued for later

[
  TaskExecution::ExecutionStatus::PROCESSING,
  TaskExecution::ExecutionStatus::WAITING_FOR_DEPENDENCIES
].freeze
INTERVENTION_TASK_EXECUTION_STATUSES =

Execution statuses that indicate the task needs intervention

[
  TaskExecution::ExecutionStatus::BLOCKED_BY_FAILURES
].freeze
UNKNOWN =

Default value for unknown identifiers

'unknown'
YAML_SCHEMA =

JSON schema for validating task handler YAML configurations

{
  type: 'object',
  required: %w[name task_handler_class step_templates],
  properties: {
    name: { type: 'string' },
    module_namespace: { type: 'string', default: nil },
    task_handler_class: { type: 'string' },
    concurrent: { type: 'boolean', default: true },
    default_dependent_system: { type: 'string' },
    named_steps: {
      type: 'array',
      items: { type: 'string' }
    },
    schema: { type: 'object' },
    step_templates: {
      type: 'array',
      items: {
        type: 'object',
        required: %w[name handler_class],
        properties: {
          dependent_system: { type: 'string' },
          name: { type: 'string' },
          description: { type: 'string' },
          default_retryable: { type: 'boolean' },
          default_retry_limit: { type: 'integer' },
          skippable: { type: 'boolean' },
          handler_class: { type: 'string' },
          depends_on_step: { type: 'string' },
          depends_on_steps: {
            type: 'array',
            items: { type: 'string' }
          },
          handler_config: { type: 'object' },
          custom_events: {
            type: 'array',
            items: {
              type: 'object',
              required: %w[name],
              properties: {
                name: { type: 'string' },
                description: { type: 'string' }
              }
            }
          }
        }
      }
    },
    environments: {
      type: 'object',
      additionalProperties: {
        type: 'object',
        properties: {
          step_templates: {
            type: 'array',
            items: {
              type: 'object',
              required: %w[name],
              properties: {
                name: { type: 'string' },
                handler_config: { type: 'object' }
              }
            }
          }
        }
      }
    }
  }
}.freeze
VALID_TASK_REENQUEUE_REASONS =

All valid re-enqueue reason values for task finalization

[
  TaskFinalization::ReenqueueReasons::CONTEXT_UNAVAILABLE,
  TaskFinalization::ReenqueueReasons::STEPS_IN_PROGRESS,
  TaskFinalization::ReenqueueReasons::AWAITING_DEPENDENCIES,
  TaskFinalization::ReenqueueReasons::READY_STEPS_AVAILABLE,
  TaskFinalization::ReenqueueReasons::CONTINUING_WORKFLOW,
  TaskFinalization::ReenqueueReasons::PENDING_STEPS_REMAINING,
  TaskFinalization::ReenqueueReasons::RETRY_BACKOFF
].freeze
VALID_TASK_PENDING_REASONS =

All valid pending reason values for task finalization

[
  TaskFinalization::PendingReasons::CONTEXT_UNAVAILABLE,
  TaskFinalization::PendingReasons::WAITING_FOR_STEP_COMPLETION,
  TaskFinalization::PendingReasons::WAITING_FOR_DEPENDENCIES,
  TaskFinalization::PendingReasons::READY_FOR_PROCESSING,
  TaskFinalization::PendingReasons::WORKFLOW_PAUSED
].freeze
TASK_TRANSITION_EVENT_MAP =

Task Transition Event Map

{
  # Initial state transitions (from nil/initial)
  [nil, TaskStatuses::PENDING] => TaskEvents::INITIALIZE_REQUESTED,
  [nil, TaskStatuses::IN_PROGRESS] => TaskEvents::START_REQUESTED,
  [nil, TaskStatuses::COMPLETE] => TaskEvents::COMPLETED,
  [nil, TaskStatuses::ERROR] => TaskEvents::FAILED,
  [nil, TaskStatuses::CANCELLED] => TaskEvents::CANCELLED,
  [nil, TaskStatuses::RESOLVED_MANUALLY] => TaskEvents::RESOLVED_MANUALLY,

  # Normal state transitions
  [TaskStatuses::PENDING,
   TaskStatuses::IN_PROGRESS] => TaskEvents::START_REQUESTED,
  [TaskStatuses::PENDING, TaskStatuses::CANCELLED] => TaskEvents::CANCELLED,
  [TaskStatuses::PENDING, TaskStatuses::ERROR] => TaskEvents::FAILED,

  [TaskStatuses::IN_PROGRESS,
   TaskStatuses::PENDING] => TaskEvents::INITIALIZE_REQUESTED,
  [TaskStatuses::IN_PROGRESS,
   TaskStatuses::COMPLETE] => TaskEvents::COMPLETED,
  [TaskStatuses::IN_PROGRESS, TaskStatuses::ERROR] => TaskEvents::FAILED,
  [TaskStatuses::IN_PROGRESS,
   TaskStatuses::CANCELLED] => TaskEvents::CANCELLED,

  [TaskStatuses::ERROR,
   TaskStatuses::PENDING] => TaskEvents::RETRY_REQUESTED,
  [TaskStatuses::ERROR,
   TaskStatuses::RESOLVED_MANUALLY] => TaskEvents::RESOLVED_MANUALLY,

  # New transitions for admin override scenarios
  [TaskStatuses::COMPLETE, TaskStatuses::CANCELLED] => TaskEvents::CANCELLED,
  [TaskStatuses::RESOLVED_MANUALLY,
   TaskStatuses::CANCELLED] => TaskEvents::CANCELLED
}.freeze