Class: JobWorkflow::Workflow

Inherits:
Object
  • Object
show all
Defined in:
lib/job_workflow/workflow.rb,
sig/generated/job_workflow/workflow.rbs

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWorkflow

: () -> void



13
14
15
16
17
18
19
# File 'lib/job_workflow/workflow.rb', line 13

def initialize
  @task_graph = TaskGraph.new
  @argument_defs = {} #: Hash[Symbol, ArgumentDef]
  @hook_registry = HookRegistry.new
  @schedules = {} #: Hash[Symbol, Schedule]
  @dry_run_config = DryRunConfig.new
end

Instance Attribute Details

#dry_run_configDryRunConfig

RBS:

  • @task_graph: TaskGraph

  • @argument_defs: Hash[Symbol, ArgumentDef]

  • @hook_registry: HookRegistry

  • @schedules: Hash[Symbol, Schedule]

Returns:



10
11
12
# File 'lib/job_workflow/workflow.rb', line 10

def dry_run_config
  @dry_run_config
end

Instance Method Details

#add_argument(argument_def) ⇒ void

This method returns an undefined value.

: (ArgumentDef) -> void

Parameters:



32
33
34
# File 'lib/job_workflow/workflow.rb', line 32

def add_argument(argument_def)
  @argument_defs[argument_def.name] = argument_def
end

#add_hook(type, task_names:, block:) ⇒ void

This method returns an undefined value.

: (Symbol, task_names: Array, block: untyped) -> void

Parameters:

  • (Symbol)
  • task_names: (Array[Symbol])
  • block: (Object)


42
43
44
45
46
47
48
49
# File 'lib/job_workflow/workflow.rb', line 42

def add_hook(type, task_names:, block:)
  return @hook_registry.add_before_hook(task_names:, block:) if type == :before
  return @hook_registry.add_after_hook(task_names:, block:) if type == :after
  return @hook_registry.add_around_hook(task_names:, block:) if type == :around
  return @hook_registry.add_error_hook(task_names:, block:) if type == :error

  raise ArgumentError, "Invalid hook type: #{type.inspect}"
end

#add_schedule(schedule) ⇒ void

This method returns an undefined value.

: (Schedule) -> void

Parameters:



37
38
39
# File 'lib/job_workflow/workflow.rb', line 37

def add_schedule(schedule)
  @schedules[schedule.key] = schedule
end

#add_task(task) ⇒ void

This method returns an undefined value.

: (Task) -> void

Parameters:



27
28
29
# File 'lib/job_workflow/workflow.rb', line 27

def add_task(task)
  @task_graph.add(task)
end

#argumentsArray[ArgumentDef]

: () -> Array

Returns:



67
68
69
# File 'lib/job_workflow/workflow.rb', line 67

def arguments
  @argument_defs.values
end

#build_arguments_hashHash[Symbol, untyped]

: () -> Hash[Symbol, untyped]

Returns:

  • (Hash[Symbol, untyped])


77
78
79
80
81
# File 'lib/job_workflow/workflow.rb', line 77

def build_arguments_hash
  arguments.to_h do |def_obj|
    [def_obj.name, def_obj.default] #: [Symbol, untyped]
  end
end

#build_schedules_hashHash[Symbol, Hash[Symbol, untyped]]

: () -> Hash[Symbol, Hash[Symbol, untyped]]

Returns:

  • (Hash[Symbol, Hash[Symbol, untyped]])


72
73
74
# File 'lib/job_workflow/workflow.rb', line 72

def build_schedules_hash
  @schedules.transform_values(&:to_config)
end

#fetch_task(task_name) ⇒ Task?

: (Symbol?) -> Task?

Parameters:

  • (Symbol, nil)

Returns:



62
63
64
# File 'lib/job_workflow/workflow.rb', line 62

def fetch_task(task_name)
  @task_graph.fetch(task_name)
end

#hooksHookRegistry

: () -> HookRegistry

Returns:



52
53
54
# File 'lib/job_workflow/workflow.rb', line 52

def hooks
  @hook_registry
end

#tasksArray[Task]

: () -> Array

Returns:



57
58
59
# File 'lib/job_workflow/workflow.rb', line 57

def tasks
  @task_graph.to_a
end