SAP Data Hub ist ein Tool womit z.B. externe Prozesse, Tools und andere Systeme sehr gut orchestriert werden können. Ein Use Case ist es bsp. das SAP Data Services (ein mächtiges ETL Werkzeug) anzubinden und ein bereits bestehenden Prozess (in Data Services nennt man das "Job") orchestrieren kann. In diesem Blog widme ich mich diesem Szenario und starte einen ganz einfachen Data Services Job mit Hilfe von Data Hub. Im reellen Leben würde man natürlich noch deutlich mehr machen und Data Hub nicht nur nutzen um einen Data Services Job zu triggern, aber hier soll es primär nur um die Machbarkeit gehen bzw. um zu zeigen, wie die Anbindung funktioniert bzw. aussieht.
Als Basis verwende ich SAP Data Hub in der Version 2.3 und SAP Data Services in der Version 4.2.
In meinem Fall habe ich eine CAL Landschaft verwendet. Als Kunde muss natürlich sichergestellt werden, dass Data Hub auf Data Services zugreifen kann (über das Netzwerk). Über einen Ping und Portscanner kann das zuerst überprüft werden um sicher zu gehen, dass diese Kommunikation auch funktionieren wird.
Data Services:
In Data Services habe ich einen sehr einfachen Prozess erstellt, der eine csv Datei mit Adressdaten ausliest und diese 1:1 in eine Datenbanktabelle schreibt. Data Hub soll diesen Job starten.
Falls der ein oder andere mehr wissen möchte über den erstellten Prozess, hier die Screenshots der Quelle, des Query und des Ziels (nachdem der Job schon gelaufen ist...):
Die Quelldatei:
Das Query dazwischen:
und die beschriebene DB (Template Tabelle erstellt in Data Services):
SAP Data Hub:
So nun zurück zur Integration:
Jeder Batchprozess in Data Services kann, via Data Hub, angetriggert werden. Technisch gesehen, ist das ein Webservice Aufruf.
Um das zu realisieren, müssen wir zuerst in Data Hub eine Verbindung zum System Data Services herstellen. Sobald diese Verbindung hergestellt ist, kann man die Batchprozesse sehen, die dieser User in Data Services nutzen/starten kann.
Zuerst erstellen wir also die Verbindung in Data Hub. Dazu gehen wir in das "Connection Management":
und klicken hier auf "create":
Anschließend erscheint ein leeres Feld:
Hier müssen wir nun die Verbindungsparameter zu Data Services eintragen:
In meinem Beispiel habe ich den Namen "Data Services" gewählt, als Connection Typ "DATASERVICES" selektiert und anschließend den Hostname / IP, Port, CMS Host, CMS Port, Username und Passwort um auf Data Services Prozesse zuzugreifen, eingegeben. Das Passwort wird nicht dargestellt um anderen Usern keine Möglichkeit zu geben darauf zuzugreifen.
(Wer sich nicht sicher ist zwecks Hostname, kann versuchen sich mit dem Data Services Client anzumelden, dann steht bei der Anmeldung an Data Services (technisch an der CMC) sowohl der Hostname wie auch der Port. Alternativ den Link zur CMC.)
Anschließend kann man in der Übersicht der verbundenen Systeme den neuen Eintrag sehen:
Die Verbindung kann man nun testen, in dem man bei der Verbindung (in diesem Fall DATASERVICES) rechts auf die 3 Punkte klickt und "Check Status" anklickt:
Dann sollte folgendes angezeigt werden:
Wenn man einen Fehler hat, erhält man wahrscheinlich folgenden Screenshot angezeigt:
Wenn alles ok ist kann man mit dem Designen in Data Hub weitermachen:
In Data Hub habe ich also einen "Graph" designed (durch Drag&Drop), um den erstellten Data Services Job anzutriggern. Das sieht dann folgendermaßen aus:
Im Data Services Operator kann man nun selektieren, welcher Job angetriggert werden soll:
Zuerst muss man die Verbindung selektieren (es kann ja gut sein, dass verschiedene Data Services Systeme angeschlossen sind, bsp. Dev, Qual und Prod). Anschließend selektiert man den Job, den man in dem aktuellen Operator orchestrieren möchte (zuerst das Repository in dem der Job gespeichert ist und anschließend den Job selbst):
Nun muss nur noch der Jobserver selektiert werden, denn es ist häufig so, dass man mehrere Jobserver nutzt, um die Last zu verteilen. Sollte man nur einen verwenden, wird nur dieser angezeigt:
Wenn man den Job selektiert hat, sieht das dann so aus:
Wenn man im Data Services Job "Variablen" oder "Substitution Parameter" verwendet, werden diese hier angezeigt. Werden Systemkonfigurationen verwendet, werden diese als "System Configuration" zur Selektion zur Verfügung gestellt.
Der optionale Terminal Operator ist nur als Anzeige, ob der Data Services Job gestartet wurde. Wenn das der Fall ist, sieht das folgendermaßen aus:
Wenn man sich nun in der Data Services Management Console anmeldet, sieht man den Batchjob als gestartet und beendet (erkennbar an dem grünen Häkchen für erfolgreich und das eine Endzeit angegeben ist):
Bei Bedarf kann man natürlich noch in das Errorlog schauen um den Grund für einen Abbruch zu identifizieren. In meinem Fall sind die Daten ohne Probleme in die Datenbank geflossen.
In Data Hub kann ich mir nun ebenfalls ansehen, das der Data Services Job erfolgreich angetriggert und beendet wurde:
Anhand der grünen Häkchen sieht man, das alles erfolgreich durchgeführt wurde.
Damit ist die Orchestrierung bereits beendet und die Integration erfolgreich durchgeführt.
Um diese Integration von Data Hub und Data Services nachzustellen, kann man genau die gleichen Steps durchführen (natürlich angepasst um die entsprechenden Hostnames, bzw. Verlinkungen). Damit kann die Integration durchgeführt werden zwischen beiden Tools.
Viel Spaß dabei!