Einzelnen Beitrag anzeigen

Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#1

Regeln zur Datenvalidierung sinnvoll formulieren

  Alt 21. Aug 2017, 16:34
Hallöle,

z.Zt. stehe ich vor einem Problem und sehe vllt. die Lösung vor lauter Bäumen nicht, daher meine Frage:

Mein Server bekommt vom Client eine Schlüssel-Wert-Liste zur Verarbeitung.

Diese Liste soll nun mithilfe folgender Vorgehensweise (syntaktisch und inhaltlich) validiert werden:
- Ein Satz von Regeln wird durchlaufen.
- Wenn ein Wert aus der Liste mithilfe einer der Regeln zu valide ausgewertet wurde, so soll dieses Prüfergebnis in einer Lookup-Table gespeichert werden, damit für diesen Wert nicht später nocheinmal die Validierungsregel abgearbeitet werden braucht.


Nun ist aber die Frage, wie ich die Regeln formuliere, insb. um so wenig wie möglich von der Reihenfolge der Abarbeitung der Regeln abhängig zu sein.


Beispiel:

Eingabeliste
a=Max
b=15

Regelsatz
Regel_1 = "Wenn a=Max, dann muss b kleiner als 20 sein."
Regel_2 = "b muss eine Zahl sein."

Hier passiert nun folgendes:
Wenn ich die Regeln in ihrer Formulierungsreihenfolge abarbeite (Regel_1, Regel_2), dann knallt es, falls b keine Zahl sondern z.B. ein String ist. D.h. ich bin von der Reihenfolge der Abarbeitung der Regeln abhängig. Ich müsste Regel_1 also eigentlich umformulieren in "Wenn a=Max, dann muss b eine Zahl sein und kleiner als 20 sein.". Damit habe ich aber eine Redundanz zu Regel_2. Sinnvoller wäre es nun, Regel_2 vor Regel_1 aufzurufen.
Das Blöde ist, dass ich viele komplizierte Regeln habe und sicher den Überblick verlieren werde.
Wie würdet Ihr das lösen?

Danke für Tipps!
lg Caps


ps Ich bin zur Vermeidung von Redundanz darauf gekommen, die Regeln in Minterme zu packen, eine DNF aufzubauen und dann auszuklammern. Das Problem dabei ist aber, dass, wenn sich eine Regel ändert, ich den ganzen Salat ausmultiplizieren und hinterher wieder ausklammern muss.
Die Regeln werden in einer Programmiersprache wie PHP formuliert werden, daher geht vllt. kein Algo zur Schrumpfung logischer Formeln, keine Ahnung... (?)
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat