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 muss wie folgt aufgebaut sein:

  • Das Format der Regeldatei ist Microsoft Excel 97 (.xls).

  • 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 Checkrules, Definitions, Options, Comments und Version 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 der Regeldatei vom Server nicht mehr geliefert.

3.1.1. Tabelle Checkrules

Die Tabelle Checkrules enthält alle Regeldefinitionen für den Checkermodul und muss folgende Kolonnen enthalten:

all_PROFILE

Hauptprofil. Alle aktiven Regeln, müssen mit einem grossen X markiert werden. Falls das Profil vom Benutzer ausgewählt wurde (implizit oder mit quote site set param profile all), werden die mit X markierten Regeln ausgeführt.

data_forward_PROFILE (optional)

Profil für Datenweiterleitung an ein Portal. Alle mit X markierten Regeln sind für die Datenweiterleitung relevant, d.h. wenn eine so markierte Regel einen Fehler meldet, werden die Daten nicht an das Portal weiter geleitet.

<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 profile <user1>,<user2>,..,<userN> selektieren. Es ist nicht möglich eine im Hauptprofil deaktivierte Regel im Benutzerprofil nachträglich zu aktivieren.

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 Checkoperators. Die Regel erzeugt eine Fehlermeldung, wenn der Operator auf den aktuellen Daten nicht erfüllt ist. Alle verfügbaren Checkoperatoren sind im Anhang zusammen gestellt.

Arguments

Argumente des Operators (s.a. Dokumentation der Operatoren).

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. 20091116).

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 Checkrules nicht erlaubt.

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

3.1.2. Tabelle Statistics

Die Tabelle Statistics enthält alle Regeldefinitionen für den Statistikmodul:

all_PROFILE

Hauptprofil. Alle aktiven Regeln, müssen mit einem grossen X markiert werden.

Modellname

Modellname (z.B. DM01AVCH24D). Es muss der gleiche Modellname wie bei Checkrules angegeben werden.

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 Statistik 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 Statistikoperators. Alle Statistikoperatoren sind im Anhang zusammen gestellt.

Arguments

Argumente des Operators (s.a. Dokumentation der Statistik Operatoren).

Modify_date (optional)

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

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.

  • Leere Zeilen sind in der Tabelle Statistics nicht erlaubt.

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

3.1.3. Tabelle Definitions

Die Tabelle Definitions enthält alle Listen bzw. Listenbereiche zum Modell. Definitions besteht aus folgenden Kolonnen:

Modelname

Modellname (z.B. DM01AVCH24D). Es muss der gleiche Modellname wie bei Checkrules angegeben werden.

Definition

Listendefinitionen gemäss folgender Syntax:

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

<Listrange> := 
   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 nur nach END_LIST erlaubt.

  • Alle Kolonnen der letzten Zeile müssen den Wert END enthalten.

3.1.4. Tabelle Options

Die Tabelle Options enthält Programmoptionen zu den diversen Checkservicemodulen. Options besteht aus folgenden Kolonnen:

Modelname

Modelname (z.B. DM01AVCH24D). Es muss der gleiche Name wie in Checkrules angegeben werden.

Optname

Name der Programmoption. Die möglichen Programmoptionen sind im Anhang dokumentiert.

Optvalue

Wert der Programmoption. Falls Programmoptionen zu einem erweiterten Modell (z.B. DM01AVZH24) angegeben werden, werden gleichnamige Programmoptionen des Basismodells (z.B. DM01AVCH24D) durch den angegebenen Wert überschrieben.

Die Zeilen müssen wie folgt erfasst werden:

  • Leerzeilen sind nicht erlaubt.

  • Alle Kolonnen der letzte Zeile müssen den Wert END enthalten.

3.1.5. Tabelle Comments

Die Tabelle Comments enthält Kommentare zum Modell und muss folgende Kolonnen enthalten:

Modelname

Modelname (z.B. DM01AVCH24D). Es muss der gleiche Name wie in Checkrules angegeben werden.

Comments

Beliebige Kommentarzeilen.

Die Zeilen müssen wie folgt erfasst werden:

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

  • Die letzte Zeile muss den Wert END enthalten.

3.1.6. Tabelle Version

Die Tabelle Version enthält Versionsinformationen zur aktuellen Konfiguration. Version besteht aus folgenden Kolonnen:

Modelname

Modelname (z.B. DM01AVCH24D). Es muss der gleiche Name wie in Checkrules angegeben werden.

Versioninfo

Beliebige Versionsinfozeile. Die Versionsinfozeile werden zu beginn jeder .log Datei des Checkservice angezeigt.

Die Zeilen müssen wie folgt erfasst werden:

  • Alle Kolonnen der letzten Zeile müssen den Wert END enthalten.

3.2. Verarbeitungsablauf

Zur Laufzeit werden die Checkregeln wie folgt ausgewertet:

  • Alle 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 aktuelle 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 eine Regel nicht erfüllt, wird die Fehlermeldung in der vom Benutzer gewählten Sprache ausgegeben.

3.3. Formulierung von Bedingungen

Manchmal ist es notwendig, dass eine Regel 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 Aufzählungsattribut 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), # (ungleich), > (grösser als) und < (kleiner als) 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. Spezielle Attribute

Die meisten Objektattribute sind durch das konkrete INTERLIS Datenmodell gegeben. Es gibt jedoch noch einige zusätzliche Systemattribute, welche durch den Checkservice zur Verfügung gestellt werden und in Bedingungen bzw. als Argumente für Operatoren verwendet werden können:

MODEL

Aktuelles Modell des Objekts.

TOPIC

Aktuelles Topic des Objekts.

TABLE

Aktuelle Tabelle des Objekts.

OBJID

Transferidenditifkation des Objekts.

GEOM
  • Liniengeometrie für Linientabellen (z.B. BoFlaeche_Geometrie) von AREA- bzw. SURFACE-Attributen.

  • Flächengeometrie für AREA-Attribute.

3.7. 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> ausgewählt werden.

3.8. 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 eine bestimmte Sprachversion des Modells formuliert werden können (z.B. der Inhalt 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 deutschen Hauptmodells definiert.

[Anmerkung]

Falls die Benutzer des französischen Modells die Fehlermeldungen auf Deutsch erhalten möchten, muss man die Fehlermeldungen in beiden Sprachen formulieren.