12. Modul IL2OUT - INTERLIS 2 schreiben

12.1. Allgemeines

Mit dem Modul IL2OUT können Objekte in eine INTERLIS 2 .xtf Datei geschrieben werden. Der Modul interpretiert neben der .xtf Datei auch die zugehörigen INTERLIS 2 Datenmodelle (.ili Dateien). Jedes Objekt wird von IL2OUT auf seine Konsistenz gegenüber den INTERLIS 2 Datenmodellen überprüft. Falls z.B. zwingende Attribute vergessen oder falsche Attributwerte gefunden werden, werden entsprechende Fehlermeldungen ausgegeben.

IL2OUT wird mit:

|INCL \script\il2out.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

12.2. Abhängigkeiten von anderen Modulen

Keine Abhängigkeiten vorhanden.

12.3. Parametermap IL2OUT_PARAM

Folgende Parameter können in der Map IL2OUT_PARAM für den Modul IL2OUT gesetzt werden:

Parameterreq/optBeschreibung
FORCE_COMPILErFalls dieser Parameter auf ON (Default = OFF) gesetzt wird, werden die INTERLIS Datenmodelle jedes mal mit dem INTERLIS 2.2 Compiler analysiert. Falls die Option auf OFF gesetzt ist, wird zuerst nachgeschaut, ob bereits eine vorcompilierte Version des Modells existiert (.ilo und .ilp Datei). Das Laden von vorcompilierten Modelldateien ist viel schneller möglich, daher ist die Option normalerweise auf OFF gesetzt.
MODEL_DIRoNormalerweise werden Modelldateien (.ili) zuerst in ICS_DIR\user\models2 gesucht. Mit der Option MODEL_DIR kann man einen alternativen (User-)Suchpfad angeben (Default = OFF).
MODELSrModelldateien als kommaseparierte Liste (z.B. Units.ili,Time.ili,DM01AVCH24D.ili). Die Modelldateien müssen in der korrekten Reihenfolge für den INTERLIS 2 Compiler angegeben werden. Alternativ kann auch der Name einer Option angegeben werden, welche den Dateinamen einer .xtf Datei enthält (z.B. OPT.input).
STATISTICSoObjektstatistik am Ende der .log Datei ausgeben (Default = OFF).
DEBUGoON oder OFF. Debugmodus ein oder aus (Default = OFF).
XML_ID_CHECKoON, OFF oder undefiniert. (Default undefiniert ). INTERLIS TID's müssen einem XML Type ID entsprechen. Siehe dazu http://www.w3.org/TR/REC-xml > 3.3.1 Attribute Types > Validity constraint: ID. Ist dieser Parameter undefiniert, so wird immer das Zeichen x als Prefix dem Wert des TID vorangestellt, um sicherzustellen, dass die XML-Vorgabe erfüllt wird. Ist der Parameter mit ON definiert, wird geprüft, ob der TID bereits ein erlaubtes Zeichen am Anfang beinhaltet, nur wenn nicht wird ein x als Prefix dem Wert des TID vorangestellt. Ist der Parameter mit OFF definiert, wird der Wert des TID nicht geprüft und nicht verändert. Damit die INTERLIS Referenzen erhalten beleiben, gelten diesselben Regeln auch für die Werte der Referenzattribute.

12.4. Objektmodell

Der Modul IL2OUT verlangt pro OUT-Objekt folgende Systemkomponenten:

Komponentereq/optBeschreibung
OUT.MODEL(s)rModel des OUT-Objekts.
OUT.TOPIC(s) r

Topic des OUT-Objekt

OUT.CLASS(s) r

Table des OUT-Objekts.

OUT.TID(s)rTransferidentifikation des OUT-Objekts .

Die restlichen Objektkomponenten sind abhängig von der dazughörigen INTERLIS Klasse (s.a. OUT.MODEL, OUT.TOPIC bzw. OUT.CLASS). Alle INTERLIS Attribute werden als Komponenten des OUT-Objekts mit dem gleichem Namen erwartet. Die ICS Datentypen werden wie folgt auf INTERLIS Datentypen abgebildet:

INTERLIS DatentypICS Datentyp
NUMBERreal oder int.
TEXT

string.

ENUMERATION

string.

STRUCTUREmap. Das XML-Tag der Struktur kann dem Label der Map entnommen werden (mit GET_LABEL).
LISTlist of map. Die XML-Tags der Sturkturelemente können den Labeln der Maps entnommen werden.
BAGlist of map. Die XML-Tags der Strukturelemente können den Labeln der Maps entnommen werden.
ROLElink.

12.5. Exportierte Prozeduren und Methoden

ProzedurIL2OUT_OPEN ! [s output][]
BeschreibungErzeugt eine neue INTERLIS 2 Datei <output> und initialisiert den Modul. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
'c:\test.xtf' IL2OUT_OPEN
ProzedurIL2OUT_WRITE_OBJECT ! [][]
Beschreibung

Schreibt das aktuelle OUT-Objekt in die geöffnete INTERLIS 2 Datei.

Beispiel
IL2OUT_WRITE_OBJECT
ProzedurIL2OUT_CREATE_LINK ! [s key,i orderpos][]
Beschreibung

Erzeugt einen Link für das Schreiben einer Rolle. In der Outputdatei wird für die RolleREF="<key>" und ORDERPOS="<orderpos>" gesetzt. ORDERPOS wird nur gesetzt, wenn <orderpos> > 0.

Beispiel
'123' 0 IL2OUT_CREATE_LINK => OUT.Entstehung_von
ProzedurIL2OUT_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
IL2OUT_CLOSE

12.6. Skriptbeispiel

! Diese ICS Konfiguration kopiert alle von IL2OUT
! gelesenen Objekte mit IL2OUT in in eine .xtf Datei.

|LICENSE \license\iltools.lic

MAP USER_INPUT1
   DIALOG => FILE ! FILE | STRING | ODBC
   MESSAGE => 'Enter .xtf Input File'
   FILE_FILTER => xtf
   FILE_EXISTS => TRUE
   OPT => input
END_MAP

MAP USER_INPUT2
   DIALOG => FILE ! FILE | STRING | ODBC
   MESSAGE => 'Enter .xtf Output File'
   FILE_FILTER => xtf
   FILE_EXISTS => FALSE
   OPT => output
END_MAP

MAP IL2IN_PARAM
   INPUT_EXTENSION => xtf
   MODELS          => XTF ! get from .xtf file
   FORCE_COMPILE   => OFF
   TRACE           => OFF
   STATISTICS      => ON
END_MAP

MAP IL2OUT_PARAM
   OUTPUT_EXTENSION => xtf
   MODELS           => OPT.input ! same as input
   FORCE_COMPILE    => OFF
   TRACE            => OFF
   STATISTICS       => ON
END_MAP

MAP INPUT_SOURCES
   I1 => IL2IN,OPT.input
END_MAP

MAP INOUT
   I1 => COPY_INOUT0
END_MAP

|INCL \script\util.lib
|INCL \script\il2in.mod
|INCL \script\il2out.mod

PROCEDURE COPY_INOUT0
   &IN &OUT MAPCOPY
   IL2OUT_WRITE_OBJECT
END_PROCEDURE

|INCL \script\run1.prg