Class: Plumbing::Operation

Inherits:
Object show all
Extended by:
Literal::Types, DSL, Mermaid
Includes:
Actor, Observable
Defined in:
lib/plumbing/operation.rb,
lib/plumbing/operation/dsl.rb,
lib/plumbing/operation/state.rb,
lib/plumbing/operation/errors.rb,
lib/plumbing/operation/events.rb,
lib/plumbing/operation/mermaid.rb,
lib/plumbing/operation/generator.rb,
lib/plumbing/operation/transition.rb,
lib/plumbing/operation/wait_options.rb

Overview

Base class for operations. Subclass it and declare attributes + states with the DSL. An Operation is a Plumbing::Actor.

Defined Under Namespace

Modules: DSL, Generator, Mermaid Classes: ActionBuilder, Completed, DecisionBuilder, Failed, InteractionBuilder, Started, State, Transition, Transitioned, WaitOptions, Waiting

Constant Summary collapse

Error =
Class.new(StandardError)
NoDecision =

a decision matched no condition

Class.new(Error)
NoTransition =

an action has no .then

Class.new(Error)
Timeout =

a wait exceeded its timeout (Plan 2b)

Class.new(Error)
InvalidState =

an interaction called in the wrong state (Plan 2b)

Class.new(Error)

Constants included from Mermaid

Mermaid::SHAPES

Constants included from Actor

Actor::FIBER_KEY, Actor::NotSupported

Instance Attribute Summary collapse

Attributes included from Actor

#worker

Instance Method Summary collapse

Methods included from DSL

action, attribute, attributes_schema, call, decision, default_delay, default_timeout, delay, ensure_worker_supports_waits!, has_waits?, interaction, interaction_states, restore, result, start_state, starts_with, states, test, timeout, wait_until

Methods included from Mermaid

to_mermaid

Methods included from Observable

#observe, #remove, #remove_all

Methods included from Actor

#after, #cancel_deferred, #current_sender, #current_senders, included

Methods included from Actor::Configuration

#register, #selected_worker_type, #uses, #worker_for, #worker_types, #workers

Constructor Details

#initialize(pipeline: nil) ⇒ Operation

Returns a new instance of Operation.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/plumbing/operation.rb', line 26

def initialize(pipeline: nil)
  super()
  @pipeline = pipeline
  @current_state = nil
  @status = :pending
  @attributes = {}
  @exception = nil
  @timeout_id = nil
  @waiting_state = nil
  @wait_generation = 0
  @wait_started_at = nil
  @restored_wait_elapsed = nil
  @poll_id = nil
end

Instance Attribute Details

#current_stateObject (readonly)

Returns the value of attribute current_state.



48
49
50
# File 'lib/plumbing/operation.rb', line 48

def current_state
  @current_state
end

#exceptionObject (readonly)

Returns the value of attribute exception.



56
57
58
# File 'lib/plumbing/operation.rb', line 56

def exception
  @exception
end

Instance Method Details

#attributesObject



41
# File 'lib/plumbing/operation.rb', line 41

def attributes = @attributes.to_h

#completed?Boolean

Returns:

  • (Boolean)


52
# File 'lib/plumbing/operation.rb', line 52

def completed? = @status == :completed

#failed?Boolean

Returns:

  • (Boolean)


54
# File 'lib/plumbing/operation.rb', line 54

def failed? = @status == :failed

#in?(name) ⇒ Boolean

Returns:

  • (Boolean)


50
# File 'lib/plumbing/operation.rb', line 50

def in?(name) = @current_state == name.to_sym