Skip to content
Snippets Groups Projects
verifier.md 9.53 KiB
Newer Older
Jonas Blatt's avatar
Jonas Blatt committed
# Verifier

## Overview 
- [Verification Classification (Group of verifier)](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/classification)
- [Verification Type (identification of verifier + name + description for single verifier)](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types)
- [Verifier (Concrete implementation)](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl)

## DRD Modeling Level Verification
- Classification: [DrdModelingLevelVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/classification/DrdModelingLevelVerification.java)

### Lonely Data Input Verification
- Type: [LonelyDataInputVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/LonelyDataInputVerification.java)
- Verifier: [LonelyDataInputVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/LonelyDataInputVerifier.java)

#### Description
Detection input data nodes, which has no connection to at least one decision table.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
doVerification (Definition d) {
    define rL as ResultList
    for each (InputNode i in d.getInputNodes()) {
        if (i.hasNoConnectedDecisionNodes()) {
            add i to rL
        }
    }
    return rL
}
```

### Missing Input Data Verification
- Type: [MissingInputDataVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputDataVerification.java)
- 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.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Missing Input Column Verification
- Type: [MissingInputColumnVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputColumnVerification.java)
- 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.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Multiple Input Data Verification
- Type: [MultipleInputDataVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MultipleInputDataVerification.java)
- Verifier: [MultipleInputDataVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MultipleInputDataVerifier.java)

#### Description
Detecting columns which has more than one input data (or output columns from decisions).

#### Algorithm
```
TODO
```

Jonas Blatt's avatar
Jonas Blatt committed
## Modeling Level Verification
- Classification: [ModelingLevelVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/classification/ModelingLevelVerification.java)

### Predefined Existing Value Verification
- Type: [PredefinedExistingValueVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedExistingValueVerification.java)
- Verifier: [PredefinedExistingValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PredefinedExistingValueVerifier.java)

#### Description
Detecting string values, which are not defined in list of predefined values of the column.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Predefined Missing Value Verification
- Type: [PredefinedMissingValueVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PredefinedMissingValueVerification.java)
- Verifier: [PredefinedMissingValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PredefinedMissingValueVerifier.java)

#### Description
Detecting predefined string values of a column, which itself are not used in the column.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Missing Input Value Verification
- Type: [MissingInputValueVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingInputValueVerification.java)
- Verifier: [MissingInputValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputValueVerifier.java)

#### Description
Detecting output values of output columns in decision tables which are not used in the connected decision table as input values.

#### Algorithm
```
TODO
```

### Missing Output Value Verification
- Type: [MissingOutputValueVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingOutputValueVerification.java)
- Verifier: [MissingOutputValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingOutputValueVerifier.java)

#### Description
Detecting input values of input columns in decision tables which are not defined in the connected decision table as output values.

#### Algorithm
```
TODO
```

Jonas Blatt's avatar
Jonas Blatt committed
### Empty Output Verification
- Type: [EmptyOutputVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EmptyOutputVerification.java)
- Verifier: [EmptyOutputVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/EmptyOutputVerifier.java)

#### Description
Detection rules with an empty output values."
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

## Decision Logic Level Verification
- Classification: [DecisionLogicLevelVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/classification/DecisionLogicLevelVerification.java)

### Subsumption Verification
- Type: [SubsumptionVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/SubsumptionVerification.java)
- Verifier: [SubsumptionVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/SubsumptionVerifier.java)

#### 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.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Partial Reduction Verification
- Type: [PartialReductionVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/PartialReductionVerification.java)
- Verifier: [PartialReductionVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PartialReductionVerifier.java)

#### Description
Checking whether ranges can be combined to simplify decision tables.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Overlapping Verification
- Type: [OverlappingVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/OverlappingVerification.java)
- Verifier: [OverlappingVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/OverlappingVerifier.java)

#### Description
Detecting  whether  there  are  any overlaps in rule conditions. This verifier does not show identical, overlaps or subsumptions.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Missing Rule Verification
- Type: [MissingRuleVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingRuleVerification.java)
- Verifier: [MissingRuleVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingRuleVerifier.java)

#### Description
Detecting whether there are any missing business rules, i.e. if there are rules missing for expected inputs.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### 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)
Jonas Blatt's avatar
Jonas Blatt committed

#### Description
Detecting rules which have an identical input, i.e. are redundant.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

### Equivalent String Verification
- Type: [EquivalentStringVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/EquivalentStringVerification.java)
- Verifier: [EquivalentVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/EquivalentVerifier.java)

#### 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.
Jonas Blatt's avatar
Jonas Blatt committed

#### Algorithm
```
TODO
```

## Syntax Level Verification
- Classification: [SyntaxLevelVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/classification/SyntaxLevelVerification.java)

### Date Format Verification
- Type: [DateVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/DateVerification.java)
- Verifier: [DateVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/DateVerifier.java)

#### 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)".

#### Algorithm
```
TODO
```

### Input Value Syntax Verification
- Type: [InputValueSyntaxVerification](/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/InputValueSyntaxVerification.java)
- Verifier: [InputValueSyntaxVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/InputValueSyntaxVerifier.java)

#### Description
This verification checks the correctness of the input formats for all input entries. They should have no syntax errors. 

For example: 
A numeric input value must have one of the following formats: 
- `= x`
- `<= x`
- `> x`
- `>= x`
- `[x..y]`
- `]x..y[`
- `[x..y[`
- `]x..y]`

#### Algorithm
```
TODO
```