From bf17c5449c32cd40d4c010ee671be07344d33156 Mon Sep 17 00:00:00 2001
From: Jonas Blatt <jonasblatt@uni-koblenz.de>
Date: Sun, 6 Oct 2019 19:48:01 +0200
Subject: [PATCH] Add documentation for VDMN model

---
 .../core/dmn/domain/vdmn/VDmnColumn.java      | 50 +++++++++++
 .../core/dmn/domain/vdmn/VDmnDecision.java    | 10 +++
 .../dmn/domain/vdmn/VDmnDecisionTable.java    | 45 ++++++++++
 .../core/dmn/domain/vdmn/VDmnDefinition.java  | 26 ++++++
 .../core/dmn/domain/vdmn/VDmnElement.java     | 10 +++
 .../core/dmn/domain/vdmn/VDmnInputColumn.java | 19 +++++
 .../core/dmn/domain/vdmn/VDmnInputData.java   | 10 ++-
 .../core/dmn/domain/vdmn/VDmnInputValue.java  | 19 +++++
 .../fgbks/core/dmn/domain/vdmn/VDmnNode.java  | 20 +++++
 .../dmn/domain/vdmn/VDmnOutputColumn.java     | 16 +++-
 .../core/dmn/domain/vdmn/VDmnOutputValue.java | 14 +++
 .../fgbks/core/dmn/domain/vdmn/VDmnRule.java  | 39 +++++++++
 .../fgbks/core/dmn/domain/vdmn/VDmnValue.java | 85 +++++++++++++++++++
 .../fgbks/core/dmn/domain/vdmn/VTypeRef.java  |  4 +-
 .../vdmn/impl/AbstractVDmnColumnImpl.java     |  3 +
 .../domain/vdmn/impl/AbstractVDmnElement.java |  3 +
 .../domain/vdmn/impl/AbstractVDmnNode.java    |  3 +
 .../domain/vdmn/impl/AbstractVDmnValue.java   |  3 +
 .../domain/vdmn/impl/VDmnDecisionImpl.java    |  8 ++
 .../vdmn/impl/VDmnDecisionTableImpl.java      |  9 ++
 .../domain/vdmn/impl/VDmnDefinitionImpl.java  |  9 ++
 .../domain/vdmn/impl/VDmnInputColumnImpl.java |  8 ++
 .../domain/vdmn/impl/VDmnInputDataImpl.java   |  8 ++
 .../impl/VDmnInputValueChangeableImpl.java    |  4 +
 .../domain/vdmn/impl/VDmnInputValueImpl.java  | 18 +++-
 .../vdmn/impl/VDmnOutputColumnImpl.java       |  8 ++
 .../domain/vdmn/impl/VDmnOutputValueImpl.java | 12 ++-
 .../vdmn/impl/VDmnRuleChangeableImpl.java     |  4 +
 .../dmn/domain/vdmn/impl/VDmnRuleImpl.java    |  8 ++
 .../domain/vdmn/parser/SimpleVDmnParser.java  |  7 +-
 30 files changed, 470 insertions(+), 12 deletions(-)

diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnColumn.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnColumn.java
index 7596d15e..0368d782 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnColumn.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnColumn.java
@@ -7,28 +7,78 @@ import de.unikoblenz.fgbks.core.dmn.domain.ids.ColumnId;
 import java.util.List;
 import java.util.Optional;
 
