Multiple Data Sources mit HCL Domino
In modernen Domino-Umgebungen reicht die einfache Punkt-zu-Punkt-Übertragung selten aus. Komplexe Prozesse benötigen gleichzeitig Daten aus mehreren Notes-Datenbanken, relationalen Datenbanksystemen, Dateien, Webdiensten und weiteren Schnittstellen.
Die zentrale Herausforderung lautet: „Wie lassen sich heterogene Quellen und Zielsysteme innerhalb eines einzigen, kontrollierten Ablaufs zusammenführen und verarbeiten?“
Eine Datenverbindung ist noch kein Integrationsprozess
Klassische Connectoren bieten häufig nur Punkt-zu-Punkt-Transfers. Reale Geschäftsprozesse müssen jedoch Daten aus mehreren Quellen kombinieren, bevor Entscheidungen getroffen oder Werte in verschiedene Systeme zurückgeschrieben werden können.
- häufig auf einzelne 1:1-Verbindungen ausgerichtet
- begrenzte Verarbeitungslogik während des Transfers
- verteiltes Error-Handling über mehrere Module
- hoher Overhead bei vielen Einzelabfragen
- gleichzeitiger Zugriff auf mehrere Server und Systeme
- regelbasierte Transformation direkt im Ablauf
- servernahe Performance und zentrales Logging
- kontrollierte Fehlerbehandlung und reproduzierbare Verarbeitung
Skalierbar und servernah für große Datenmengen
Die Domino API-Engine läuft als native Server-Komponente. Verbindungen und Datenbankhandles werden beim Scriptstart geöffnet und über die Verarbeitung hinweg wiederverwendet. Dadurch entfällt der wiederholte Initialisierungsaufwand separater Agentenläufe oder ständiger Connect-Disconnect-Zyklen.
Ein konkret testbarer Ablauf mit Notes und MySQL
Das Evaluation-Paket enthält ein bewusst überschaubares Beispiel mit zwei Domino-Datenbanken, zwei MySQL-Datenbanken und CSV-Testdaten. MySQL dient hier lediglich als unmittelbar reproduzierbare Referenzimplementierung; das zugrunde liegende Konzept ist nicht auf MySQL beschränkt.
- Auftragsdaten aus einer Domino-Datenbank
- Kundenstammdaten aus einer zweiten Domino-Datenbank
- Artikeldaten und Preise aus einer MySQL-Datenbank
- Kundensaldo aus einer weiteren MySQL-Datenbank
- CSV-Dateien zur Vorbereitung der Testdaten
Das Demo-Script kombiniert diese Daten, erzeugt eine Auftragsbestätigung als Domino-Antwortdokument, aktualisiert den Kundensaldo und markiert den ursprünglichen Auftrag nach erfolgreicher Verarbeitung als erledigt.
INCLUDE("!!MULTIPLE_DATA_SOURCES_CONFIG");
/* Open the two Domino databases. */
OrdersDBh := @OpenDB(OrdersNotesDBPath);
CustomersDBh := @OpenDB(CustomersNotesDBPath);
/* Initialize two independent MySQL connections. */
MySQLhCustomers := @MySQLInit;
MySQLhItems := @MySQLInit;
@MySQLConnect(
MySQLhCustomers;
MySQLHostCustomers;
MySQLUserCustomers;
MySQLPasswordCustomers;
MySQLDefaultDatabaseCustomers
);
@MySQLConnect(
MySQLhItems;
MySQLHostItems;
MySQLUserItems;
MySQLPasswordItems;
MySQLDefaultDatabaseItems
);
/* Select all unprocessed order documents. */
OrdersSelectFormula :=
"SELECT Form=\""+OrderFormName+"\" & Done!=\"1\";";
IDLOrderDocs := @ScanDB(
OrdersDBh;
OrdersSelectFormula;
@AnyAllDay;
1;
1
);
/* Read the keys required for the combined processing. */
ThisOrderDoch := @OpenNoteByID(
OrdersDBh;
ThisOrderDocID;
ThisOrderDoch
);
CustomerNr := CustomerNr[ThisOrderDoch];
ItemNr := ItemNr[ThisOrderDoch];
/* Combine the Domino and MySQL data. */
CALL:DoBookOrder(
&MySQLhCustomers;
&MySQLhItems;
&CustomersDBh;
CustomerNr;
ItemNr;
&RetDoUpdate
);
/* Update the source order only after successful processing. */
IF(RetDoUpdate = 1){
Done[ThisOrderDoch] := "1";
}
ThisOrderDoch := @CloseNote(
ThisOrderDoch;
RetDoUpdate
);
Das Multiple-Data-Sources-Beispiel selbst testen
Das aktualisierte Evaluation-Paket enthält das Config-Include-Script, das Prepare-Script, das eigentliche Demo-Script, die Domino-Testdatenbanken und die benötigten CSV-Testdaten.
