Class: Dynflow::DelayedPlan
- Inherits:
 - 
      Serializable
      
        
- Object
 - Serializable
 - Dynflow::DelayedPlan
 
 
- Includes:
 - Algebrick::TypeCheck
 
- Defined in:
 - lib/dynflow/delayed_plan.rb
 
Constant Summary
Constants inherited from Serializable
Serializable::LEGACY_TIME_FORMAT, Serializable::TIME_FORMAT
Instance Attribute Summary collapse
- 
  
    
      #execution_plan_uuid  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute execution_plan_uuid.
 - 
  
    
      #frozen  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute frozen.
 - 
  
    
      #start_at  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute start_at.
 - 
  
    
      #start_before  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute start_before.
 
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #args  ⇒ Array 
    
    
  
  
  
  
  
  
  
  
  
    
Retrieves arguments from the serializer.
 - #cancel ⇒ Object
 - #error(message, history_entry = nil) ⇒ Object
 - #execute(future = Concurrent::Promises.resolvable_future) ⇒ Object
 - #execution_plan ⇒ Object
 - 
  
    
      #initialize(world, execution_plan_uuid, start_at, start_before, args_serializer, frozen)  ⇒ DelayedPlan 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of DelayedPlan.
 - #plan ⇒ Object
 - #timeout ⇒ Object
 - #to_hash ⇒ Object
 
Methods inherited from Serializable
Constructor Details
#initialize(world, execution_plan_uuid, start_at, start_before, args_serializer, frozen) ⇒ DelayedPlan
Returns a new instance of DelayedPlan.
      10 11 12 13 14 15 16 17  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 10 def initialize(world, execution_plan_uuid, start_at, start_before, args_serializer, frozen) @world = Type! world, World @execution_plan_uuid = Type! execution_plan_uuid, String @start_at = Type! start_at, Time, NilClass @start_before = Type! start_before, Time, NilClass @args_serializer = Type! args_serializer, Serializers::Abstract @frozen = Type! frozen, Algebrick::Types::Boolean end  | 
  
Instance Attribute Details
#execution_plan_uuid ⇒ Object (readonly)
Returns the value of attribute execution_plan_uuid.
      7 8 9  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 7 def execution_plan_uuid @execution_plan_uuid end  | 
  
#frozen ⇒ Object
Returns the value of attribute frozen.
      8 9 10  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 8 def frozen @frozen end  | 
  
#start_at ⇒ Object
Returns the value of attribute start_at.
      8 9 10  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 8 def start_at @start_at end  | 
  
#start_before ⇒ Object (readonly)
Returns the value of attribute start_before.
      7 8 9  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 7 def start_before @start_before end  | 
  
Class Method Details
.new_from_hash(world, hash, *args) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
      72 73 74 75 76 77 78 79 80 81 82  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 72 def self.new_from_hash(world, hash, *args) serializer = Utils.constantize(hash[:args_serializer]).new(nil, hash[:serialized_args]) self.new(world, hash[:execution_plan_uuid], string_to_time(hash[:start_at]), string_to_time(hash[:start_before]), serializer, hash[:frozen] || false) rescue NameError => e error(e.) end  | 
  
Instance Method Details
#args ⇒ Array
Retrieves arguments from the serializer
      66 67 68 69  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 66 def args @args_serializer.perform_deserialization! if @args_serializer.args.nil? @args_serializer.args end  | 
  
#cancel ⇒ Object
      41 42 43 44 45 46 47  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 41 def cancel execution_plan.root_plan_step.state = :cancelled execution_plan.root_plan_step.save execution_plan.update_state :stopped, history_notice: "Delayed task cancelled" @world.persistence.delete_delayed_plans(:execution_plan_uuid => @execution_plan_uuid) return true end  | 
  
#error(message, history_entry = nil) ⇒ Object
      34 35 36 37 38 39  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 34 def error(, history_entry = nil) execution_plan.root_plan_step.state = :error execution_plan.root_plan_step.error = ::Dynflow::ExecutionPlan::Steps::Error.new() execution_plan.root_plan_step.save execution_plan.update_state :stopped, history_notice: history_entry end  | 
  
#execute(future = Concurrent::Promises.resolvable_future) ⇒ Object
      49 50 51 52  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 49 def execute(future = Concurrent::Promises.resolvable_future) @world.execute(@execution_plan_uuid, future) ::Dynflow::World::Triggered[@execution_plan_uuid, future] end  | 
  
#execution_plan ⇒ Object
      19 20 21  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 19 def execution_plan @execution_plan ||= @world.persistence.load_execution_plan(@execution_plan_uuid) end  | 
  
#plan ⇒ Object
      23 24 25 26 27 28  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 23 def plan execution_plan.root_plan_step.load_action execution_plan.generate_action_id execution_plan.generate_step_id execution_plan.plan(*@args_serializer.perform_deserialization!) end  | 
  
#timeout ⇒ Object
      30 31 32  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 30 def timeout error("Execution plan could not be started before set time (#{@start_before})", 'timeout') end  | 
  
#to_hash ⇒ Object
      54 55 56 57 58 59 60 61  | 
    
      # File 'lib/dynflow/delayed_plan.rb', line 54 def to_hash recursive_to_hash :execution_plan_uuid => @execution_plan_uuid, :start_at => @start_at, :start_before => @start_before, :serialized_args => @args_serializer.serialized_args, :args_serializer => @args_serializer.class.name, :frozen => @frozen end  |