+/**
+ * A column is a abstract interface for the {@link VDmnInputColumn} and {@link VDmnOutputColumn}. A
+ * column defines the {@link VTypeRef} of the containing values.
+ */
 public interface VDmnColumn extends VDmnElement {
 
+  /**
+   * Get the {@link VDmnDecisionTable}.
+   *
+   * @return the {@link VDmnDecisionTable}
+   */
   VDmnDecisionTable getDmnDecisionTable();
 
+  /**
+   * Get the list of predefined {@link StringValue}s, if the column has the type {@link
+   * VTypeRef#STRING} and the model contains these values.
+   *
+   * @return the list of {@link StringValue}s or an empty optional
+   */
   Optional<List<StringValue>> getPredefinedValues();
 
+  /**
+   * Get the {@link Name}, if present.
+   *
+   * @return the {@link Name} or an empty optional
+   */
   Optional<Name> getName();
 
+  /**
+   * Get the {@link Label}, if present.
+   *
+   * @return the {@link Label} or an empty optional
+   */
   Optional<Label> getLabel();
 
+  /**
+   * Get the {@link VTypeRef}.
+   *
+   * @return the {@link VTypeRef}
+   */
   VTypeRef getTypeRef();
 
+  /**
+   * Get the list of {@link VDmnValue}s.
+   *
+   * @return the list of {@link VDmnValue}s
+   */
   List<VDmnValue> getValues();
 
+  /**
+   * Get the {@link ColumnId}.
+   *
+   * @return the {@link ColumnId}
+   */
   default ColumnId getColumnId() {
     return (ColumnId) getId();
   }
 
+  /**
+   * Get the {@link VDmnDecision}.
+   *
+   * @return the {@link VDmnDecision}
+   */
   default VDmnDecision getDmnDecision() {
     return getDmnDecisionTable().getDmnDecision();
   }
 
+  /**
+   * Get the {@link VDmnDefinition}.
+   *
+   * @return the {@link VDmnDefinition}
+   */
   default VDmnDefinition getDmnDefinition() {
     return getDmnDecisionTable().getDmnDefinition();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecision.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecision.java
index 449cb4ee..b74d6f07 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecision.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecision.java
@@ -3,8 +3,18 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionId;
 import java.util.List;
 
+/**
+ * The decision node contains the {@link VDmnDecisionTable} and a list of {@link VDmnNode}s, which
+ * are information requirements for the decision.
+ */
 public interface VDmnDecision extends VDmnNode {
 
+  /**
+   * Get the list of {@link VDmnNode}, which are are information requirements for the decision. See
+   * also {@link VDmnNode#getInformationProvidingDecisions()}.
+   *
+   * @return the list of {@link VDmnNode}s
+   */
   List<VDmnNode> getDmnInformationRequirements();
 
   VDmnDecisionTable getDmnDecisionTable();
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecisionTable.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecisionTable.java
index 7636ef88..ad651959 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecisionTable.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDecisionTable.java
@@ -1,33 +1,78 @@
 package de.unikoblenz.fgbks.core.dmn.domain.vdmn;
 
 import de.unikoblenz.fgbks.core.dmn.domain.ids.DecisionTableId;
+import de.unikoblenz.fgbks.core.dmn.domain.ids.DefinitionId;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.RuleId;
 import java.util.List;
 import java.util.stream.Collectors;
 import org.camunda.bpm.model.dmn.HitPolicy;
 
+/**
+ * The decision table contains a list of {@link VDmnColumn}s ({@link VDmnInputColumn}s and {@link
+ * VDmnOutputColumn}s) and all {@link VDmnRule}s of the table.
+ */
 public interface VDmnDecisionTable extends VDmnElement {
 
+  /**
+   * Get the {@link VDmnDecision} of the decision table.
+   *
+   * @return the {@link VDmnDecision}
+   */
   VDmnDecision getDmnDecision();
 
+  /**
+   * Get the {@link HitPolicy} of the decision table.
+   *
+   * @return the {@link HitPolicy}
+   */
   HitPolicy getHitPolicy();
 
+  /**
+   * Get all {@link VDmnOutputColumn}s of the decision table.
+   *
+   * @return a list of {@link VDmnOutputColumn}s
+   */
   List<VDmnOutputColumn> getOutputColumns();
 
+  /**
+   * Get all {@link VDmnInputColumn}s of the decision table.
+   *
+   * @return a list of {@link VDmnInputColumn}s
+   */
   List<VDmnInputColumn> getInputColumns();
 
+  /**
+   * Get all {@link VDmnRule}s of the decision table.
+   *
+   * @return a list of {@link VDmnRule}s
+   */
   List<VDmnRule> getRules();
 
+  /**
+   * Get all {@link RuleId}s of the decision table.
+   *
+   * @return a list of {@link RuleId}s
+   */
   default List<RuleId> getRulesIds() {
     return getRules().stream()
         .map(VDmnRule::getRuleId)
         .collect(Collectors.toList()); // TODO optimize (e.g. cache)
   }
 
+  /**
+   * Get the {@link DecisionTableId}.
+   *
+   * @return the {@link DecisionTableId}
+   */
   default DecisionTableId getDecisionTableId() {
     return (DecisionTableId) getId();
   }
 
+  /**
+   * Get the {@link DefinitionId}.
+   *
+   * @return the {@link DefinitionId}
+   */
   default VDmnDefinition getDmnDefinition() {
     return getDmnDecision().getDmnDefinition();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDefinition.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDefinition.java
index a24691a0..e88ac224 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDefinition.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnDefinition.java
@@ -4,14 +4,40 @@ import de.unikoblenz.fgbks.core.dmn.domain.ids.AbstractId;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.DefinitionId;
 import java.util.List;
 
+/**
+ * The definition is the root element for a dmn table and contains all {@link VDmnDecision}s and all
+ * {@link VDmnInputData}. Furthermore, all elements of the dmn table can be accessed with {@link
+ * VDmnDefinition#getElementById}.
+ */
 public interface VDmnDefinition extends VDmnElement {
 
+  /**
+   * Get the list of {@link VDmnDecision}s.
+   *
+   * @return the list of {@link VDmnDecision}s
+   */
   List<VDmnDecision> getDmnDecisions();
 
+  /**
+   * Get the list of {@link VDmnInputData}s.
+   *
+   * @return the list of {@link VDmnInputData}s
+   */
   List<VDmnInputData> getDmnInputData();
 
+  /**
+   * Get the vdmn element with the given id.
+   *
+   * @param id the {@link AbstractId} of the element
+   * @return the {@link VDmnElement}, or null, if the element was not found
+   */
   VDmnElement getElementById(AbstractId id);
 
+  /**
+   * Get the {@link DefinitionId}.
+   *
+   * @return the {@link DefinitionId}
+   */
   default DefinitionId getDefinitionId() {
     return (DefinitionId) getId();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnElement.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnElement.java
index 2af31868..cc013b71 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnElement.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnElement.java
@@ -2,6 +2,16 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn;
 
 import de.unikoblenz.fgbks.core.dmn.domain.ids.AbstractId;
 
+/**
+ * A abstract interface for all vdmn elements. All elements contains an id, so this interface only
+ * provides a function for this id.
+ */
 public interface VDmnElement {
+
+  /**
+   * Get the {@link AbstractId}.
+   *
+   * @return the {@link AbstractId}
+   */
   AbstractId getId();
 }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputColumn.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputColumn.java
index be658b47..931665bf 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputColumn.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputColumn.java
@@ -4,20 +4,39 @@ import de.unikoblenz.fgbks.core.dmn.domain.ids.InputExpressionId;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.InputId;
 import java.util.List;
 
+/**
+ * This interface represents a input column in a {@link VDmnDecisionTable}. A column contains a list
+ * of {@link VDmnInputValue}s.
+ */
 public interface VDmnInputColumn extends VDmnColumn {
 
   // For future work:
   // List<VDmnInputColumn> getConnectedOutputColumns();
   // List<VDmnNode> getConnectedNodes();
 
+  /**
+   * Get the {@link InputExpressionId}.
+   *
+   * @return the {@link InputExpressionId}
+   */
   default InputExpressionId getInputExpressionId() {
     return (InputExpressionId) getId();
   }
 
+  /**
+   * Get the {@link InputId}.
+   *
+   * @return the {@link InputId}
+   */
   default InputId getInputId() {
     return (InputId) getColumnId();
   }
 
+  /**
+   * Get a list of {@link VDmnInputValue}s.
+   *
+   * @return the list of {@link VDmnInputValue}s
+   */
   default List<VDmnInputValue> getInputValues() {
     return (List<VDmnInputValue>) (List<?>) getValues();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputData.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputData.java
index 9644b676..748f6d7b 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputData.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputData.java
@@ -2,9 +2,17 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn;
 
 import de.unikoblenz.fgbks.core.dmn.domain.ids.InputDataId;
 
+/**
+ * A input data node is a information providing information object for {@link VDmnDecision}s.
+ */
 public interface VDmnInputData extends VDmnNode {
 
-  default InputDataId getDecisionId() {
+  /**
+   * Get the {@link InputDataId}.
+   *
+   * @return the {@link InputDataId}
+   */
+  default InputDataId getInputDataId() {
     return (InputDataId) getId();
   }
 }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputValue.java
index 03834434..6b5e8ff7 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputValue.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnInputValue.java
@@ -3,14 +3,33 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn;
 import de.unikoblenz.fgbks.base.utils.boundary.Boundary;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.InputEntryId;
 
+/**
+ * This interface represents a single input value (or cell) in a {@link VDmnDecisionTable}. This is
+ * a {@link VDmnValue}.
+ */
 public interface VDmnInputValue extends VDmnValue {
 
+  /**
+   * Get the {@link Boundary} instance of the value.
+   *
+   * @return the {@link Boundary} instance of the value
+   */
   Boundary getBoundary();
 
+  /**
+   * Get the {@link InputEntryId}.
+   *
+   * @return the {@link InputEntryId}
+   */
   default InputEntryId getInputEntryId() {
     return (InputEntryId) getId();
   }
 
+  /**
+   * Get the {@link VDmnInputColumn}.
+   *
+   * @return the {@link VDmnInputColumn}
+   */
   default VDmnInputColumn getDmnInputColumn() {
     return (VDmnInputColumn) getDmnColumn();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnNode.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnNode.java
index 1df073a1..e1be6f7a 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnNode.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnNode.java
@@ -4,11 +4,31 @@ import de.unikoblenz.fgbks.base.domain.Name;
 import java.util.List;
 import java.util.Optional;
 
+/**
+ * This interface represents a node on DRD level. A node can either be a {@link VDmnDecision} or a
+ * {@link VDmnInputData} node.
+ */
 public interface VDmnNode extends VDmnElement {
 
+  /**
+   * Get the {@link VDmnDefinition}.
+   *
+   * @return the {@link VDmnDefinition}
+   */
   VDmnDefinition getDmnDefinition();
 
+  /**
+   * Get a list of {@link VDmnDecision}s, which has this current node as information requirement.
+   * See also {@link VDmnDecision#getDmnInformationRequirements()}.
+   *
+   * @return a list of {@link VDmnDecision}s
+   */
   List<VDmnDecision> getInformationProvidingDecisions();
 
+  /**
+   * Get the name of the node, if present.
+   *
+   * @return an optional {@link Name}
+   */
   Optional<Name> getName();
 }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputColumn.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputColumn.java
index 3204023c..c0630bef 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputColumn.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputColumn.java
@@ -3,16 +3,30 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.OutputId;
 import java.util.List;
 
+/**
+ * This interface represents a output column in a {@link VDmnDecisionTable}. A column contains a
+ * list of {@link VDmnOutputValue}s.
+ */
 public interface VDmnOutputColumn extends VDmnColumn {
 
-  // For future work:
+  // TODO: For future work:
   // List<VDmnInputColumn> getConnectedInputColumns();
   // List<VDmnNode> getConnectedNodes();
 
+  /**
+   * Get the {@link OutputId} of the column.
+   *
+   * @return the {@link OutputId}.
+   */
   default OutputId getOutputId() {
     return (OutputId) getColumnId();
   }
 
+  /**
+   * Get the list of {@link VDmnOutputValue} of the column.
+   *
+   * @return the list of {@link VDmnOutputValue}.
+   */
   default List<VDmnOutputValue> getDmnOutputValues() {
     return (List<VDmnOutputValue>) (List<?>) getValues();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputValue.java
index 06707f9e..6a856f4f 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputValue.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnOutputValue.java
@@ -2,12 +2,26 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn;
 
 import de.unikoblenz.fgbks.core.dmn.domain.ids.OutputEntryId;
 
+/**
+ * This interface represents a single output value (or cell) in a {@link VDmnDecisionTable}. This is
+ * a {@link VDmnValue}.
+ */
 public interface VDmnOutputValue extends VDmnValue {
 
+  /**
+   * Get the {@link OutputEntryId}.
+   *
+   * @return the {@link OutputEntryId}.
+   */
   default OutputEntryId getOutputEntryId() {
     return (OutputEntryId) getId();
   }
 
+  /**
+   * Get the {@link VDmnOutputColumn}.
+   *
+   * @return the {@link VDmnOutputColumn}.
+   */
   default VDmnOutputColumn getDmnOutputColumn() {
     return (VDmnOutputColumn) getDmnColumn();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnRule.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnRule.java
index 5b896bd1..7bde779a 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnRule.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnRule.java
@@ -4,24 +4,63 @@ import de.unikoblenz.fgbks.core.dmn.domain.common.RowNumber;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.RuleId;
 import java.util.List;
 
+/**
+ * This interface represents a single rule (or row) in a {@link VDmnDecisionTable}. A rule contains
+ * a list of {@link VDmnInputValue}s and a list of {@link VDmnOutputValue}s.
+ */
 public interface VDmnRule extends VDmnElement {
 
+  /**
+   * Get the {@link RowNumber} of the rule inside the dmn table.
+   *
+   * @return the {@link RowNumber}.
+   */
   RowNumber getRowNumber();
 
+  /**
+   * Get the {@link VDmnDecisionTable}.
+   *
+   * @return the {@link VDmnDecisionTable}.
+   */
   VDmnDecisionTable getDmnDecisionTable();
 
+  /**
+   * Get a list of {@link VDmnInputValue}s.
+   *
+   * @return the list of {@link VDmnInputValue}
+   */
   List<VDmnInputValue> getDmnInputValues();
 
+  /**
+   * Get a list of {@link VDmnOutputValue}s.
+   *
+   * @return the list of {@link VDmnOutputValue}
+   */
   List<VDmnOutputValue> getDmnOutputValues();
 
+  /**
+   * Get the {@link RuleId} of the {@link VDmnRule}.
+   *
+   * @return the {@link RuleId}.
+   */
   default RuleId getRuleId() {
     return (RuleId) getId();
   }
 
+  /**
+   * Get the {@link VDmnDecision}.
+   *
+   * @return the {@link VDmnDecision}.
+   */
   default VDmnDecision getDmnDecision() {
     return getDmnDecisionTable().getDmnDecision();
   }
 
+  /**
+   * Get the {@link VDmnDefinition}.
+   *
+   * @return the {@link VDmnDefinition}.
+   */
   default VDmnDefinition getDmnDefinition() {
     return getDmnDecision().getDmnDefinition();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnValue.java
index 2f65a09a..cf33286d 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnValue.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VDmnValue.java
@@ -11,60 +11,145 @@ import de.unikoblenz.fgbks.core.dmn.domain.ids.RuleId;
 import java.util.List;
 import java.util.Optional;
 
+/**
+ * This interface represents a single value (or cell) in a {@link VDmnDecisionTable}. It can either
+ * be a {@link VDmnInputValue} (in a {@link VDmnInputColumn}) or a {@link VDmnOutputValue} (in a
+ * {@link VDmnOutputColumn}). Furthermore each value exists in one {@link VDmnRule}.
+ */
 public interface VDmnValue extends VDmnElement {
 
+  /**
+   * Get the {@link VDmnRule} of the value.
+   *
+   * @return the {@link VDmnRule}
+   */
   VDmnRule getDmnRule();
 
+  /**
+   * Get the original text of the value.
+   *
+   * @return the {@link Text}
+   */
   Text getText();
 
+  /**
+   * Get the description, if present.
+   *
+   * @return the {@link Description} as optional
+   */
   Optional<Description> getDescription();
 
+  /**
+   * Get the column of the value. Can be a {@link VDmnInputColumn} or a {@link VDmnOutputColumn}.
+   *
+   * @return the {@link VDmnColumn}
+   */
   VDmnColumn getDmnColumn();
 
+  /**
+   * Get the possible string values, which are defined in {@link VDmnColumn#getPredefinedValues()}.
+   *
+   * @return an optional list of string values.
+   */
   default Optional<List<StringValue>> getPossiblePredefinedValues() {
     return getDmnColumn().getPredefinedValues();
   }
 
+  /**
+   * Get the {@link DefinitionId} of the {@link VDmnDefinition}.
+   *
+   * @return the {@link DefinitionId}.
+   */
   default DefinitionId getDefinitionId() {
     return getDmnDefinition().getDefinitionId();
   }
 
+  /**
+   * Get the {@link DecisionId} of the {@link VDmnDecision}.
+   *
+   * @return the {@link DecisionId}.
+   */
   default DecisionId getDecisionId() {
     return getDmnDecision().getDecisionId();
   }
 
+  /**
+   * Get the {@link DecisionTableId} of the {@link VDmnDecisionTable}.
+   *
+   * @return the {@link DecisionTableId}.
+   */
   default DecisionTableId getDecisionTableId() {
     return getDmnDecisionTable().getDecisionTableId();
   }
 
+  /**
+   * Get the {@link VTypeRef} of the {@link VDmnColumn}.
+   *
+   * @return the {@link VTypeRef}.
+   */
   default VTypeRef getTypeRef() {
     return getDmnColumn().getTypeRef();
   }
 
+  /**
+   * Get the {@link RuleId} of the {@link VDmnRule}.
+   *
+   * @return the {@link RuleId}.
+   */
   default RuleId getRuleId() {
     return getDmnRule().getRuleId();
   }
 
+  /**
+   * Get the {@link RowNumber} of the {@link VDmnRule}.
+   *
+   * @return the {@link RowNumber}.
+   */
   default RowNumber getRowNumber() {
     return getDmnRule().getRowNumber();
   }
 
+  /**
+   * Get a boolean, which determines, if the value is a input value.
+   *
+   * @return true, if the value is a input value
+   */
   default boolean isInputValue() {
     return getDmnColumn() instanceof VDmnInputColumn;
   }
 
+  /**
+   * Get a boolean, which determines, if the value is a output value.
+   *
+   * @return true, if the value is a output value
+   */
   default boolean isOutputValue() {
     return getDmnColumn() instanceof VDmnOutputColumn;
   }
 
+  /**
+   * Get the {@link VDmnDecisionTable}.
+   *
+   * @return the {@link VDmnDecisionTable}.
+   */
   default VDmnDecisionTable getDmnDecisionTable() {
     return getDmnColumn().getDmnDecisionTable();
   }
 
+  /**
+   * Get the {@link VDmnDecision}.
+   *
+   * @return the {@link VDmnDecision}.
+   */
   default VDmnDecision getDmnDecision() {
     return getDmnDecisionTable().getDmnDecision();
   }
 
+  /**
+   * Get the {@link VDmnDefinition}.
+   *
+   * @return the {@link VDmnDefinition}.
+   */
   default VDmnDefinition getDmnDefinition() {
     return getDmnDecision().getDmnDefinition();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VTypeRef.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VTypeRef.java
index 9852ee94..fa9457f0 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VTypeRef.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/VTypeRef.java
@@ -46,7 +46,7 @@ public enum VTypeRef {
   private Class<? extends Boundary> boundaryClass;
 
   /**
-   * Get the {@link VTypeRef} with the given name or {@link null}, if no VTypeRef was found with the
+   * Get the {@link VTypeRef} with the given name or null, if no VTypeRef was found with the
    * given name.
    *
    * @param name the name as String
@@ -62,7 +62,7 @@ public enum VTypeRef {
   }
 
   /**
-   * Get the {@link VTypeRef} with the given java {@link Class} or {@link null}, if no VTypeRef was
+   * Get the {@link VTypeRef} with the given java {@link Class} or null, if no VTypeRef was
    * found with the given java {@link Class}.
    *
    * @param javaClass java {@link Class}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnColumnImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnColumnImpl.java
index 2691821c..904168d8 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnColumnImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnColumnImpl.java
@@ -12,6 +12,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
+/**
+ * Implementation of {@link VDmnColumn}
+ */
 public abstract class AbstractVDmnColumnImpl extends AbstractVDmnElement implements VDmnColumn {
 
   protected VDmnDecisionTable dmnDecisionTable;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnElement.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnElement.java
index 76c8060f..25cdced1 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnElement.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnElement.java
@@ -3,6 +3,9 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn.impl;
 import de.unikoblenz.fgbks.core.dmn.domain.ids.AbstractId;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnElement;
 
+/**
+ * Implementation of {@link VDmnElement}
+ */
 public abstract class AbstractVDmnElement implements VDmnElement {
 
   protected AbstractId id;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnNode.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnNode.java
index f026fadb..acfe2d32 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnNode.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnNode.java
@@ -9,6 +9,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
+/**
+ * Implementation of {@link VDmnNode}
+ */
 public abstract class AbstractVDmnNode extends AbstractVDmnElement implements VDmnNode {
 
   protected VDmnDefinition dmnDefinition;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnValue.java
index 15c3db36..f1b29b46 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnValue.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/AbstractVDmnValue.java
@@ -7,6 +7,9 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnRule;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnValue;
 import java.util.Optional;
 
+/**
+ * Implementation of {@link VDmnValue}
+ */
 public abstract class AbstractVDmnValue extends AbstractVDmnElement implements VDmnValue {
 
   protected VDmnRule dmnRule;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionImpl.java
index 2563bf01..21f0a5ff 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionImpl.java
@@ -11,6 +11,9 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnDecision}
+ */
 public class VDmnDecisionImpl extends AbstractVDmnNode implements VDmnDecision {
 
   private VDmnDecisionTable dmnDecisionTable;
@@ -31,6 +34,11 @@ public class VDmnDecisionImpl extends AbstractVDmnNode implements VDmnDecision {
     return dmnDecisionTable;
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnDecisionImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionTableImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionTableImpl.java
index a745aa11..f472dfa1 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionTableImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDecisionTableImpl.java
@@ -12,6 +12,9 @@ import java.util.List;
 import org.apache.commons.lang3.Validate;
 import org.camunda.bpm.model.dmn.HitPolicy;
 
+/**
+ * Implementation of {@link VDmnDecisionTable}
+ */
 public class VDmnDecisionTableImpl extends AbstractVDmnElement implements VDmnDecisionTable {
 
   private VDmnDecision dmnDecision;
@@ -21,6 +24,7 @@ public class VDmnDecisionTableImpl extends AbstractVDmnElement implements VDmnDe
   private List<VDmnRule> dmnRules;
 
   private VDmnDecisionTableImpl() {
+    super();
     dmnOutputColumns = new ArrayList<>();
     dmnInputColumns = new ArrayList<>();
     dmnRules = new ArrayList<>();
@@ -51,6 +55,11 @@ public class VDmnDecisionTableImpl extends AbstractVDmnElement implements VDmnDe
     return Collections.unmodifiableList(dmnRules);
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnDecisionTableImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDefinitionImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDefinitionImpl.java
index 498a157a..6657a616 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDefinitionImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnDefinitionImpl.java
@@ -14,6 +14,9 @@ import java.util.List;
 import java.util.Map;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnDefinition}.
+ */
 public class VDmnDefinitionImpl extends AbstractVDmnElement implements VDmnDefinition {
 
   private List<VDmnDecision> dmnDecisions;
@@ -21,6 +24,7 @@ public class VDmnDefinitionImpl extends AbstractVDmnElement implements VDmnDefin
   private Map<AbstractId, VDmnElement> elements;
 
   private VDmnDefinitionImpl() {
+    super();
     dmnDecisions = new ArrayList<>();
     dmnInputData = new ArrayList<>();
     elements = new HashMap<>();
@@ -41,6 +45,11 @@ public class VDmnDefinitionImpl extends AbstractVDmnElement implements VDmnDefin
     return elements.get(Validate.notNull(id));
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnDefinitionImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputColumnImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputColumnImpl.java
index ea1b3a0c..30f6aeff 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputColumnImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputColumnImpl.java
@@ -11,6 +11,9 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnInputValue;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnInputColumn}.
+ */
 public class VDmnInputColumnImpl extends AbstractVDmnColumnImpl implements VDmnInputColumn {
 
   private InputExpressionId inputExpressionId;
@@ -19,6 +22,11 @@ public class VDmnInputColumnImpl extends AbstractVDmnColumnImpl implements VDmnI
     super();
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnInputColumnImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputDataImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputDataImpl.java
index fa02c88a..6556a384 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputDataImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputDataImpl.java
@@ -7,12 +7,20 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnDefinition;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnInputData;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnInputData}.
+ */
 public class VDmnInputDataImpl extends AbstractVDmnNode implements VDmnInputData {
 
   private VDmnInputDataImpl() {
     super();
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnInputDataImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueChangeableImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueChangeableImpl.java
index 6108f4b4..b04f5844 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueChangeableImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueChangeableImpl.java
@@ -1,8 +1,12 @@
 package de.unikoblenz.fgbks.core.dmn.domain.vdmn.impl;
 
 import de.unikoblenz.fgbks.base.utils.boundary.Boundary;
+import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnInputValue;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnInputValue}. Create a input value with changeable boundaries.
+ */
 public class VDmnInputValueChangeableImpl extends VDmnInputValueImpl {
 
   public VDmnInputValueChangeableImpl(VDmnInputValueImpl inputValue) {
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueImpl.java
index bbc0cc30..1183d9af 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnInputValueImpl.java
@@ -9,14 +9,15 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnInputValue;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnRule;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnInputValue}.
+ */
 public class VDmnInputValueImpl extends AbstractVDmnValue implements VDmnInputValue {
 
   protected Boundary boundary;
 
-  protected VDmnInputValueImpl() {}
-
-  public static Builder getBuilder() {
-    return new VDmnInputValueImpl().new Builder();
+  protected VDmnInputValueImpl() {
+    super();
   }
 
   @Override
@@ -24,6 +25,15 @@ public class VDmnInputValueImpl extends AbstractVDmnValue implements VDmnInputVa
     return boundary;
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
+  public static Builder getBuilder() {
+    return new VDmnInputValueImpl().new Builder();
+  }
+
   public class Builder extends AbstractDmnElementBuilder<VDmnInputValueImpl> {
 
     public Builder withDmnRule(VDmnRule dmnRule) {
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputColumnImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputColumnImpl.java
index 79a22777..80c00224 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputColumnImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputColumnImpl.java
@@ -10,12 +10,20 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnOutputValue;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnOutputColumn}.
+ */
 public class VDmnOutputColumnImpl extends AbstractVDmnColumnImpl implements VDmnOutputColumn {
 
   private VDmnOutputColumnImpl() {
     super();
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnOutputColumnImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputValueImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputValueImpl.java
index 1eaba8a7..27465226 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputValueImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnOutputValueImpl.java
@@ -8,10 +8,20 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnOutputValue;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnRule;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnOutputValue}.
+ */
 public class VDmnOutputValueImpl extends AbstractVDmnValue implements VDmnOutputValue {
 
-  private VDmnOutputValueImpl() {}
+  private VDmnOutputValueImpl() {
+    super();
+  }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnOutputValueImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleChangeableImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleChangeableImpl.java
index 3179702c..3b00d467 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleChangeableImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleChangeableImpl.java
@@ -2,8 +2,12 @@ package de.unikoblenz.fgbks.core.dmn.domain.vdmn.impl;
 
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnInputValue;
 import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnOutputValue;
+import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnRule;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnRule}. Create a rule, which has changeable values
+ */
 public class VDmnRuleChangeableImpl extends VDmnRuleImpl {
 
   public VDmnRuleChangeableImpl(VDmnRuleImpl rule) {
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleImpl.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleImpl.java
index 24a57780..5ffc67ed 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleImpl.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/impl/VDmnRuleImpl.java
@@ -11,6 +11,9 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.commons.lang3.Validate;
 
+/**
+ * Implementation of {@link VDmnRule}.
+ */
 public class VDmnRuleImpl extends AbstractVDmnElement implements VDmnRule {
 
   protected RowNumber rowNumber;
@@ -43,6 +46,11 @@ public class VDmnRuleImpl extends AbstractVDmnElement implements VDmnRule {
     return Collections.unmodifiableList(outputValues);
   }
 
+  /**
+   * Get a new instance of a builder.
+   *
+   * @return a new builder instance
+   */
   public static Builder getBuilder() {
     return new VDmnRuleImpl().new Builder();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/parser/SimpleVDmnParser.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/parser/SimpleVDmnParser.java
index e953cc66..7ad51898 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/parser/SimpleVDmnParser.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/vdmn/parser/SimpleVDmnParser.java
@@ -41,12 +41,13 @@ import org.camunda.bpm.model.dmn.instance.Output;
 import org.camunda.bpm.model.dmn.instance.OutputEntry;
 import org.camunda.bpm.model.dmn.instance.Rule;
 
+/**
+ * Simple Vdmn parser parse the {@link DmnModelInstance} to a {@link VDmnDefinition}
+ */
 @ApplicationScoped
 public class SimpleVDmnParser implements DmnModelInstanceWrapper {
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public VDmnDefinition getVDmnDefinition(DmnModelInstance dmnModel) {
     // Get the definition
-- 
GitLab