Cortex-Cortex-Import
Konzept¶
Innerhalb Ihrer CortexEngine können Sie Inhalte von Datensätzen sowie das gesamte Datenmodell mit dieser Import-Funktion ändern.
- Datenquelle und Ziel sind dieselbe CortexEngine Instanz.
- Die Quelle besteht in der Regel aus einer Listendefinition und den Datensätzen einer Selektion oder eines Datensatztyps.
- Die Datensätze werden basierend auf der Listenkonfiguration aufbereitet, so können Sie auch berechnete Listeninhalte für die Änderung der Datensätze verwenden.
Für diese Import-Funktion dient eine Listendefinition als Grundlage, damit sind die globalen Einstellungen und die ImportSection identisch mit denen des CSV-Imports.
Der Abschnitt für die Einstellungen des ReaderModule muss angepasst werden, weisen Sie ihm den Typ ctx
zu.
Konfiguration¶
Dieser Konfigurationsblock enthält die Angaben für die Listendefinitionen (ListDef) und den Datensatztyp oder die Selektion.
Wenn alle Datensätze eines Datensatztyps geändert werden sollen, müssen Sie die Angabe für den Datensatztyp setzen.
<ReaderModule type="ctx">
<ListDef>[.......]</ListDef>
<Recordtype>[....]</Recordtype>
</ReaderModule>
Um nur die Datensätze einer zuvor gespeicherten Selektion zu ändern, geben Sie den Selektionsnamen an.
<ReaderModule type="ctx">
<ListDef>[.......]</ListDef>
<Selektion>[....]</Selektion>
</ReaderModule>
Eine Aktualisierung der Datensätze kann nur anhand der Datensatz-ID durchgeführt werden kann. Damit entfällt die Angabe einer Referenz, weil ein Datensatz bereits eindeutig gefunden wird. Das Quellfeld für die ID wird in der Konfiguration als \#IId
angegeben.
<?xml version="1.0" encoding="UTF-8"?>
<CtxImport>
<Global>
<LoginIP>127.0.0.1</LoginIP>
<LoginPort>29001</LoginPort>
<LoginUser>admin</LoginUser>
<LoginPW>adm#13qzy2!</LoginPW>
<ImportMode>u</ImportMode>
</Global>
<ReaderModule type="ctx">
<ListDef>Personenliste</ListDef>
<Recordtype>PERS</Recordtype>
</ReaderModule>
<ImportSection recordtype="PERS">
<Reference></Reference>
<IId>getChar('#IId')</IId>
<Field>perName=getChar('Name')</Field>
<Field>perVorn=getChar('Vorname')</Field>
<Field>perAOrt=getChar('Ort')</Field>
<Field>perSuch=getChar('Vorname')+getChar('Name')</Field>
</ImportSection>
</CtxImport>
Hinweis
In diesem Beispiel bleibt in der ImportSection die Referenz leer, weil folgende Angabe automatisch als Referenz behandelt wird:
<IId>getChar('#IId')</IId>
Sie können in der Listendefinition auch das Systemfeld Datensatz-ID einblenden und im genannten IId-Knoten eintragen:
<IId>getChar('Datensatz-ID')</IId>
- Die zweite Möglichkeit wird unter Umständen schneller abgearbeitet als erste.
- Die genutzte Liste wird sequentiell je Datensatz abgearbeitet, also ist die Nutzung von berechneten Feldern nur bedingt möglich.
- Listenübergreifende Berechnungen können daher nicht genutzt werden
Wiederholfelder¶
Die allgemeine Form für den Import eines Wiederholfeldes aus einer Listendefinition besteht aus dem Knoten RepGroup
mit einem start
-Attribut und beinhaltet dann eine Feldangabe:
<RepGroup start="___WDHL___">
<Field deltalist=" d">Synonym=getChar('sourceField')</Field>
</RepGroup>
Das start
-Attribut muss den Wert ___WDHL___
beinhalten (drei Unterstriche vor und hinter WDHL). Dadurch wird festgelegt, dass der Inhalt des Knotens als Wiederholfeld zu behandelt ist.
Ergänzend dazu können Sie das Attribut deltalist="d"
für das Feld angeben. Dadurch bleiben bei einer Aktualisierung des Datensatzes nur die Feldinhalte bestehen, die als Daten geliefert werden. Inhalte, die nicht in der Quelle vorliegen, werden entfernt.
Hinweise
Beachten Sie hierbei, dass die Verwendung der einzelnen Parameter bei Wiederholfeld-Gruppen unerwartete Effekte haben kann. Eine Aktualisierung dieser Gruppen wird daher nicht empfohlen.
Das Quellfeld (getChar('sourceField')
) muss ein Wiederholfeld sein.
- Der Inhalt dieses Feldes kann per JavaScript überschrieben werden.
- Wichtig ist der Feldtyp, damit der Implex erkennt, dass ein Wiederholfeld gelesen wird.
- Ein per JavaScript gesetztes Objekt allein reicht nicht aus.