Module: Dataflow::Node

Included in:
Dataflow::Nodes::ComputeNode, Dataflow::Nodes::DataNode
Defined in:
lib/dataflow/node.rb

Overview

Define (default) common interface for nodes. These may be overriden with their specific implementations.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find(id) ⇒ Object

Returns either a DataNode or a ComputeNode that match the id



7
8
9
10
11
12
13
14
15
# File 'lib/dataflow/node.rb', line 7

def self.find(id)
  begin
    return Dataflow::Nodes::DataNode.find(id)
  rescue Mongoid::Errors::DocumentNotFound
    # try again against a computed node
  end

  Dataflow::Nodes::ComputeNode.find(id)
end

Instance Method Details

#all_dependenciesObject



33
34
35
# File 'lib/dataflow/node.rb', line 33

def all_dependencies
  []
end

#metadataObject



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/dataflow/node.rb', line 43

def 
   = {
    _id: self._id,
    _type: self._type,
  }
  properties_data = self.class.properties.keys.map do |property_name|
    value = self[property_name]
    [property_name, value]
  end.to_h

  .merge(properties_data)
end

#recompute(*args) ⇒ Object



17
18
19
# File 'lib/dataflow/node.rb', line 17

def recompute(*args)
  # Interface only, for recursion purposes
end

#required_byObject



37
38
39
40
41
# File 'lib/dataflow/node.rb', line 37

def required_by
  Dataflow::Nodes::ComputeNode.where(dependency_ids: _id).map { |node|
    { node: node, type: 'dependency' }
  }
end

#valid_for_computation?Boolean

Overriden in computed node

Returns:

  • (Boolean)


22
23
24
# File 'lib/dataflow/node.rb', line 22

def valid_for_computation?
  true
end

#validate!Object



26
27
28
29
30
31
# File 'lib/dataflow/node.rb', line 26

def validate!
  # throw if normal model validation do not pass.
  valid = valid_for_computation?
  raise Dataflow::Errors::InvalidConfigurationError, errors.messages unless valid
  true
end