Konfiguration
Aufrufparameter¶
Durch manuelle Anpassungen der Import-Konfigurationen können Sie auf erweiterte Funktionen und Einstellungen zugreifen.
- Die Konfiguration erfolgt über XML-Dateien, die vom Implex gelesen und verarbeitet werden.
- Der Aufruf erfolgt über die Aufrufparameter des Implex.
- Für jede Quelle (CSV-, XML-Datei, Cortex-Cortex oder andere) müssen Sie eine separate Import-Konfigurationsdatei erstellen.
- Innerhalb einer Konfiguration können mehrere Datensatztypen als Ziel definiert werden, so dass aus einer Quelle mehrere Datensätze entstehen können.
Import ohne Datenmodell
Ein Datenimport, ohne vorher ein Datenmodell zu konfigurieren, ist möglich. Die Nutzung im Uniplex wird dadurch allerdings erschwert, da keine Felder oder Datensatztypen definiert wurden.
Die Konfiguration eines Datenmodells für den Uniplex wird daher empfohlen.
Für individuelle Entwicklungen, ohne den Uniplex, kann darauf möglicherweise verzichtet werden. Die importierten Daten können dann nur mit eigenen Entwicklungen oder mit Hilfe der Anwendung CtxBrowser
gefunden werden.
Aufrufparameter Implex.jar¶
Der Implex ist eine CLI-basierte Java-Anwendung, die manuell und über zeitgesteuerte Systemdienste aufgerufen werden kann. Nachfolgende Aufrufparameter stehen zur Verfügung.
Wichtig
Unter Windows-Systemen müssen innerhalb der Umgebungsvariablen die Einträge für das installierte Java angegeben sein.
Aufruf¶
java -jar Implex.jar [OPTIONEN] ... [DEFINITIONS_DATEI] ...
Optionen¶
Aufruf | Beschreibung |
---|---|
-i, --import |
Nachfolgende Importdefinitionsdateien (XML) verwenden. |
-l, --link |
Link-Definition auflösen. |
-s, --simulate |
Aktion simulieren. Es werden keine Schreibvorgänge im Server ausgeführt. |
-v, --verbose |
Alle Logmeldungen zusätzlich auf Konsole ausgeben. |
-h, --help |
Diese Hilfe aufrufen. |
Optionen für Experten¶
Aufruf | Beschreibung |
---|---|
-e, --emulate |
schreibt bei einer Definition für den Modus Import, die interne Repräsentation des ersten gelesenen Datensatzes in eine Datei an und beendet dann das Programm (nur zur Entwicklung von Reader Modulen) |
-d, --delay [ZAHL] |
Anzahl Datensätze, nach den immer eine Logmeldung ausgegeben werden soll (Standard: 200) |
--server [IP:PORT] |
hier kann eine CortexEngine angegeben werden (Bsp.: 127.0.0.1:29000) |
--source [DATEI] |
wenn das Lesemodul es zulässt, kann hier ein Quelldateiname angegeben werden (abhängig vom Lesemodul) |
--getinfo [DATEI] |
liefert gefolgt von einem JSON-Dateinamen eine modulspezifische Information (Abhängig von Lesemodul) |
--start [ZAHL] |
beginnt mit dem Import ab dem angegebenen Datensatz |
--end [ZAHL] |
liest so viele Datensätze, wie angegeben |
Es können beliebig viele Definitions-Dateien hintereinander angegeben werden und es können in beliebiger Reihenfolge mehrere Optionen angegeben werden (siehe Beispiel unter Aufruf)
Hinweis
- Der Parameter -s (Simulation) wirkt sich global auf alle im Aufruf übergebenen Modi aus!
- Die Parameter
--start
und--end
funktionieren nur für CSV- und XML-Importe.
Java Aufrufparameter¶
Erfolgt der Aufruf manuell oder über ein Script, sollten Sie landesspezifische Parameter an Java übergeben. Zahlen, Währungen, Datums- und Zeitformate und Ähnliches können Sie damit korrekt importieren.
Der Java-Aufruf wird um folgende Angaben erweitert:
-Duser.country=DE -Duser.language=de
Der Aufruf umfasst vollständig die Jar-Datei des Implex und weitere Parameter. So können auch die Import- und Quelldatei übergeben werden:
java -jar -Duser.country=DE -Duser.language=de Implex.jar -i --server localhost:29000 --source www/Implex/sourceFile XML ./www/implex/Import-Config XML
Das Beispiel zeigt den Aufruf der Implex.jar mit zusätzlichen, landesspezifischen Java-Parametern und den Implex-Parametern für die Quell- und Import-Konfigurationsdatei.
Allgemeine Definitionen¶
Die Import-Konfiguration besteht aus drei Hauptbereichen: Global, ReaderModule und ImportSection, in denen die Sie die jeweiligen Einstellungen vornehmen.
- Global:definiert den Zugriff auf die CortexEngine, in der Daten verändert werden sollen und generelle Arbeitsparameter für den Import
- ReaderModule: definiert den Zugriff auf die Quelldaten
- ImportSection: definiert die Feldzuweisung von Quell- zu Zielfeldern
Änderungen bei Implex-Versionen ab Version 4.0 und höher
Mit der Version 4.0 ändern sich die Bezeichner für die Parameter in den Import-Konfigurationen. Ab dieser Version ist eine Konfiguration und der Aufruf nur mit englischen Bezeichnern möglich. Alte Konfigurationen müssen daher zwingend angepasst werden!
<XML version="1.0" encoding="UTF-8"?>
<CtxImport>
<Global>
<LoginIP>[.....]</LoginIP> <!-- IP or server name -->
<LoginPort>[.....]</LoginPort> <!-- database port; also via parameter for implex available -->
<LoginUser>[.....]</LoginUser> <!-- user -->
<LoginPW>[.....]</LoginPW> <!-- password -->
<ImportMode>[.....]</ImportMode> <!-- import mode; n, u, nu/un for new and/or update-->
<DeltaList>[.....]</DeltaList> <!-- optional - DeltaListe means that all data records with no change will be deleted ("l") -->
</Global>
<ReaderModule type="[.....]"> <!-- e.g.: CSV, XML, ctx or own type by using abstract class -->
<Filename>[.....]</Filename> <!-- relative path to implex in bin directory -->
<Separator>[.....]</Separator> <!-- field separator -->
<Enclosure>[.....]</Enclosure> <!-- field delimiter -->
<RepSeparator>[.....]</RepSeparator> <!-- seperator for repeated content in one field; e.g.: "email 1; email 2; email 3; ..." -->
<ColumnMode>[.....]</ColumnMode> <!-- column mode HEADER, NUMERIC, ABC -->
<Charset>[.....]</Charset>
</ReaderModule>
<ImportSection recordtype="[....]">
<FilterFunction>getChar('...') != ''</FilterFunction> <!-- write data record only, if filter function returns true -->
<IId>getChar('...')<IId> <!-- internal database ID, if update exactly this data record -->
<HashFilter>[.....]</HashFilter> <!-- build hash value on all imported values and write it to this field -->
<Reference>PID</Reference> <!-- reference to find data record if update is necessary -->
<Field>... = getChar('...')</Field>
<Field>... = getChar('...')</Field>
<Field>... = getChar('...')</Field>
<RepGroup reference="1"> <!-- for update of group reference is needed -->
<Field deltalist="d">... = getChar('...')</Field> <!-- deltalist means that all data records without will be deleted -->
<Field>... = getChar('...')</Field>
</RepGroup>
</ImportSection>
</CtxImport>
Im Bereich Global konfigurieren Sie die Zugangsdaten zu Ihrem Datenbestand und geben dort den gewünschten ImportModus an. Wählen Sie zwischen n (neu), u (update) oder nu bzw. un (für update, sonst neu).
<CtxImport>
<Global>
<LoginIP>127.0.0.1</LoginIP>
<LoginPort>29001</LoginPort>
<LoginUser>admin</LoginUser>
<LoginPW>adm#13qzy2!</LoginPW>
<ImportMode>nu</ImportMode>
</Global>
Die Bereiche ReaderModule und ImportSection sind von der jeweiligen Datenquelle abhängig.
Hinweis
Aus einer Datenquelle können Sie mehrere Datensätze unterschiedlicher Datensatztypen erstellen (z.B. aus einer Person ein Personen- und ein Adressdatensatz). Dafür müssen Sie die ImportSection mehrfach anlegen.
Konvertierung von Inhalten¶
Quelldaten wie Zahlenwerte (ganzzahlige oder Dezimalwerte) und Datumsfelder müssen in andere Formate konvertiert werden. Hierfür stehen entsprechende Importfunktionen bereit.
Datumsfelder¶
Quellsysteme liefern unterschiedliche Datumsformate, daher müssen diese vor dem Import in das von der CortexEngine verwendete Format konvertiert werden. Das Quellformat muss bekannt sein.
Beispiele von Datumsangaben aus verschiedenen Quellen
- 111012
- 12-10-11
- 11-10-12
- 2012-10-11
- 2012-10
Es ist nicht eindeutig, ob die Zahlen den Tag, den Monat oder das Jahr repräsentieren. Daher müssen Datumsangaben immer mit dieser Zeile konvertiert werden:
date('yyMMdd',getChar('Quelldatum'));
Das Muster 'yyMMdd'
definiert das Format der Quelle. Die Tabelle zeigt die möglichen Muster auf, die aus einer Quelle konvertiert werden können. Sie können umfangreiche Datums- und Uhrzeitangaben, auch in Kombination, in das interne Format übertragen.
Tabelle für Datumsangaben
Letter | Date or Time Component | Presentation | Examples |
---|---|---|---|
G | Era designator | Text | AD |
y | Year | Year | 1996; 96 |
M | Month in year | Month | July; Jul; 07 |
w | Week in year | Number | 27 |
W | Week in month | Number | 2 |
D | Day in year | Number | 189 |
d | Day in month | Number | 10 |
F | Day of week in month | Number | 2 |
E | Day in week | Text | Tuesday; Tue |
a | am/pm marker | Text | PM |
H | Hour in day (0 - 23) | Number | 0 |
k | Hour in day (1 - 24) | Number | 24 |
K | Hour in am/pm (0 - 11) | Number | 0 |
h | Hour in am/pm (1 - 12) | Number | 12 |
m | Minute in hour | Number | 30 |
s | Second in minute | Number | 55 |
S | Millisecond | Number | 978 |
z | Time zone | General time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | Time zone | RFC 822 time zone | -0800 |
Muster¶
Date and Time pattern | Result |
---|---|
yyyy.MM.dd G 'at' HH:mm:ss z |
2001.07.04 AD at 12:08:56 PDT |
EEE, MMM d, ''yy |
Wed, Jul 4, '01 |
h:mm a |
12:08 PM |
hh 'o''clock' a, zzzz |
12 o'clock PM, Pacific Daylight Time |
k:mm a, z |
0:08 PM, PDT |
yyyyy.MMMMM.dd GGG h:mm aaa |
02001.July.04 AD 12:08 PM |
EEE, d MMM yyyy HH:mm:ss Z |
Wed, 4 Jul 2001 12:08:56 -0700 |
yyMMddHHmmssZ |
010704120856-0700 |
Zum Überprüfen dient dieser Online-Test (externer Link).
Für Entwickler
Die Funktionalität der Datumskonvertierung beruht auf der in Java implementierten SimpleDateFormat Klasse.
Werte mit Gültigkeitsdatum¶
- Ein Wert in einem Datensatz kann ein Gültigkeitsdatum haben und bleibt gültig, bis ein neuer Wert mit einem neuen Datum eingetragen wird.
- Der alte Wert bleibt einsehbar, auch in Listen und Pivotlisten.
- Eine Selektion ist nur möglich, wenn das Feld bei der Feldkonfiguration mit der Option mit Liste für Verlaufsinformation angelegt wurde.
- Um Werte mit Gültigkeitsdatum zu importieren, wird die entsprechende Importzeile ergänzt.
AcctNumber;Date;Value
DE123456789;01.01.2018;150
DE123456789;02.01.2018;200
DE123456789;03.01.2018;95
DE123456789;04.01.2018;80
DE123456789;05.01.2018;110
<ImportSection recordtype="ACCT">
<Reference>AccNr</Reference>
<Field>AccNr=getChar('AcctNumber')</Field>
<Field>Value[time(date('dd.MM.yyyy',getChar('Date')))]=getChar('Value')</Field>
</ImportSection>
Update-Modus für den Datenimport
Um Werte im zeitlichen Verlauf zu speichern, müssen die Datensätze aktualisiert werden können. Das kann nur durchgeführt werden, wenn der ImportModus auf u
(update) oder nu
(neu und update) gesetzt wird.
Import ohne Datenmodell¶
Beim Import von Daten ohne Datenmodell für den Uniplex müssen Sie zusätzliche Attribute für jedes Feld verwenden. Diese Attribute definieren den Feldtyp im Uniplex oder in benutzerdefinierten Anwendungen und den Basisfeldtyp für die Datenverwaltung. Beide Attribute sind erforderlich.
<Field fieldType="[.....]" baseType="[.....]">
<Field fieldType="C" baseType="0">[.....] = [.....]</Field>
<Field fieldType="M" baseType="2">[.....] = [.....]</Field>
Werte für Feldtypen¶
Tabelle für gültige Kombinationen im Uniplex Datenmodell
Feldtyp | Bedeutung | Basisfeldtyp | Bedeutung Basisfeldtyp |
---|---|---|---|
C | Zeichen | 0 | Felder mit Feldinhaltsliste |
N | positive Ganzzahlen (Integer) | 0 | Felder mit Feldinhaltsliste |
F | Gleitkommazahlen (Float/Double) | 0 | Felder mit Feldinhaltsliste |
D | Datum | 0 | Felder mit Feldinhaltsliste |
T | Timestamp (zwingend Konvertierung mit der Funktion time() ) | 0 | Felder mit Feldinhaltsliste |
I | interner Verweis | 0 | Felder mit Feldinhaltsliste |
J | JSON-Feld | 1 | Daten-Container / JSON Felder |
B | Datei | 1 | Daten-Container / JSON Felder |
M | Mehrzeiliges Textfeld | 2 | Felder ohne Feldinhaltsliste (mehrzeilige, kurze binärdaten o.ä.) |
-- | -- | 3 | Felder mit Feldinhaltsliste, die auch die Zeitscheibeninformationen umfasst |
Nur erlaubte Kombinationen verwenden!
Die erlaubten Kombinationen müssen beachtet werden, da einige Feldtypen nur mit bestimmten Basis-Feldtypen kompatibel sind.