3. Checkservice Konfiguration

Im Checkservice können pro Datenmodell benutzerdefinierte Regeln angegeben werden. Die benutzerdefinierten Regeln müssen in einer speziellen Excel Konfigurationsdatei eingetragen werden (<Modellname>.xls). In diesem Kapitel ist der Aufbau der Regeldatei beschrieben.

3.1. Allgemeiner Aufbau Regeldatei

Die Regeldatei im Microsoft Excel 97 Format (.xls) muss wie folgt aufgebaut sein:

  • Der Name der Datei muss <Modellname>.xls sein (z.B. DM01AVCH24D.xls).

  • Die Regeldatei muss vollständig sein, d.h. alle Regeln zum Modell enthalten.

  • Die Excel-Datei muss die Tabellen RULES, <MODEL>_DEF und <MODEL>_TXT enthalten.

  • Der Aufbau und Inhalt der Tabellen muss den nachfolgenden Beschreibungen genügen.

  • Alle Tabellen oder Attribute welche hier nicht spezifiziert sind, werden beim Import der Regeldatei ignoriert, d.h. werden beim erneuten Bezug vom Server nicht mehr geliefert.

3.1.1. Tabelle RULES

Die Tabelle RULES enthält alle Regeldefinitionen für ein bestimmtes Datenmodell und muss folgende Kolonnen enthalten:

default_Profile

Standardprofil. Alle Regeln welche zum Standardprofil gehören sollen, müssen mit einem grossen X markiert werden. Falls das Profil vom Benutzer ausgewählt wurde (implizit oder mit quote site set param profiles default), werden nur die mit X markierten Regeln ausgeführt.

<user>_Profile (optional)

Benutzerprofil. Es können beliebig viele Benutzerprofile pro Modell definiert werden. Der Checkservice Benutzer kann ein oder mehrere Profile mit dem Befehl quote site set param profiles <user1>,<user2>,..,<userN> selektieren.

Modellname

Modellname (z.B. DM01AVCH24D). Das Modell muss auf dem Server installiert und für den Checkservice aktiviert sein. Pro Regeldatei können nur zu einem Modell Regeln definiert bzw. auf dem Server gespeichert werden. Sind in der Regeldatei auch Regeln zum Basismodell enthalten, dann werden von diesen Regeln nur die Profilinformationen auf dem Server gespeichert.

Topicname

Topicname. Der Topicname muss ein gültiger Topicname innerhalb des Modells sein.

Tablename

Tablename. Der Tablename muss ein gültiger Tabellennamen innerhalb des Topics sein.

Condition

Bedingung für die Tabelle. Die Checkservice Regel gilt nur für die Objekte der Tabelle, für welche die Bedingung erfüllt ist (s.a. Formulierung von Bedingungen).

Operator

Name eines Operators. Die Regel erzeugt eine Fehlermeldung, wenn der Operator auf den aktuellen Daten nicht erfüllt ist. Alle verfügbaren Operatoren sind im Anhang zusammen gestellt.

UserId

Benutzerdefinierbare Bezeichnung der Regel. Hinweis: Normalerweise sollten die ersten zwei Buchstaben den Kanton bezeichnen (z.B. BE100001).

Category

Fehlerkategorie. Es sind folgende Werte zulässig: error, warning und info.

Message_de (optional)

Fehlermeldung auf Deutsch.

Message_fr (optional)

Fehlermeldung auf Französisch.

Message_it (optional)

Fehlermeldung auf Italienisch.

Message_en (optional)

Fehlermeldung auf Englisch.

Modify_date (optional)

Datum der letzten Änderung an der Regel im Format YYYYMMDD (z.B. 20081205).

Modify_user (optional)

Benutzer, welcher die Regel erstellt oder verändert hat (z.B. swisstopo/rb).

Comment (optional)

Kommentar zur Regel.

Die Regeln müssen wie folgt erfasst werden:

  • Alle obligatorischen Felder müssen erfasst werden.

  • Pro Regel muss mindestens eine Fehlermeldung (Deutsch, Französisch, Italienisch oder Englisch) definiert werden.

  • Leere Zeilen sind in der Tabelle RULES nicht erlaubt.

  • Die Tabelle RULES muss durch eine Zeile abgeschlossen werden, welche für jede Kolonne den Wert END_RULES enthält.

3.1.2. Tabelle <MODELNAME>_DEF

Die Tabelle <MODELNAME>_DEF enthält alle Listen bzw. Listenbereiche zum Modell und muss folgende Kolonnen enthalten:

Definitions

Listendefinitionen gemäss folgender Syntax:

<Liste> := 
   LIST <Listenname>
      <Zeichenkette>*
   END_LIST

<Listerange> := 
   LISTRANGE <Listerangename>
      (<Zeichenkette> <Zeichenkette>)*
   END_LISTRANGE

Beispiel:

Die Zeilen müssen wie folgt erfasst werden:

  • Die Zeilen müssen der Syntaxregel entsprechen.

  • Die erste Zeile nach Definitions darf nicht leer sein, sonst sind leere Zeilen erlaubt.

  • Die letzte Zeile muss den Wert END_<MODEL>_DEF enthalten.

