Import von Adressbucheinträgen
◄ Zurück zu Weiteres Beispiel für Zuordnungskriterien
Arbeitsschritte auf dieser Seite:
Dieses Beispiel setzt Zugriff auf die Lobster_data-Installation, auf der Lobster Data Platform / Orchestration betrieben wird, ebenso voraus wie Grundkenntnisse in der Bedienung von Lobster_data (Profile anlegen).
Zum Abschluss des Tutorials kann die folgende Aufgabenstellung ausgeführt werden, um das Zusammenspiel zwischen Lobster_data und Lobster Data Platform / Orchestration kennenzulernen (s. a. Integration Lobster_data).
Konkret soll eine im CSV-Format vorliegende Liste von Adressen in Lobster Data Platform / Orchestration importiert werden, um einem bestehenden Adressbuch neue Adressbucheinträge hinzuzufügen oder bestehende zu aktualisieren.
Vorbereitungen für den Import
CSV-Datei anlegen
Die zu importierenden Daten sollen im CSV-Format als Datei vorliegen. Als Trennzeichen zwischen Spalten wird der Strichpunkt (";") erwartet. Folgende Spalten sollen je Zeile befüllt sein:
ADNR → eine Kennziffer für die Adresse, die beim Import in das Feld "Kontonummer" (accNumber) der Adresse übernommen wird.
►WICHTIG◄ Über diese Kennziffer soll festgestellt werden, ob bereits ein Adressbucheintrag für eine Adresse besteht, den der Import aktualisieren soll. Sie sollte also innerhalb der Liste eindeutig sein!NAME1 → der Text für das primäre Namensfeld "Name 1" (name1) der Adresse
STR → der Text für das Feld "Straße 1" (street1) der Adresse
NR → der Text für das Feld "Hausnummer" (streetNo) der Adresse
CC → der Text für das Feld "Länder-Kz" (countryCode) der Adresse (s. Dynamische Aufzählung Land)
ZIP → der Text für das Feld "Postleitzahl" (zipcode) der Adresse
PLACE → der Text für das Feld "Stadt" (city) der Adresse
Die folgenden Beispieldaten können verwendet werden, um eine entsprechende Datei zu erzeugen. Natürlich kann eine Datei mit derselben Struktur auch mit eigenen Daten vorbereitet werden.
ADNR;NAME1;STR;NR;CC;ZIP;PLACE
1234
;Duck, D.;Waltstr.;
23
;DE;
26725
;Emden-Hausen
1252
;Oliver, Roy;Burbank-Platz;
71
;DE;
88316
;Isny
1860
;Torpodofaktur KG;Blauweisswalder Str.;
186
;DE;
81060
;Giesing
1968
;SpringTimers sro;U Vesna;
218
;CZ;
19068
;Praha
1999
;Rogers, N.;Tafkap Drive;
1958
;US;
55488
;Minneapolis (MN)
Bereiten Sie aus diesen Daten oder nach diesem Vorbild eine CSV-Datei für den Import vor und speichern Sie sie in einem lokalen Verzeichnis unter dem Namen VIP_ADDR.csv!
Adressbuch erstellen
Als Ziel für den Adressimport soll ein eigenständiges Adressbuch eingerichtet werden.
Über den Menüpfad Verwaltung / Stammdaten / Adressbücher gelangen sie zur Übersicht für Adressbücher. Legen Sie ein neues Adressbuch mit Name "Empfänger" an und weisen sie diesem die im Bild ersichtlichen Typen (s. Firmentyp) zu:
Dem neu angelegten Adressbuch beim Speichern eine eindeutige interne ID (id) zugewiesen. Diese ganzzahlige Kennung wird in späteren Schritten verwendet, um das Adressbuch zu identifizieren.
►HINWEIS◄ Das Bild für die Spalte "ID" den Wert 105. Verwenden Sie den davon abweichenden ID-Wert Ihres Adressbuchs, wenn dieser Wert in den folgenden Schritten verwendet wird!
Import-Profil erstellen
Für den Import der Adressbucheinträge muss in Lobster_data ein neues Profil angelegt und dann wie in den folgenden Abschnitt beschrieben konfiguriert werden.
Basis-Daten
Parametrieren Sie den Reiter "Basis-Daten" des neuen Profils wie folgt:
Name → ein "sprechender" Name für die Aufgabe des Profils z. B. "ADDR_IMPORT_CNE" ("CNE" ist das interne Kürzel für den Firmentyp "Empfänger", s. Firmentyp)
Dokumentenart → CSV
Phase 1: Eingangsagent
Wählen Sie aus der Kategorie "Eventgesteuert" den Eingangsagenten Manu. Hochladen aus.
Phase 2: Parser
Für den Parser können die abgebildeten Standardeinstellungen bis auf eine Ausnahme übernommen werden:
Der Wert für Beginne bei Zeile sollte von 1 auf 2 erhöht werden, da die CSV-Datei Spaltennamen in der ersten Zeile beinhaltet, die natürlich nicht als Adressdaten gelesen werden sollen.
Phase 3: Mapping (Quellstruktur)
Die Quellstruktur für das Mapping in Phase 3 kann über die Funktion Struktur aus Datei-Analyse erzeugen weitgehend automatisch erstellt werden, indem die Datei "VIP_ADDR.csv" importiert und ausgewertet wird:
Die Funktion wird über das Menü unterhalb des Bereichs für die Quellstruktur aufgerufen. Sie ermöglicht den "Import" der lokal gespeicherten Datei über einen Dateibrowser oder per Drag & Drop.
Für die im Zuge der Datei-Analyse wählbaren Parameter im Dialog Datei analysieren können die Standardeinstellungen beibehalten werden:
Der Wert 1 für Zeile(n) bewirkt hier, dass im Unterschied zur Parser-Konfiguration (s. o.) die erste Zeile verarbeitet werden soll, um die Spaltennamen als Feldnamen zu interpretieren.
Mit den Optionen Als neue Testdatei hinzufügen und Testdaten laden und anzeigen gesetzt sind, steht die Datei für Tests zur Verfügung.
Die Datei-Analyse ergibt mit den Beispieldaten folgende Quellstruktur (inkl. der Anzeige von Test-Daten und Datentyp):
Der Knoten Row1 wurde automatisch eingefügt, um die Felder zusammenzufassen.
Für diesen Knoten ist als Satzarterkennung "Ist nicht: _____ nothing _____" festgelegt. Es werden also alle Zeilen der Datei als "Zeile" mit den gegebenen Feldern ausgewertet.
Phase 3: Mapping (Zielstruktur)
Vorlagen importieren
Die Zielstruktur muss passend für den geplanten Import aufgebaut werden. Dabei kommen in zwei Schritten Lobster_pro Vorlagen zum Einsatz:
Da ein Batch-Import ausgeführt werden soll, muss zunächst die Vorlage core:BatchImport in die Zielstruktur geladen werden.
Danach muss in den batch-Knoten der so erzeugten Zielstruktur noch die Vorlage base:AddressBookEntry mit der Option Struktur als Unterknoten einfügen geladen werden:
Einstellungen für den "BatchImport":
In der "Kopfebene" der BatchImport-Struktur muss im Feld trx_Control_attr die gewünschte Option für die Transaktionssteuerung (SINGLE oder BATCH) gewählt werden:
Mit der per Fixwert im Feld ausgewählten Option BATCH wird der Import aller Zeile insgesamt als Transaktion behandelt. Der Import ist dann entweder für alle "Zeilen" erfolgreich oder scheitert komplett.
Mit der alternativen Option SINGLE würde jede importierte Zeile als unabhängige Transaktion behandelt, die jeweils erfolgreich importiert werden kann oder nicht.
Im batch-Knoten wird die in der Schleife für alle importierten Zeilen wiederholte Import-Aktion definiert:
Im Feld action_attr wird hier als Fixwert CREATE_OR_UPDATE zugewiesen, da nur neue Adressbucheinträge entstehen sollen, wenn kein "passender" für eine Aktualisierung gefunden wird.
Alternative Optionen wären hier CREATE (nur neue hinzufügen), UPDATE (nur vorhandene aktualisieren) und DELETE (vorhandene löschen).
Der Knoten eventStorage wird nicht benötigt. Er kann gelöscht oder inaktiv gesetzt werden (s. o.).
Weitere Details sind für den Single-Import dokumentiert, der einer einzelnen Wiederholung des batch-Knotens entspricht.
►WICHTIG◄ Damit der batch-Knoten überhaupt für jede importierte Zeile wiederholt wird, muss dieser sich über einen Pfad auf den Knoten Row1 in der Zielstruktur beziehen.
Um diesem Pfad zu setzen, kann man entweder per drag & drop den Eingangsknoten auf den Zielknoten ziehen oder den Quellknoten im Feld Pfad in den Eigenschaften für Zielfeld/knoten angeben (im Bild gelb schattiert).
Suche nach "bekannten" Adressbucheinträgen definieren
Für den Import mit der Aktion CREATE_OR_UPDATE soll der search-Unterknoten werden, um eine Suche zu definieren, die für jede Quelldaten-Zeile prüft, ob ein eindeutiges Ziel für ein UPDATE identifiziert werden kann, oder per CREATE ein neuer Adressbucheintrag anzulegen ist.
Im konkreten Anwendungsfall sollen dazu folgende Kriterien untersucht werden:
Die als ADNR gelesene Kennung soll exakt gleich dem Wert des Adressfelds "Kontonummer" (address.accNumber) im Adressbucheintrag sein.
Der Adressbucheintrag soll in dem Adressbuch enthalten sein, das oben angelegt wurde. Dann erscheint dessen interne ID (im Beispiel: 105) im Feld addressBookId des Adressbucheintrags.
Die entsprechende Suche kann mit dem Abfragekonfigurator bequem aufgebaut und getestet werden, der in Lobster Data Platform / Orchestration über den Menüpfad Verwaltung / System / Abfragekonfigurator gestartet wird.
Als Gegenstand der Suche wird die Entität "Adressbucheintrag" ausgewählt.
|
|
Wenn die Suche wie beschrieben aufgebaut und per "Ausführen" (im Ribbon) erfolgreich getestet ist, kann ihre Definition in das Lobster_data-Profil übernommen werden:
►HINWEIS◄ Es ist alternativ auch möglich, dort dieselbe Struktur über das Einfügen von Lobster_pro Vorlagen für die enthaltenen Strukturen (core:SearchJunction, core:SimplePropertySearch) "nachzubauen" und entsprechend zu parametrieren. Allerdings ist diese Methode zumindest für etwas komplexere Suchen mit Sicherheit zeitaufwändiger und schwieriger fehlerfrei durchzuführen als das Kopieren und Einfügen über die Zwischenablage. |
|
Zum Einfügen in die Zielstruktur des Lobster_data-Profils sollte dort der search-Knoten selektiert sein. Dann wird die Funktion Lobster_pro Vorlagen aus dem Menü für die Zielstruktur gewählt.
►WICHTIG◄ Im daraufhin geöffneten Dialog muss die Option Struktur als Unterknoten einfügen ausgewählt werden. Der Konten search sollte aufgrund der Selektion in der Zielstruktur bereits ausgewählt sein.
|
|
Nun muss noch die Verknüpfung vom Quellfeld ADNR zum Vergleichswert für das "Kontonummer"-Feld innerhalb der zweiten "Einfachen Feldeinschränkung" (PropertyProjection) hergestellt werden.
►HINWEIS◄ Alternativ kann die Verknüpfung auch per Drag & Drop vom Quellfeld (1) zum Zielfeld (2) hergestellt werden.
►HINWEIS◄ Erst wenn dieser entfernt ist und das Eigenschaftenfeld Fixwert wieder verlassen wurde verschwindet das "Schloss"-Symbol für das betreffende Feld und der Wert (1234) in der Spalte Fixwert (soweit eingeblendet). |
|
Mapping für die Adressdaten
Abschließend muss noch das "Mapping", also die Zuordnung zwischen Quell- und Zielfelder für die eigentlichen Nutzdaten, eingerichtet werden. Dies kann wie im vorigen Schritt durch Selektieren und Verknüpfen oder per Drag & Drop erreicht werden.
|
|
Phase 5: Integration Unit
Für die Aufbereitung der Zielstruktur muss in Phase 5 die Option Integration Unit & Nachbehandlung benutzen aktiviert werden, damit eine Integration Unit ausgewählt werden kann.
Da für den Import in Lobster Data Platform / Orchestration eine XML-Struktur erwartet wird, muss hier die XMLNoTemplateUnit zum Erzeugen ausgewählt werden.
Die Standardwerte der Konfiguration können hier beibehalten werden, nur der Root node name muss auf den relevanten "Wurzelknoten" in der Zielstruktur verweisen. Das ist hier der Knoten "BatchImport".
Phase 6: Antwortweg
Die Minimalkonfiguration für die Phase 6 ist ein Antwortweg vom Typ "Eigene Klasse", für den die Klasse ImportResponder (_data-Responder) ausgewählt wird.
Unter Zusätzliche Parameter muss hier ein Lobster_data Login mit Anmeldedaten für Lobster Data Platform / Orchestration bereitgestellt werden (Details s. ImportResponder (_data-Responder)).
Das Lobster_data Login für eine angemeldete Sitzung kann über die Zwischenablage auch aus dem XML-Reiter im Abfragekonfigurator übernommen werden.
Allerdings muss dann das Namespace-Attribut xmlns:base="SCM.BASE" ergänzt werden, das der Abfragekonfigurator im übergeordneten core:SearchTask-Element definiert.
Kopiert, ... |
<base:LobsterDataLoginRequest [...] userName="admin" selectedRole="101" selectedCompany="51" ... /> |
... ergänzt: |
<base:LobsterDataLoginRequest xmlns:base="SCM.BASE" [...] userName="admin" selectedRole="101" selectedCompany="51" ... /> |
Im zweiten Reiter Inhalts-Einstellungen muss für den Inhalt die Option "Ausgabe von IU" ausgewählt werden, damit das BatchImport-XML aus Phase 5 an den Responder übergeben wird.
Anschließend muss die Konfiguration für den Antwortweg per Antwortweg übernehmen übernommen werden, bevor das Profil insgesamt gespeichert wird.
Import-Profil ausführen
Das Profil kann nun per "Neudurchlauf" mit der Datei "VIP_ADDR.csv" ausgeführt werden, um die enthaltenen Adressen zu importieren.
Wird dieser Vorgang mit einer überarbeiteten Version der Datei oder einer identisch strukturierten Datei mit anderen Daten wiederholt, sollten "bekannte" Adressbucheinträge aktualisiert und nur "neue" ergänzt werden.