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