Class: DecisionAgent::Dmn::GraphDotGenerator

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

Overview

Generates DOT format for decision graphs

Instance Method Summary collapse

Constructor Details

#initialize(decision_graph) ⇒ GraphDotGenerator



413
414
415
# File 'lib/decision_agent/dmn/visualizer.rb', line 413

def initialize(decision_graph)
  @graph = decision_graph
end

Instance Method Details

#generateObject



417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
# File 'lib/decision_agent/dmn/visualizer.rb', line 417

def generate
  dot = ["digraph decision_graph {"]
  dot << "  graph [rankdir=TB];"
  dot << "  node [shape=box, style=rounded];"

  @graph.decisions.each do |decision_id, decision|
    label = escape_dot("#{decision.name}\\n(#{decision_id})")
    dot << %(  "#{decision_id}" [label="#{label}", fillcolor=lightyellow, style="rounded,filled"];)

    decision.information_requirements.each do |req|
      label = req[:variable_name] == req[:decision_id] ? "" : escape_dot(req[:variable_name])
      label_attr = label.empty? ? "" : %( [label="#{label}"])
      dot << %(  "#{req[:decision_id]}" -> "#{decision_id}"#{label_attr};)
    end
  end

  dot << "}"
  dot.join("\n")
end