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
-
.find(id) ⇒ Object
Returns either a DataNode or a ComputeNode that match the id.
Instance Method Summary collapse
- #all_dependencies ⇒ Object
- #metadata ⇒ Object
- #recompute(*args) ⇒ Object
- #required_by ⇒ Object
-
#valid_for_computation? ⇒ Boolean
Overriden in computed node.
- #validate! ⇒ Object
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_dependencies ⇒ Object
33 34 35 |
# File 'lib/dataflow/node.rb', line 33 def all_dependencies [] end |
#metadata ⇒ Object
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_by ⇒ Object
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
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. unless valid true end |