3.1.3. Tabelle <MODELNAME>_TXT

Die Tabelle <MODELNAME>_TXT enthält Kommentare zum Modell und muss folgende Kolonnen enthalten:

Comments

Beliebige Kommentarzeilen.

Die Zeilen müssen wie folgt erfasst werden:

  • Die erste Zeile nach Comments darf nicht leer sein, sonst sind leere Zeilen erlaubt.

  • Die letzte Zeile muss den Wert END_<MODEL>_TXT enthalten.

3.2. Verarbeitungsablauf

Zur Laufzeit wird die Regeldatei wie folgt ausgewertet:

  • Allen Regeln, welche nicht zu einem ausgewählten Profil gehören, werden ignoriert.

  • Zu jedem gelesenen INTERLIS Objekt werden die zu Modelname, Topicname und Tablename passenden Regeln in der Tabelle RULES gesucht.

  • Für alle gefundenen Regeln wird geprüft, ob die Vergleiche in Condition für das gegebenen INTERLIS Objekt erfüllt sind.

  • Für alle durch die Regeln selektierten Objekte wird der Operator der Regel mit den Argumenten aus Arguments ausgeführt.

  • Falls das Objekt den Test nicht erfüllt, wird die Fehlermeldung in der vom Benutzer gewählten Sprache ausgegeben.

3.3. Formulierung von Bedingungen

Manchmal ist es notwendig, dass ein Test nur für eine bestimmte Teilmenge von Objekten einer Tabelle gilt. Die Teilmengen kann mit der Angabe einer Condition gebildet werden.

Beispiel:

Topicname      Tablename        Condition          Operator   
Liegenschaften ProjLiegenschaft Qualitaet_TXT=AV93 GRUNDSTUECK

Die obige Regel wird z.B. nur für Objekte der Tabelle ProjLiegenschaft ausgeführt, wenn für die Objekte das Attribut Qualitaet den Wert AV93 hat. Die Kombination von mehreren Bedingungen ist ebenfalls möglich. Dazu müssen die einzelnen Bedingungen durch Komma getrennt angegeben werden. Als Vergleichsoperatoren stehen = (gleich) und # (ungleich) zur Verfügung. Der Test auf Undefiniert ist via =NULL oder #NULL möglich.

Beispiel für mehrere Vergleiche in der gleichen Bedingung:

Condition
Punktzeichen_TXT=Stein,Begehbarkeit_TXT=ja

3.4. Aufzählungstypen

Bei Aufzählungstypen ist es erlaubt, den textuellen Wert des Attributs in Regeln oder Bedingungen zu verwenden. Dazu muss jedoch der Attributname des Aufzählungsattributs mit dem Postfix _TXT ergänzt werden (z.B. Punktzeichen_TXT).

Beispiel:

Condition             
Punktzeichen_TXT=Stein

3.5. Pfadausdrücke

Falls zwischen zwei Tabellen eine 1:1, 1:m oder 1:mc Beziehung besteht, kann man in Regeln oder Bedingungen des Unterobjekts auf Attribute des Oberobjekts via das Beziehungsattribut zugreifen. Dazu muss der Attributname aus <Referenzattribut>.<Oberobjektattribut> gebildet werden. Es ist auch möglich über mehrere Stufen zu verweisen (z.B. Zugriff auf Attribute des Oberoberobjekts).

Beispiel:

Topicname      Tablename    Condition
Liegenschaften Liegenschaft Liegenschaft_von.Vollstaendigkeit_TXT=Vollstaendig

3.6. Mehrsprachigkeit von Fehlermeldungen

Für jede Regel kann die Fehlermeldung in mehreren Sprachen in den Feldern Message_de, Message_fr, Message_it und Message_en angegeben werden. Die Sprache der Fehlermeldungen kann vom Benutzer des Checkservice mit quote site set param language <Sprachcode> gewählt werden.

3.7. Mehrsprachige Modelle

Falls das gleiche Modell in mehreren Sprachen vorliegt (z.B. DM01AVCH24D und MD01MOCH24F), muss die Regeldatei nur für die Hauptsprache (z.B. de) konfiguriert werden. Es kann aber sein, dass einzelne Tests trotzdem nur für ein bestimmtes Modell formuliert werden können (z.B. der Vergleich von Textattributwerten).

Beispiel:

Modelname   Topicname      Tablename      Operator
DM01AVCH24D Liegenschaften LSNachfuehrung LIST,Beschreibung,GRUDA_Geschaeftstyp_de
MD01MOCH24F Liegenschaften LSNachfuehrung LIST,Beschreibung,GRUDA_Geschaeftsyp_fr

Im Beispiel, wird das Textattribut Beschreibung mit einer vordefinierten Liste verglichen (s.a. Operator LIST). Für das französische Modell soll eine andere Liste als für das deutsche Modell verwendet werden.

[Anmerkung]

Der Test wird trotzdem nur mit den Topic-, Tabellen- und Attributnamen des Hauptmodells definiert. Falls die Benutzer des französischen Modells die Fehlermeldungen dennoch auf Deutsch erhalten möchten, muss man die Fehlermeldungen in beiden Sprachen formulieren.