Class: DecisionAgent::Dmn::DecisionNode

Inherits:
Object
  • Object
show all
Defined in:
lib/decision_agent/dmn/decision_graph.rb

Overview

Represents a decision in a decision graph

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, name:, decision_logic: nil) ⇒ DecisionNode

Returns a new instance of DecisionNode.



14
15
16
17
18
19
20
21
# File 'lib/decision_agent/dmn/decision_graph.rb', line 14

def initialize(id:, name:, decision_logic: nil)
  @id = id
  @name = name
  @decision_logic = decision_logic # Can be DecisionTable, DecisionTree, or literal
  @information_requirements = [] # Dependencies on other decisions
  @value = nil
  @evaluated = false
end

Instance Attribute Details

#decision_logicObject (readonly)

Returns the value of attribute decision_logic.



11
12
13
# File 'lib/decision_agent/dmn/decision_graph.rb', line 11

def decision_logic
  @decision_logic
end

#evaluatedObject

Returns the value of attribute evaluated.



12
13
14
# File 'lib/decision_agent/dmn/decision_graph.rb', line 12

def evaluated
  @evaluated
end

#idObject (readonly)

Returns the value of attribute id.



11
12
13
# File 'lib/decision_agent/dmn/decision_graph.rb', line 11

def id
  @id
end

#information_requirementsObject (readonly)

Returns the value of attribute information_requirements.



11
12
13
# File 'lib/decision_agent/dmn/decision_graph.rb', line 11

def information_requirements
  @information_requirements
end

#nameObject (readonly)

Returns the value of attribute name.



11
12
13
# File 'lib/decision_agent/dmn/decision_graph.rb', line 11

def name
  @name
end

#valueObject

Returns the value of attribute value.



12
13
14
# File 'lib/decision_agent/dmn/decision_graph.rb', line 12

def value
  @value
end

Instance Method Details

#add_dependency(decision_id, variable_name = nil) ⇒ Object



23
24
25
26
27
28
# File 'lib/decision_agent/dmn/decision_graph.rb', line 23

def add_dependency(decision_id, variable_name = nil)
  @information_requirements << {
    decision_id: decision_id,
    variable_name: variable_name || decision_id
  }
end

#depends_on?(decision_id) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/decision_agent/dmn/decision_graph.rb', line 30

def depends_on?(decision_id)
  @information_requirements.any? { |req| req[:decision_id] == decision_id }
end

#reset!Object



34
35
36
37
# File 'lib/decision_agent/dmn/decision_graph.rb', line 34

def reset!
  @value = nil
  @evaluated = false
end

#to_hObject



39
40
41
42
43
44
45
46
# File 'lib/decision_agent/dmn/decision_graph.rb', line 39

def to_h
  {
    id: @id,
    name: @name,
    information_requirements: @information_requirements,
    decision_logic_type: decision_logic_type
  }
end