In diesem ersten Teil erarbeiten wir ein komplexes Integrationsszenario, besprechen den Fahrplan zur Lösung und beginnen mit der Umsetzung auf SAP Cloud Platform Integration
Hallo Technologie-Reisende!
Nachdem wir geklärt haben, was ein ERP-System und was Enterprise Integration bedeutet, tauchen wir nun etwas tiefer in die Integrationswelt ein und verstehen die technischen Zusammenhänge. In dieser vierteiligen Blogserie konzentrieren wir uns auf praxisnahes Lernen und setzen ein durchgängiges Integrationsszenario mit SAP Cloud Platform Integration um (im Folgenden SAP CPI genannt).
Ich höre und ich vergesse. Ich sehe und ich erinnere mich. Ich tue und ich verstehe. -Konfuzius
In diesem ersten Teil erarbeiten wir ein komplexes Integrationsszenario, besprechen den Fahrplan zur Lösung und beginnen mit der Umsetzung auf SAP CPI.
Szenario
Wir betreiben einen Supermarkt namens 'Northwind'. Für die Bestandsverwaltung pflegen wir eine Liste von Produkten samt relevanter Details wie Produktname, Kategorie, verbleibende Lagereinheiten, Stückpreis und Lieferanten-ID. Außerdem haben wir für jedes Produkt einen Schwellenwert namens 'Reorder Level' (Meldebestand) definiert. Sobald der Lagerbestand eines Produkts diesen Schwellenwert erreicht oder unterschreitet, wird eine Nachbestellung fällig.
Jeden Tag müssen wir die Liste der nachzubestellenden Artikel (im CSV-Format) zusammen mit den Lieferantendaten per E-Mail versenden, damit unser Filialleiter die Bestellungen auslösen kann.
Unsere Datenquelle:
Für unseren Anwendungsfall verwenden wir einen öffentlichen OData-Service (Northwind). Nachfolgend einige Beispiele dafür, wie die Datenfeeds für unser Bestandsverwaltungssystem aussehen:
Liste der Produkte:
Liste der Produkte: https://services.odata.org/Northwind/Northwind.svc/Products.
Liste der Lieferanten:
Liste der Lieferanten: https://services.odata.org/Northwind/Northwind.svc/Suppliers
Vorgehen
Statt kopfüber in die Entwicklung des Integration Flow zu springen, teilen wir das Problem in kleinere Teile auf und lösen einen Teil nach dem anderen. Bei der Analyse des Szenarios lassen sich folgende Schritte zur Lösung erkennen:
- Die Integration so konfigurieren, dass sie täglich läuft
- Die Liste der Produkte beziehen
- Für jedes Produkt in der Liste feststellen, ob eine Nachbestellung erforderlich ist
- Falls das Produkt nachbestellt werden muss, die Lieferanteninformationen beziehen
- Eine Liste der nachzubestellenden Produkte samt Lieferanteninformationen erstellen
- Die Liste in das CSV-Format konvertieren
- Die Liste per E-Mail an den Filialleiter senden
Nachdem wir die einzelnen Schritte identifiziert haben, können wir mit der Entwicklung in SAP CPI beginnen. Wir gehen davon aus, dass Sie die Grundlagen von SAP CPI bereits kennen. Falls Sie sich Ihres CPI-Verständnisses noch nicht sicher sind, empfehle ich Ihnen, zunächst die ersten 3 Seiten dieses Leitfadens durchzugehen: https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/e5724cd84b854719973afe0356ea128b.html
Umsetzungsschritte
Schritt 1: Die Integration so konfigurieren, dass sie täglich läuft
(Verwendete technische Konzepte: Scheduler-Start Timer)
Wenn Sie einen neuen Integration Flow anlegen, enthält er standardmäßig ein Start Message Event.
Dieses ersetzen wir durch einen Start Timer, damit wir den Integration Flow zeitgesteuert einplanen können. Start Timer und Start Message gehören in SAP CPI zu den Message Events und markieren den Beginn einer Message Pipeline. Sie unterscheiden sich darin, dass ein Start Message Event eine Nachricht vom Sender erwartet, während ein Start Timer nach einem Zeitplan ausgeführt werden kann. In einem Szenario, in dem das Quellsystem eine Nachricht an den Integration Flow sendet, die verändert und an das Zielsystem weitergereicht werden soll, kommt also ein Start Message Event zum Einsatz. Und in Fällen, in denen die Quelldaten abgefragt werden müssen oder der Integration Flow nach einem Zeitplan laufen soll, wird ein Start Timer verwendet.
Wir planen den Integration Flow so ein, dass er täglich läuft. Die Konfiguration sieht wie folgt aus:
Zum Testen des Integration Flow können Sie den Scheduler auf 'Run Once' setzen. So läuft der Integration Flow bei jedem Deployment einmal und Sie können ihn unmittelbar testen.
Wenn Sie mehr über Message Events erfahren möchten, lesen Sie den folgenden Blogbeitrag: https://blogs.sap.com/2015/01/16/blog-7-message-events-in-integration-flows/
Schritt 2: Die Liste der Produkte beziehen
(Verwendete technische Konzepte: Request-Reply Shape)
Unsere Produktliste lässt sich über das OData-Protokoll abrufen. Falls Sie das OData-Protokoll nicht kennen, keine Sorge: Diese Seite enthält alles, was Sie an dieser Stelle wissen müssen.
Nachdem wir nun geklärt haben, wo unsere Produktliste liegt und welches Protokoll wir zum Abruf verwenden, setzen wir das in SAP CPI um.
Dafür nutzen wir einen Request Reply Call. Das Request Reply Shape wird in SAP CPI für externe Aufrufe verwendet, um Daten zu lesen, zu aktualisieren, anzulegen oder zu löschen. In Szenarien wie unserem, in denen wir Daten für die Weiterverarbeitung in SAP CPI abrufen wollen, kommt häufig ein Request Reply Shape zum Einsatz. Mehr zu Request Reply lesen Sie hier: https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/dc39fdd4a44d4b9a9eabb56f49434250.html
Klicken Sie auf Call->External Call->Request Reply:
Platzieren Sie das Shape so auf dem Canvas, dass es zwischen Start- und End-Event liegt:
Ein Request Reply benötigt einen Receiver als Gegenstelle. Klicken Sie auf Participant->Receiver:
Platzieren Sie den Receiver so auf dem Canvas, dass er sich bequem mit dem im vorherigen Schritt hinzugefügten Request Reply Shape verbinden lässt:
Klicken Sie auf das Request Reply Shape und ziehen Sie einen Connector zum hinzugefügten Receiver:
Wählen Sie OData->OData V2 als Adaptertyp:
Der OData-Adapter wird wie abgebildet konfiguriert:
Sobald Sie Adresse und Authentifizierungsparameter eingegeben haben, klicken Sie auf den Reiter Processing:
Klicken Sie neben dem Resource Path auf Select:
Klicken Sie auf Step 2, wählen Sie 'Products' als Entität aus, und Sie sehen die Liste der Felder, die zu dieser Entität gehören:
Für unseren Zweck benötigen wir die Daten aller Felder. Klicken Sie also auf Select All Fields und anschließend auf Step 3.
Wir brauchen die Produktdaten, um zu ermitteln, welche Produkte nachbestellt werden müssen. Daher können wir Produkte, für die bereits eine Bestellung ausgelöst wurde, sowie ausgelaufene Produkte guten Gewissens ausschließen.
Wir wählen also die folgenden Filter:
Klicken Sie auf Finish. Der Integration Flow sollte an dieser Stelle so aussehen:
Fazit
Wir haben unseren Integration Flow so konfiguriert, dass er die relevanten Daten aus der Produktliste bezieht. Sie können den Integration Flow testen, indem Sie ihn mit dem Log Level Trace deployen und die Nachricht am End Message Event betrachten. Trace ist ein Log Level in SAP CPI, mit dem wir den Nachrichtenfluss im Integration Flow nachverfolgen können. Das ist besonders für Test- und Debugging-Zwecke nützlich. Eine Anleitung zur Verwendung des Log Level Trace finden Sie in diesem gut geschriebenen Blogbeitrag von Ines.
An dieser Stelle legen wir eine Pause ein, damit wir uns nicht mit zu vielen Informationen auf einmal überladen. In diesem Blogbeitrag sind wir Message Events begegnet und haben einen Start Timer in unserer Integration eingesetzt. Außerdem haben wir unter anderem die verschiedenen Scheduling-Optionen des Start Timer, den Einsatz des Request Reply Shape und den Aufbau von Queries für OData-Services kennengelernt.
In den nächsten Blogbeiträgen lernen wir weitere SAP CPI Shapes kennen und setzen sie zur Lösung unserer Aufgabe ein. Es empfiehlt sich, sich mit den Shapes vertraut zu machen, sobald wir ihnen begegnen. Das war es für den Moment, wir setzen unsere Reise durch die Enterprise Integration bald fort. Bis dahin: auf Wiedersehen und viel Freude beim Lernen!