Hallo Technologie-Reisende!
Willkommen zum letzten Teil von Enterprise Integration mit SAP CPI. In den ersten drei Teilen ( 1, 2 & 3 ) haben wir unser Integrationsszenario erarbeitet, das Vorgehen in 7 Schritte aufgeteilt und außerdem die ersten 4 Schritte der Lösung besprochen. Beim Aufbau unseres Integration Flow haben wir Message Events, Start Timer und einige Scheduling-Optionen, das Request Reply Shape, das Groovy Script Shape, General und Iterative Splitter, den Content Enricher und den Content Modifier kennengelernt.
In diesem Teil besprechen wir die verbleibenden Schritte:
- 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
5. Eine Liste der nachzubestellenden Produkte samt Lieferanteninformationen erstellen
(Verwendete technische Konzepte: Content Modifier)
Bislang haben wir die Details der nachzubestellenden Produkte samt der zugehörigen Lieferanteninformationen eingesammelt. Die daraus resultierenden Daten sehen so aus:
Als Erstes müssen wir dieser Liste umschließende Tags hinzufügen, damit sie in gültigem XML-Format vorliegt und für die Konvertierung nach CSV bereit ist. Dafür verwenden wir einen Content Modifier. Fügen Sie einen Content Modifier zwischen dem Gather Shape und dem End Message Shape ein.
Um die umschließenden Tags hinzuzufügen, setzen Sie den Message Body in diesem Content Modifier einfach wie unten gezeigt:
Nach dem Durchlaufen dieses Shape sieht der Message Body so aus:
<ReorderList>
<Product>
<CategoryID>8</CategoryID>
<Discontinued>false</Discontinued>
<UnitPrice>25.8900</UnitPrice>
<ProductName>Nord-Ost Matjeshering</ProductName>
<QuantityPerUnit>10 - 200 g glasses</QuantityPerUnit>
<UnitsOnOrder>0</UnitsOnOrder>
<ProductID>30</ProductID>
<ReorderLevel>15</ReorderLevel>
<UnitsInStock>10</UnitsInStock>
<SupplierID>13</SupplierID>
<ContactName>Sven Petersen</ContactName>
<ContactTitle>Coordinator Foreign Markets</ContactTitle>
<CompanyName>Nord-Ost-Fisch Handelsgesellschaft mbH</CompanyName>
<Address>Frahmredder 112a</Address>
<Phone>(04721) 8713</Phone>
<PostalCode>27478</PostalCode>
<Country>Germany</Country>
</Product>
<Product>
:
:
:
</Product>
</ReorderList>
6. Die Liste in das CSV-Format konvertieren
(Verwendete technische Konzepte: Message Transformer - XML to CSV Converter)
Um diese Liste in das CSV-Format zu konvertieren, verwenden wir einen Message Transformer vom Typ XML to CSV Converter. SAP CPI stellt verschiedene Converter für die Umwandlung von XML nach JSON, von XML nach CSV und umgekehrt bereit. Mehr über Message Transformer und die verschiedenen Converter lesen Sie hier.
Fügen Sie den XML to CSV Converter zwischen dem im vorherigen Schritt hinzugefügten Content Modifier und dem End Message Shape ein.
Konfigurieren Sie den Converter wie unten gezeigt. Geben Sie den Pfad zu den zu konvertierenden Daten an, in unserem Fall liegen die Produkt- und Lieferantendetails unter /ReorderList/Product. Wir verwenden das Semikolon als Feldtrenner und möchten die Feldnamen als Kopfzeile in die CSV-Liste aufnehmen.
Tipp: Das Semikolon ist in der Regel der bevorzugte Trenner, da es unerwartetes Verhalten bei Währungsangaben und Ziffergruppierungen verhindert und in Texten kaum vorkommt.
Nach dem Durchlaufen dieses Shape liegt die Produktliste im CSV-Format vor, mit den Kopfzeilen in der ersten Zeile.
7. Die Liste per E-Mail an den Filialleiter senden
(Verwendete technische Konzepte: Mail-Adapter, Security Material)
Nachdem die Liste nun im CSV-Format vorliegt, senden wir sie per E-Mail an den Filialleiter. Dafür verwenden wir einen Mail-Adapter.
Bevor Sie einen Mail-Adapter hinzufügen, fügen Sie dem Integration Flow einen Receiver hinzu und platzieren ihn neben dem End Message Shape:
Um einen Mail-Adapter hinzuzufügen, klicken Sie auf das End Message Shape und verbinden es mit dem im vorherigen Schritt hinzugefügten Receiver.
Wählen Sie 'Mail' als Adaptertyp.
Bevor wir diesen Adapter konfigurieren, hinterlegen wir die Zugangsdaten der zu verwendenden E-Mail-Adresse in den SAP CPI Security Materials.
Speichern Sie den Integration Flow und klicken Sie links auf das Augensymbol, um zur Operations View zu wechseln. Klicken Sie unter Manage Security auf die Kachel Security Material und anschließend auf die Schaltfläche Add oben rechts im Bildschirm. Wählen Sie User Credentials.
Tragen Sie im Feld User die E-Mail-Adresse ein, über die die E-Mails versendet werden sollen, dazu das Passwort dieser Adresse, und vergeben Sie einen Namen für diese Credential, über den wir sie später ansprechen können. Deployen Sie die Credentials. Bitte stellen Sie sicher, dass die E-Mail-Adresse für den API-Zugriff freigeschaltet ist, sonst können wir über unseren Integration Flow keine E-Mails versenden.
Kehren wir nun zu unserem Integration Flow zurück und öffnen ihn im Bearbeitungsmodus. Klicken Sie auf den Mail-Adapter und wechseln Sie auf seinen Reiter Connection:
Geben Sie im Feld Address die Adresse des SMTP-Servers und die zu verwendende Portnummer an. Wenn Sie beispielsweise eine Gmail-Adresse verwenden, können Sie hier smtp.gmail.com:587 eintragen. Entsprechend können Sie bei einer Microsoft-Outlook-Adresse smtp.office365.com:587 in dieses Feld eintragen.
Legen Sie die Werte für Proxy Type, Timeout und Protection passend zu Ihrem Anwendungsfall fest. Wählen Sie als Authentication-Typ Plain User/Password und geben Sie unter Credential Name den Namen der zuvor gespeicherten Credential an.
Wechseln Sie anschließend auf den Reiter Processing und geben Sie die Details für die zu versendende E-Mail an, etwa die Absenderadresse. Bitte beachten Sie, dass dies dieselbe E-Mail-Adresse ist, die wir beim Speichern der Credentials auf CPI angegeben haben. Geben Sie die Empfängeradresse sowie den Inhalt der E-Mail unter Mail Body an.
Da wir auch die Liste der nachzubestellenden Produkte versenden müssen, fügen wir sie als Anhang hinzu. Geben Sie für den Anhang einen Name der anzuhängenden Datei an und hängen Sie .csv an diesen Namen an, damit sichergestellt ist, dass eine CSV-Datei an den Filialleiter geht. Geben Sie als Mime-Type Text/CSV an. Die Liste der nachzubestellenden Produkte lag im CSV-Format im Message Body vor, daher geben wir als Source Body an. Wir hätten den Mail-Anhang auch aus den Message Headers erzeugen können, dafür hätten wir als Source Header angegeben und den Header Name festgelegt. Ausführliches zum Mail-Adapter lesen Sie hier.
Nachdem wir nun auch den Mail-Adapter konfiguriert haben, können wir diesen Integration Flow speichern und deployen. Nach dem Deployment läuft der Integration Flow gemäß dem definierten Zeitplan, ermittelt, welche Produkte nachbestellt werden müssen, und sendet die Liste im CSV-Format an den Filialleiter. Damit haben wir aus einem zunächst generischen OData-Service einen maßgeschneiderten Report gemacht, der mit SAP CPI verarbeitet und zugestellt wird.
In dieser Blogserie haben wir verschiedene Shapes in SAP CPI kennengelernt, während wir einen Integration Flow aufgebaut haben. Die besprochenen Schritte sind allerdings nur eine von vielen möglichen Lösungen für diesen Anwendungsfall. Statt Plain Text als Incoming Format anzugeben, hätten wir beispielsweise auch das XML-Format verwenden können. In dem Fall hätten wir eine Multimap-Message gebildet, und bei der XML-zu-CSV-Konvertierung wäre der Pfad zum Quellelement etwas anders ausgefallen.
Ebenso hätten wir statt eines Scripts nach dem Content-Enrichment-Schritt, das den XML-Body mit allen Daten auf derselben Hierarchieebene bildet, auch ein Message Mapping verwenden können. Eine weitere Lösung für denselben Schritt bestünde darin, alle relevanten Daten mit einem Content Modifier in Message Properties zu extrahieren und den Message Body im gewünschten Format anschließend mit einem weiteren Content Modifier zu bilden. Es ist also möglich, mehrere Lösungen für einen Anwendungsfall zu haben, und in diesem Fall müssen wir die Vor- und Nachteile jeder Lösung abwägen, um die für uns günstigste auszuwählen.
Nun ist es Zeit, sich zu verabschieden. Es war eine spannende Reise, und ich bin sicher, dass Sie sich bei der Integration mit SAP CPI deutlich sicherer fühlen als zuvor. Wir melden uns bald mit weiteren Beiträgen zur Enterprise Integration zurück. Bis dahin: auf Wiedersehen und viel Freude beim Lernen!