Module: Trailblazer::Activity::TaskWrap
- Defined in:
- lib/trailblazer/activity/task_wrap.rb,
lib/trailblazer/activity/task_wrap/inject.rb,
lib/trailblazer/activity/task_wrap/runner.rb,
lib/trailblazer/activity/task_wrap/pipeline.rb,
lib/trailblazer/activity/task_wrap/call_task.rb,
lib/trailblazer/activity/task_wrap/variable_mapping.rb
Overview
|– Start
|-- Trace.capture_args [optional]
|-- Call (call actual task) id: "task_wrap.call_task"
|-- Trace.capture_return [optional]
|-- Wrap::End
Defined Under Namespace
Modules: Inject, Runner, VariableMapping Classes: Extension, Input, Output, Pipeline
Class Method Summary collapse
-
.call_task(wrap_ctx, original_args) ⇒ Object
TaskWrap step that calls the actual wrapped task and passes all ‘original_args` to it.
-
.Extension(merge:) ⇒ Object
Use this in your macros if you want to extend the taskWrap.
-
.initial_wrap_static ⇒ Object
:extension API Extend the static taskWrap from a macro or DSL call.
-
.invoke(activity, args, wrap_runtime: {}, **circuit_options) ⇒ Object
Compute runtime arguments necessary to execute a taskWrap per task of the activity.
-
.wrap_static_for(task, activity:) ⇒ Object
Retrieve the static wrap config from activity.
Class Method Details
.call_task(wrap_ctx, original_args) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/trailblazer/activity/task_wrap/call_task.rb', line 6 def self.call_task(wrap_ctx, original_args) task = wrap_ctx[:task] # Call the actual task we're wrapping here. # puts "~~~~wrap.call: #{task}" return_signal, return_args = task.(*original_args) # DISCUSS: do we want original_args here to be passed on, or the "effective" return_args which are different to original_args now? wrap_ctx = wrap_ctx.merge( return_signal: return_signal, return_args: return_args ) return wrap_ctx, original_args end |
.Extension(merge:) ⇒ Object
Use this in your macros if you want to extend the taskWrap.
36 37 38 |
# File 'lib/trailblazer/activity/task_wrap.rb', line 36 def Extension(merge:) Extension.new(merge: Pipeline::Merge.new(*merge)) end |
.initial_wrap_static ⇒ Object
:extension API Extend the static taskWrap from a macro or DSL call. Gets executed in Intermediate.call which also provides config.
31 32 33 |
# File 'lib/trailblazer/activity/task_wrap.rb', line 31 def initial_wrap_static(*) initial_sequence = TaskWrap::Pipeline.new([["task_wrap.call_task", TaskWrap.method(:call_task)]]) end |
.invoke(activity, args, wrap_runtime: {}, **circuit_options) ⇒ Object
Compute runtime arguments necessary to execute a taskWrap per task of the activity.
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/trailblazer/activity/task_wrap.rb', line 16 def invoke(activity, args, wrap_runtime: {}, **) = .merge( runner: TaskWrap::Runner, wrap_runtime: wrap_runtime, activity: {wrap_static: {activity => initial_wrap_static}, nodes: {}}, # for Runner. Ideally we'd have a list of all static_wraps here (even nested). ) # signal, (ctx, flow), circuit_options = Runner.(activity, args, ) end |
.wrap_static_for(task, activity:) ⇒ Object
Retrieve the static wrap config from activity.
48 49 50 51 |
# File 'lib/trailblazer/activity/task_wrap/runner.rb', line 48 def self.wrap_static_for(task, activity:, **) wrap_static = activity[:wrap_static] wrap_static[task] or raise "#{task}" end |