diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalRuleVerifier.java similarity index 94% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalVerifier.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalRuleVerifier.java index 1f4a0a6ec70bb022bf5de50dd26c483ed1fa4e8e..607f8b2f495dbbe113cf3b164d4a83d73df0ad36 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalRuleVerifier.java @@ -16,14 +16,14 @@ import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry. import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntryElement; import de.unikoblenz.fgbks.core.dmn.verification.verifier.AbstractVerifier; import de.unikoblenz.fgbks.core.dmn.verification.verifier.DmnVerifier; -import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.IdenticalBusinessRuleVerification; +import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.IdenticalRuleVerification; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; -@DmnVerifier(verifierType = IdenticalBusinessRuleVerification.class) -public class IdenticalVerifier extends AbstractVerifier { +@DmnVerifier(verifierType = IdenticalRuleVerification.class) +public class IdenticalRuleVerifier extends AbstractVerifier { @Override protected void doVerification() { @@ -51,7 +51,7 @@ public class IdenticalVerifier extends AbstractVerifier { vreFactory.addToEntry( VerificationClassification.WARNING, templateDecision(dmnDecisionTable.getDmnDecision()) - + "Rules %s have identical input.", + + "Rules %s have identical inputs.", getRulesRowsStrings(currentRules)); } else { List<VDmnInputValue> curInVals = new ArrayList<>(); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/DateVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/DateVerification.java index 64ea2417a3c1373bbff9487170f984cdf176a169..e98bda4e11a1e7f288bb6c11689947452ca5c2bb 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/DateVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/DateVerification.java @@ -15,7 +15,9 @@ public class DateVerification extends AbstractVerificationType { super( new Name("DateFormatVerification"), new Name("Date Format Check"), - new Description("test")); // TODO + new Description( + "This verification checks the correctness of the date format for all date entries. " + + "Each date should be in the format \"data and time(yyyy-MM-ddThH:mm:ss)\".")); } public static DateVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EmptyOutputVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EmptyOutputVerification.java index 842123728b944f2cbaecb3f9984b164b55fcff76..d370feb836a9e72d64f8fc3913afb08367091d2b 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EmptyOutputVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EmptyOutputVerification.java @@ -15,7 +15,7 @@ public class EmptyOutputVerification extends AbstractVerificationType { super( new Name("EmptyOutputVerification"), new Name("Empty Output"), - new Description("test")); // TODO + new Description("Detection rules with an empty output values.")); } public static EmptyOutputVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EquivalentStringVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EquivalentStringVerification.java index 90803b7eb3f5df8f87324ecbcace54910425a0aa..7813aa61a1ac12e2d4b42482dca1dbcf664e2c81 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EquivalentStringVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EquivalentStringVerification.java @@ -15,7 +15,12 @@ public class EquivalentStringVerification extends AbstractVerificationType { super( new Name("EquivalentStringVerification"), new Name("Equivalent Strings"), - new Description("test")); // TODO + new Description( + "Detecting rules which are not identical, " + + "but still semantically equivalent. " + + "Here, the verifier checks if there exist multiple rules " + + "which use synonyms as inputs and are therefore equivalent, " + + "based on synonym relations via Wordnet.")); } public static EquivalentStringVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalRuleVerification.java similarity index 56% rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalRuleVerification.java index 749bd5b0dd06f77a8013876d58634f3b636f1602..81be13f645b5854d98c7e8e5390e681f7f40cb31 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalRuleVerification.java @@ -7,16 +7,19 @@ import de.unikoblenz.fgbks.core.dmn.verification.verifier.classification.Decisio import javax.validation.constraints.NotNull; @Type -public class IdenticalBusinessRuleVerification extends AbstractVerificationType { +public class IdenticalRuleVerification extends AbstractVerificationType { - private static final IdenticalBusinessRuleVerification instance = - new IdenticalBusinessRuleVerification(); + private static final IdenticalRuleVerification instance = new IdenticalRuleVerification(); - private IdenticalBusinessRuleVerification() { - super(new Name("Identical Rules"), new Description("test")); // TODO + private IdenticalRuleVerification() { + super( + new Name("Identical Rules"), + new Description( + "Detecting rules which have an identical input, " + + "i.e. are redundant.")); } - public static IdenticalBusinessRuleVerification getInstance() { + public static IdenticalRuleVerification getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/InputValueSyntaxVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/InputValueSyntaxVerification.java index a4112152d1eccbcd449a5f74c33cb77cfb8a4b9d..d93e886a298783ee3f53f35df477aef2d94b9aaa 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/InputValueSyntaxVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/InputValueSyntaxVerification.java @@ -15,7 +15,9 @@ public class InputValueSyntaxVerification extends AbstractVerificationType { super( new Name("InputValueSyntaxVerification"), new Name("Input Value Syntax Check"), - new Description("Check values for syntactical correctness.")); + new Description( + "This verification checks the correctness of the input formats for all input entries. " + + "They should have no syntax errors. ")); } public static InputValueSyntaxVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/LonelyDataInputVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/LonelyDataInputVerification.java index f4a03689c663dc915cbbe823933090b2d83fff76..e78211ceea767b9d634e0a669178bf0d26f77cf1 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/LonelyDataInputVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/LonelyDataInputVerification.java @@ -16,7 +16,8 @@ public class LonelyDataInputVerification extends AbstractVerificationType { new Name("LonelyDataInputVerification"), new Name("Lonely Data Input"), new Description( - "Checks for any input data node, if it has no connection to at least one decision table.")); + "Detection input data nodes," + + " which has no connection to at least one decision table.")); } public static LonelyDataInputVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputColumnVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputColumnVerification.java index 6a5ce32fc2d841bf68fd0c1d283b371edefff137..b7c2275262ac7ab538191190b44c2f19ba408551 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputColumnVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputColumnVerification.java @@ -16,7 +16,10 @@ public class MissingInputColumnVerification extends AbstractVerificationType { super( new Name("MissingInputColumnVerification"), new Name("Missing Input Column"), - new Description("todo")); // TODO + new Description( + "Detecting for all decisions and input data nodes " + + "if their output names are found in the corresponding input columns " + + "of the connected decision.")); } public static MissingInputColumnVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputDataVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputDataVerification.java index 64cdb7a1a13065a101ded20df616a3cd3652c205..b1879e06c688d8ebca014a7f21799f519c0fe2e7 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputDataVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputDataVerification.java @@ -9,15 +9,15 @@ import javax.validation.constraints.NotNull; @Type public class MissingInputDataVerification extends AbstractVerificationType { - private static final MissingInputDataVerification instance = - new MissingInputDataVerification(); + private static final MissingInputDataVerification instance = new MissingInputDataVerification(); private MissingInputDataVerification() { super( new Name("MissingInputDataVerification"), new Name("Missing Input Data"), new Description( - "todo")); // TODO + "Detecting columns which has no reference to either a input node " + + "or a decision node with a corresponding output column.")); } public static MissingInputDataVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingRuleVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingRuleVerification.java index 7143891d88502d879f063fbcb2e2c6e2e862480f..04e2a134671061ec49aee3b015df33099292c3c3 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingRuleVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingRuleVerification.java @@ -15,7 +15,8 @@ public class MissingRuleVerification extends AbstractVerificationType { super( new Name("MissingRuleVerification"), new Name("Missing Rule"), - new Description("test")); // TODO + new Description("Detecting whether there are any missing business rules, " + + "i.e. if there are rules missing for expected inputs.")); } public static MissingRuleVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/OverlappingVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/OverlappingVerification.java index c46f899de87d925b17292dcde594811269f8a2b6..cab8943659105ffc24cdf2c397e5b14ffc4a8331 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/OverlappingVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/OverlappingVerification.java @@ -15,7 +15,8 @@ public class OverlappingVerification extends AbstractVerificationType { super( new Name("OverlappingVerification"), new Name("Overlapping Rules"), - new Description("test")); // TODO + new Description("Detecting whether there are any overlaps in rule conditions. " + + "This verifier does not show identical, overlaps or subsumptions.")); } public static OverlappingVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PartialReductionVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PartialReductionVerification.java index 16f050f857f3d76a39d269ed56a0f2504c254222..f210e04a976d4bb14be53c2ba05febcffb898679 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PartialReductionVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PartialReductionVerification.java @@ -15,7 +15,7 @@ public class PartialReductionVerification extends AbstractVerificationType { super( new Name("PartialReductionVerification"), new Name("Partial Reductions"), - new Description("test")); // TODO + new Description("Checking whether ranges can be combined to simplify decision tables.")); } public static PartialReductionVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedExistingValueVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedExistingValueVerification.java index f8b941b013911ebf6dd8b95ae09160692849e855..c7132b0e67d5ea2d7f5b03debd62a23e5bb563ee 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedExistingValueVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedExistingValueVerification.java @@ -16,8 +16,8 @@ public class PredefinedExistingValueVerification extends AbstractVerificationTyp new Name("PredefinedExistingValueVerification"), new Name("Predefined Existing Values"), new Description( - "Es gibt in einer Tabellen-Zelle einen String Value, der aber nicht in der Liste der " - + "Predefines Values vorgesehen ist.")); // TODO englisch + "Detecting string values, " + + "which are not defined in list of predefined values of the column.")); } public static PredefinedExistingValueVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedMissingValueVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedMissingValueVerification.java index 803cc04aee026f7324ce36099b448bf608a4c386..622177f39f84fd450063f6b39cf518e12d33f991 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedMissingValueVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedMissingValueVerification.java @@ -17,7 +17,8 @@ public class PredefinedMissingValueVerification extends AbstractVerificationType new Name("PredefinedMissingValueVerification"), new Name("Predefined Missing Values"), new Description( - "Es gibt in einer Tabellen-Zelle predefines values, die jedoch nicht in der spalte vorhanden sind.")); // TODO englisch + "Detecting predefined string values of a column, " + + "which itself are not used in the column.")); } public static PredefinedMissingValueVerification getInstance() { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/SubsumptionVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/SubsumptionVerification.java index f62160003aa2cb23a8145fa58114a3f20c15416e..d68101d933594556a8e7be53689ae4cd04858d44 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/SubsumptionVerification.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/SubsumptionVerification.java @@ -15,7 +15,11 @@ public class SubsumptionVerification extends AbstractVerificationType { super( new Name("SubsumptionVerification"), new Name("Rule Subsumptions"), - new Description("test")); // TODO + new Description( + "Detecting individual rules which are subsumed by other rules," + + " i.e. they are not necessary." + + " For example, rules containing wildcards often render more specific" + + " rules unnecessary due to subsumption.")); } public static SubsumptionVerification getInstance() { diff --git a/dmnverifierapi/verifier.md b/dmnverifierapi/verifier.md index 662a9615ec81607291b1e5442d8bd2b50d99ed77..995bc297086609dadea1e39f66993213c5f51443 100644 --- a/dmnverifierapi/verifier.md +++ b/dmnverifierapi/verifier.md @@ -13,7 +13,7 @@ - Verifier: [LonelyDataInputVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/LonelyDataInputVerifier.java) #### Description -Checks for any input data node, if it has **no** connection to at least one decision table. +Detection input data nodes, which has no connection to at least one decision table. #### Algorithm ``` @@ -33,6 +33,7 @@ doVerification (Definition d) { - Verifier: [MissingInputDataVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputDataVerifier.java) #### Description +Detecting columns which has no reference to either a input node or a decision node with a corresponding output column. #### Algorithm ``` @@ -44,6 +45,7 @@ TODO - Verifier: [MissingInputColumnVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputColumnVerifier.java) #### Description +Detecting for all decisions and input data nodes if their output names are found in the corresponding input columns of the connected decision. #### Algorithm ``` @@ -58,7 +60,7 @@ TODO - Verifier: [PredefinedExistingValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PredefinedExistingValueVerifier.java) #### Description -TODO +Detecting string values, which are not defined in list of predefined values of the column. #### Algorithm ``` @@ -70,7 +72,7 @@ TODO - Verifier: [PredefinedMissingValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PredefinedMissingValueVerifier.java) #### Description -TODO +Detecting predefined string values of a column, which itself are not used in the column. #### Algorithm ``` @@ -82,7 +84,7 @@ TODO - Verifier: [EmptyOutputVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/EmptyOutputVerifier.java) #### Description -This verification checks if a output entry is empty. +Detection rules with an empty output values." #### Algorithm ``` @@ -97,7 +99,7 @@ TODO - Verifier: [SubsumptionVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/SubsumptionVerifier.java) #### Description -TODO +Detecting individual rules which are subsumed by other rules, i.e. they are not necessary. For example, rules containing wildcards often render more specific rules unnecessary due to subsumption. #### Algorithm ``` @@ -109,7 +111,7 @@ TODO - Verifier: [PartialReductionVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PartialReductionVerifier.java) #### Description -TODO +Checking whether ranges can be combined to simplify decision tables. #### Algorithm ``` @@ -121,7 +123,7 @@ TODO - Verifier: [OverlappingVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/OverlappingVerifier.java) #### Description -TODO +Detecting whether there are any overlaps in rule conditions. This verifier does not show identical, overlaps or subsumptions. #### Algorithm ``` @@ -133,19 +135,19 @@ TODO - Verifier: [MissingRuleVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingRuleVerifier.java) #### Description -TODO +Detecting whether there are any missing business rules, i.e. if there are rules missing for expected inputs. #### Algorithm ``` TODO ``` -### Identical Business Rule Verification -- Type: [IdenticalBusinessRuleVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java) -- Verifier: [IdenticalVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalVerifier.java) +### Identical Rule Verification +- Type: [IdenticalRuleVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalRuleVerification.java) +- Verifier: [IdenticalRuleVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/IdenticalRuleVerifier.java) #### Description -TODO +Detecting rules which have an identical input, i.e. are redundant. #### Algorithm ``` @@ -157,7 +159,7 @@ TODO - Verifier: [EquivalentVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/EquivalentVerifier.java) #### Description -TODO +Detecting rules which are not identical, but still semantically equivalent. Here, the verifier checks if there exist multiple rules which use synonyms as inputs and are therefore equivalent, based on synonym relations via Wordnet. #### Algorithm ```