# File lib/aggro/saga.rb, line 44 def primary_node @primary_node ||= Locator.new(saga_id).primary_node end
module Aggro::Saga
Public: Mixin to turn a PORO into an Aggro
saga.
Public Instance Methods
bindings()
click to toggle source
# File lib/aggro/saga.rb, line 15 def bindings @runner.bindings end
default_filters()
click to toggle source
# File lib/aggro/saga.rb, line 19 def default_filters { correlation_id: correlation_id } end
saga_id()
click to toggle source
# File lib/aggro/saga.rb, line 23 def saga_id @saga_id ||= SecureRandom.uuid end
start()
click to toggle source
# File lib/aggro/saga.rb, line 27 def start fail 'Saga is not valid' unless valid? promise = SagaStatus.new(saga_id) message = Message::StartSaga.new Aggro.local_node.id, saga_id, to_details response = primary_node.client.post message if response.is_a? Message::OK promise else fail 'Saga could not be started' end end
Private Instance Methods
handler_for_step(step_name)
click to toggle source
# File lib/aggro/saga.rb, line 71 def handler_for_step(step_name) steps[step_name] end
handles_step?(step_name)
click to toggle source
# File lib/aggro/saga.rb, line 75 def handles_step?(step_name) steps.key? step_name end
initial(step_name = nil)
click to toggle source
# File lib/aggro/saga.rb, line 79 def initial(step_name = nil) step_name ? @initial = step_name : @initial end
primary_node()
click to toggle source
reject(reason = nil)
click to toggle source
# File lib/aggro/saga.rb, line 52 def reject(reason = nil) fail 'Runner not set' unless @runner @runner.reject reason end
resolve(value = nil)
click to toggle source
# File lib/aggro/saga.rb, line 58 def resolve(value = nil) fail 'Runner not set' unless @runner @runner.resolve value end
step(step_name, &block)
click to toggle source
# File lib/aggro/saga.rb, line 83 def step(step_name, &block) steps[step_name] = block end
steps()
click to toggle source
# File lib/aggro/saga.rb, line 89 def steps Aggro.step_handlers[name] end
to_details()
click to toggle source
# File lib/aggro/saga.rb, line 48 def to_details { name: model_name.name, args: serialized_attributes } end
transition(step_name, *args)
click to toggle source
# File lib/aggro/saga.rb, line 64 def transition(step_name, *args) fail 'Runner not set' unless @runner @runner.transition step_name, *args end