Wir suchen nach einer Java-Bibliothek / einem Java-System / Paket, das nicht nur eine grundlegende Validierung, sondern auch eine Beziehungsprüfung durchführen kann. Wir müssen in der Lage sein, Validierungskriterien auszudrücken, die auf mehreren verbundenen Einheiten basieren.
Die meisten der Validierungsmodelle Spring Validation, JSR303, sind speziell auf die Validierung von Bean-Attributen ausgerichtet. Aber wir brauchen etwas, das über Bohnen geht.
Unsere Anforderungen bestehen darin, einen Modellzustand zu validieren, während die Validierungslogik aus dem Java-Code ausgelagert wird.
In der obigen Definition ist eine Bohne nur ein POJO, und ein Modell ist eine Sammlung verwandter Bohnen. Wenn zum Beispiel Account eine Sammlung von Adressen hat und die Account.countryOfResidence auf USA eingestellt ist, möchte ich eine Validierungsregel haben, die sicherstellt, dass alle Adressen ein Land der USA in sich haben.
Während der "Operation" des Hinzufügens einer Adresse zu dem Konto wird also eine Validierung gestartet, die sicherstellt, dass Address.country mit Account.countryOfResidence identisch ist.
Wir haben uns DRULES angesehen, wollten aber sehen, ob es andere Möglichkeiten gibt.
Irgendwelche Vorschläge zum weiteren Vorgehen?
Ich bin mir nicht sicher, wie aktiv dieses Projekt ist, aber ich habe es schon vor einer Weile benutzt und es hat Fähigkeiten zur Verfügung gestellt, um das zu tun, was Sie beschreiben - schauen Sie, ob es hilfreich ist:
Und natürlich ist da Jess: Ссылка
Es könnte sich auch lohnen, einen Blick darauf zu werfen, obwohl ich nicht viel darüber weiß. Vlad: Ссылка
Ich denke, das ist möglich in JSR 303 mit dem ScriptAssert validator oder a benutzerdefinierter Validator .
Diese Frage enthält mehrere benutzerdefinierte Feldüberprüfungsfunktionen, die als Grundlage für die Erstellung Ihrer eigenen verwendet werden können.
Und hier ist ein Beispiel für den @ScriptAssert
Validator.
Das ist sicherlich viel weniger Code als ein benutzerdefinierter Validator.
Hinweis: Validatoren können auch in XML erstellt werden (wenn das so ist).
Ich bin enttäuscht von dem, was in diesem Raum verfügbar ist - wahrscheinlich, weil ich eine unmögliche Kombination von Funktionen möchte - Kuchen essen und essen. Das ist also eher eine langwierige Anmerkung als das, was ich denke, zumindest eine Antwort . Ich markierte diese Frage als einen "Favoriten" und hoffte, dass jemand anderes uns auf eine Majick Kugel hinweisen würde. Aber ich denke, es gibt keine Zauberer im Haus.
Eine Möglichkeit ist OCL , insbesondere mit der Unterstützung der entsprechenden Eclipse-Plugins. Ich habe es angeschaut und abgelehnt, weil es die Mühe nicht wert schien - aber Ihre Laufleistung kann abweichen.
Eine andere Möglichkeit (vielleicht !!!) besteht darin, Teile eines der Tools zu verwenden, die für BDD geschrieben wurden . Diese werden jedoch zum Testen geschrieben, nicht als Produktionscode - "gegebenes Szenario x, ich erwarte, dass es passiert". Ich beziehe mich auf Dinge wie easyb, jbehave und den cuke4duke-Port von Gurken - besonders easyb . Ich denke, jbehave ist zu Java-schwer für dich, und ich habe Gurke noch nicht ernsthaft angeschaut.
Wenn Sie etwas finden, das für Sie funktioniert, kommen Sie bitte zurück und schreiben Sie Ihre eigene Antwort. Beachte, dass du 7 upvotes und 4 Favoriten dazu hast - Neugierige wollen es wissen !
Tags und Links java relationship validation model