Class: JobWorkflow::Workflow
- Inherits:
-
Object
- Object
- JobWorkflow::Workflow
- Defined in:
- lib/job_workflow/workflow.rb,
sig/generated/job_workflow/workflow.rbs
Instance Attribute Summary collapse
Instance Method Summary collapse
-
#add_argument(argument_def) ⇒ void
: (ArgumentDef) -> void.
-
#add_hook(type, task_names:, block:) ⇒ void
: (Symbol, task_names: Array, block: untyped) -> void.
-
#add_schedule(schedule) ⇒ void
: (Schedule) -> void.
-
#add_task(task) ⇒ void
: (Task) -> void.
-
#arguments ⇒ Array[ArgumentDef]
: () -> Array.
-
#build_arguments_hash ⇒ Hash[Symbol, untyped]
: () -> Hash[Symbol, untyped].
-
#build_schedules_hash ⇒ Hash[Symbol, Hash[Symbol, untyped]]
: () -> Hash[Symbol, Hash[Symbol, untyped]].
-
#fetch_task(task_name) ⇒ Task?
: (Symbol?) -> Task?.
-
#hooks ⇒ HookRegistry
: () -> HookRegistry.
-
#initialize ⇒ Workflow
constructor
: () -> void.
-
#tasks ⇒ Array[Task]
: () -> Array.
Constructor Details
#initialize ⇒ Workflow
: () -> 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_config ⇒ DryRunConfig
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
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
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
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
27 28 29 |
# File 'lib/job_workflow/workflow.rb', line 27 def add_task(task) @task_graph.add(task) end |
#arguments ⇒ Array[ArgumentDef]
: () -> Array
67 68 69 |
# File 'lib/job_workflow/workflow.rb', line 67 def arguments @argument_defs.values end |
#build_arguments_hash ⇒ Hash[Symbol, untyped]
: () -> 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_hash ⇒ Hash[Symbol, Hash[Symbol, untyped]]
: () -> 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?
62 63 64 |
# File 'lib/job_workflow/workflow.rb', line 62 def fetch_task(task_name) @task_graph.fetch(task_name) end |
#hooks ⇒ HookRegistry
: () -> HookRegistry
52 53 54 |
# File 'lib/job_workflow/workflow.rb', line 52 def hooks @hook_registry end |