Module: DecisionAgent::Web::DmnEditor::Serialization

Included in:
DecisionAgent::Web::DmnEditor
Defined in:
lib/decision_agent/web/dmn_editor/serialization.rb

Instance Method Summary collapse

Instance Method Details

#serialize_decision(decision) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/decision_agent/web/dmn_editor/serialization.rb', line 16

def serialize_decision(decision)
  result = {
    id: decision.id,
    name: decision.name
  }

  if decision.decision_table
    result[:decision_table] = serialize_decision_table(decision.decision_table)
  elsif decision.decision_tree
    result[:decision_tree] = decision.decision_tree.to_h
  elsif decision.instance_variable_get(:@literal_expression)
    result[:literal_expression] = decision.instance_variable_get(:@literal_expression)
  end

  result[:information_requirements] = decision.information_requirements if decision.information_requirements.any?

  result
end

#serialize_decision_table(table) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/decision_agent/web/dmn_editor/serialization.rb', line 35

def serialize_decision_table(table)
  {
    id: table.id,
    hit_policy: table.hit_policy,
    inputs: table.inputs.map { |i| serialize_input(i) },
    outputs: table.outputs.map { |o| serialize_output(o) },
    rules: table.rules.map { |r| serialize_rule(r) }
  }
end

#serialize_input(input) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/decision_agent/web/dmn_editor/serialization.rb', line 45

def serialize_input(input)
  {
    id: input.id,
    label: input.label,
    type_ref: input.type_ref,
    expression: input.expression
  }
end

#serialize_model(model) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/decision_agent/web/dmn_editor/serialization.rb', line 7

def serialize_model(model)
  {
    id: model.id,
    name: model.name,
    namespace: model.namespace,
    decisions: model.decisions.map { |d| serialize_decision(d) }
  }
end

#serialize_output(output) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/decision_agent/web/dmn_editor/serialization.rb', line 54

def serialize_output(output)
  {
    id: output.id,
    label: output.label,
    type_ref: output.type_ref,
    name: output.name
  }
end

#serialize_rule(rule) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/decision_agent/web/dmn_editor/serialization.rb', line 63

def serialize_rule(rule)
  {
    id: rule.id,
    input_entries: rule.input_entries,
    output_entries: rule.output_entries,
    description: rule.description
  }
end