Der Vorschriftenvergleich ermöglicht es beliebig viele Objekte miteinander zu vergleichen. Insbesondere können die Vergleiche innerhalb eines Objekts durchgeführt werden.
Ein Vergleich verwendet immer zwei gleichnamige Objekttypen von zwei verschiedenen Knoten. Damit ist ein Vergleich auch zwischen zwei verschiedenen Vorschriftenarten/Positionstypen möglich. Generell ist es möglich horizontale und vertikale Elemente zu vergleichen. Dabei werden mögliche Konditionen und Mehrfachbewertbarkeit berücksichtigt.
Der Vorschriftenvergleich ist ebenfalls in der Lage Langtexte zu Elementen als auch Knotenlangtexte zu vergleichen. Über ein Profil mit einem kundenindividuellen Vergleichsobjekt kann gesteuert werden nach welchem Regelwerk der Vergleich erfolgt. Der Vergleich ist auch über eine API ohne GUI verwendbar. Somit kann der Vorschriftenvergleich auch für eigene Applikationen verwendet werden. Im GUI werden die Übereinstimmungen und Unterschiede der Einzelwerte ausgewiesen. Über die verschiedene Filter kann die Anzeige verfeinert werden.
Als besondere Funktion werden in der GUI Knoten und Objekttypen visualisiert, die nicht verglichen werden können.
Funktionsweise
Wenn Objekte oder Teile von Objekten in den Vorschriftenvergleich gegeben werden, werden zunächst auf Grundlage des aktuell gültigen Profils Pärchen von Base-Einträgen gebildet, die miteinander vergleichen werden sollen. Ein Pärchen ist definiert als ein Tupel aus zwei Base-Einträgen und einem Objekttyp, der auf beiden Base-Einträgen vorkommt. Somit werden immer nur zwei gleichnamige Objekttypen miteinander verglichen.
Als nächstes werden Konditionstypen und deren Konditionsfelder bestimmt. Dazu werden dynamische Elemente (vertikale Elemente) analysiert. Die Konditionsfelder sind diejenigen Felder aus der Spaltengruppe von dynamischen Elementen, deren Elemente in der Elementgruppe die Verwendung “Kondition” haben. Dabei werden Felder bezüglich Einheit und Kurztexte ausgeschlossen. Ein Konditionstyp identifiziert eine Menge von Konditionsfeldern eindeutig. Die Konditionstypen sind elementübergreifend.
Als zweites werden Gruppentypen und Gruppenfelder bestimmt. Dazu werden die Einträge in der Spaltengruppe analysiert. Die Gruppenfelder sind diejenigen Felder aus der Spaltengruppe von Elementen und dynamischen Elementen (horizontalen und vertikalen Elementen), deren Elemente in der Elementgruppe nicht die Verwendung “Kondition” haben. Dabei werden Felder bezüglich Einheit und Kurztexte ausgeschlossen. Ein Gruppentyp identifiziert eine Menge von Gruppenfeldern eindeutig und bezieht sich immer auf ein horizontales Element.
Als dritter Schritt werden die Werte für die genutzten Konditionsfelder und Gruppenfelder bestimmt.
Als vierter Schritt werden Gruppen gebildet. Eine Gruppe bezieht sich auf ein Gruppentyp, Rowgruppe (ROWGRP), laufende Nummer (LFDNR) und einen Konditionstyp mit seinen Konditionswerten.
Als fünfter Schritt, werden Gruppenkombinationen von jeweils zwei Gruppen gebildet, welche die gleichen Konditionswerte und den gleichen Gruppentyp haben. Die Gruppenkombination beinhalten also Gruppen, welche paarweise miteinander vergleichbar sind.
Der Vergleich findet auf Gruppenebene statt. Dazu wird ein Resultat generiert. Ein Resultat bezieht sich auf einen Konditionstypen mit seinen Konditionswerten, einen Gruppentyp und zwei Gruppen. Der eigentliche Vergleich findet auf paarweise gleichnamigen Gruppenfeldern der beiden Gruppen statt. Es wird ein Status des Vergleichs auf Ebene der Gruppenfelder und Resultate erstellt.
Die möglichen Status sind “Nicht gefunden” (beide Werte sind leer), “Gleich” (die Werte sind gleich) und “abweichend” (die Werte sind nicht gleich).
Die Darstellung der gefundenen Pärchen, werden in einem Baum visualisiert. Das Grid visualisiert die involvierten Objekte und Knoten sowie die Werte der benutzen Gruppenfelder und Konditionen.