{"id":4680,"date":"2020-07-02T12:23:00","date_gmt":"2020-07-02T10:23:00","guid":{"rendered":"https:\/\/integrtr.com\/?p=2431"},"modified":"2023-02-24T11:54:13","modified_gmt":"2023-02-24T06:24:13","slug":"unternehmensintegration-mit-sap-cpi-teil-3-von-4","status":"publish","type":"post","link":"https:\/\/integrtr.com\/de\/enterprise-integration-with-sap-cpi-part-3-of-4\/","title":{"rendered":"Unternehmensintegration mit SAP CPI (Teil 3 von 4)"},"content":{"rendered":"<h4 class=\"wp-block-heading\">In diesem Teil lernen wir Router, Content Modifier, Content Enricher und ein wenig mehr von Groovy Scripting kennen, um unseren Integrationsfluss weiter auszubauen<\/h4>\n\n\n\n<p>Hallo Technologietramper!<\/p>\n\n\n\n<p>Willkommen zum dritten Teil der Enterprise Integration mit SAP CPI. In den ersten beiden Teilen (lesen Sie die&nbsp;<a href=\"https:\/\/blogs.integrtr.com\/enterprise-integration-with-cpi-1\/\">erste<\/a>&nbsp;und&nbsp;<a href=\"https:\/\/blogs.integrtr.com\/enterprise-integration-with-cpi-2\/\">zweite<\/a>&nbsp;(falls noch nicht geschehen) haben wir unser Integrationsszenario festgelegt, den Ansatz in 7 Schritte unterteilt und auch die ersten drei Schritte der L\u00f6sung besprochen. Bei der Erstellung unseres Integrationsablaufs lernten wir Nachrichtenereignisse, Start-Timer und einige Zeitplanungsoptionen, Request Reply Shape, Groovy Script Shape, allgemeine und iterative Splitter kennen.<\/p>\n\n\n\n<p>In diesem Teil werden wir den 4. Schritt besprechen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Konfigurieren Sie die Integration so, dass sie jeden Tag ausgef\u00fchrt wird.<\/li>\n\n\n\n<li>Erhalten Sie die Liste der Produkte<\/li>\n\n\n\n<li>Ermitteln Sie f\u00fcr jedes Produkt in der Liste, ob eine Nachbestellung erforderlich ist.<\/li>\n\n\n\n<li><strong>Wenn das Produkt nachbestellt werden muss, Informationen \u00fcber den Lieferanten einholen<\/strong><\/li>\n\n\n\n<li>Erstellen Sie eine Liste der nachzubestellenden Produkte zusammen mit Lieferanteninformationen<\/li>\n\n\n\n<li>Liste in CSV-Format umwandeln<\/li>\n\n\n\n<li>Liste per E-Mail an den Manager senden<\/li>\n<\/ol>\n\n\n\n<p>Bis jetzt haben wir einzelne Produkte extrahiert und festgestellt, ob sie nachbestellt werden m\u00fcssen oder nicht. Wenn ein Produkt nachbestellt werden muss, setzen wir die Nachrichteneigenschaft&nbsp;<code>needsReorder<\/code>&nbsp;zu&nbsp;<code>wahr<\/code>. Andernfalls wird der Wert auf&nbsp;<code>falsch<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-4-if-a-product-needs-to-be-reordered-obtain-supplier-info\">Schritt 4: Wenn ein Produkt nachbestellt werden muss, erhalten Sie Informationen \u00fcber den Lieferanten<\/h3>\n\n\n\n<p><em>(Verwendete technische Konzepte: Message Router, Content Modifier, Gather, Content Enricher)<\/em><\/p>\n\n\n\n<p>Da wir nun wissen, welche Produkte nicht nachbestellt werden m\u00fcssen, k\u00f6nnen wir diese Produkte sicher aus dem Integrationsfluss ausschlie\u00dfen, da sie nicht weiter verarbeitet werden m\u00fcssen. Um diese Produkte von denen zu trennen, die nachbestellt werden m\u00fcssen, verwenden wir einen Message Router.<\/p>\n\n\n\n<p>Sehr h\u00e4ufig treten Szenarien auf, in denen wir Nachrichten, die durch unsere Integration flie\u00dfen, auf der Grundlage einer Bedingung trennen und einer unterschiedlichen Behandlung unterziehen m\u00f6chten. Ein Message-Router ist eine Form, die dazu dient, Nachrichten auf der Grundlage bestimmter Kriterien an verschiedene Routen zu senden. Sie k\u00f6nnen \u00fcber Router lesen&nbsp;<a href=\"https:\/\/help.sap.com\/viewer\/368c481cd6954bdfa5d0435479fd4eaf\/Cloud\/en-US\/d7fddbd52e3944d3a6d4e5b228c7e63b.html\">hier<\/a>.<\/p>\n\n\n\n<p>Um den Message Router in unseren Integrationsfluss aufzunehmen, klicken Sie auf Message Routing-&gt;Router.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Platzieren Sie das Router-Shape zwischen dem Groovy-Script-Shape und dem Message-End-Shape.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-1.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Bevor wir verschiedene Routen erstellen, m\u00fcssen wir entscheiden, wie viele Routen ben\u00f6tigt werden, welche Nachrichten auf diesen Routen gesendet werden sollen und welche Operationen auf ihnen durchgef\u00fchrt werden sollen. Wie bereits erw\u00e4hnt, werden wir zwei Routen erstellen - eine f\u00fcr Produkte, die nachbestellt werden m\u00fcssen, und eine f\u00fcr Produkte, die nicht nachbestellt werden m\u00fcssen. Wir wissen, welche Aktionen f\u00fcr die Produkte, die nachbestellt werden m\u00fcssen, durchgef\u00fchrt werden sollen. Wir wissen auch, dass die Produkte, die nicht nachbestellt werden m\u00fcssen, verworfen\/nullifiziert werden k\u00f6nnen.<\/p>\n\n\n\n<p>Wir werden einen Content Modifier Shape verwenden, um die Meldungen f\u00fcr Produkte, die nicht nachbestellt werden m\u00fcssen, aufzuheben. Wie der Name schon sagt, ist ein&nbsp;<a href=\"https:\/\/help.sap.com\/viewer\/368c481cd6954bdfa5d0435479fd4eaf\/Cloud\/en-US\/8f04a707843a40bf9f6e07ed55b93034.html\">Inhaltsmodifikator<\/a>&nbsp;shape erm\u00f6glicht es uns, eine Nachricht zu modifizieren, indem wir ihren Textk\u00f6rper, ihre Kopfzeilen und ihre Eigenschaften \u00e4ndern. In diesem Fall wollen wir den Nachrichtentext in Null \u00e4ndern.<\/p>\n\n\n\n<p>Um einen Content Modifier hinzuzuf\u00fcgen, klicken Sie auf Message Transformers-&gt;Content Modifier.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-2.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Platzieren Sie ihn zwischen dem Nachrichtenrouter und den Endnachrichtenformen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-4.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Klicken Sie nun auf den Inhaltsmodifikator, gehen Sie zur Registerkarte \"Nachrichtentext\" und setzen Sie den Wert von \"Text\" auf null.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Wenn Sie den Integrationsfluss an dieser Stelle speichern, sehen Sie Fehlermarkierungen an den Formen und Verbindungen:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-6.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Der Grund daf\u00fcr ist, dass wir f\u00fcr diese Route keine Routenbedingung angegeben haben und dass es nur eine Route gibt. Klicken Sie auf den Anschluss mit der Bezeichnung \"Route 1\" und w\u00e4hlen Sie auf der Registerkarte \"Verarbeitung\" die Option \"Standardroute\". Das bedeutet, dass alle Nachrichten diese Route durchlaufen m\u00fcssen, wenn sie keiner anderen Routenbedingung entsprechen. Der n\u00e4chste logische Schritt ist das Hinzuf\u00fcgen einer Route f\u00fcr Produkte, die nachbestellt werden m\u00fcssen.<\/p>\n\n\n\n<p>Wir hatten die Liste aller Produkte f\u00fcr die Bewertung in einzelne Produkte aufgeteilt, aber wir m\u00fcssen am Ende eine konsolidierte Liste an den Filialleiter senden. Zu diesem Zweck verwenden wir eine Gather-Form.&nbsp;<em><strong>Sammeln Sie&nbsp;<\/strong>shape wird verwendet, um Nachrichten auf einer oder mehreren Routen auf eine in der Konfiguration festgelegte Weise zu sammeln.<\/em><\/p>\n\n\n\n<p>Klicken Sie auf Message Routing-&gt;Gather und platzieren Sie es so auf der Leinwand:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-7.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Klicken Sie auf die Routerform und zeichnen Sie eine Verbindung zu Gather, die automatisch als 'Route 2' bezeichnet wird.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-8.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Klicken Sie auf Route 2 und setzen Sie unter der Registerkarte Verarbeitung die Bedingung auf : ${property.needsReorder} = 'wahr'<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-9.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Wir haben also festgelegt, dass, wenn die Nachrichteneigenschaft&nbsp;<code>needsReorder<\/code>&nbsp;wird eingestellt auf&nbsp;<code>wahr<\/code>muss die Nachricht dieser Route folgen, ansonsten wird die Standardroute genommen. Au\u00dferdem muss jede Route an einem bestimmten Punkt enden. Zeichnen Sie ein Verbindungsst\u00fcck von Gather Shape zu Message End shape, um die Route zu vervollst\u00e4ndigen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-10.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Jetzt werden wir die Verbindung zwischen&nbsp;<strong>Inhalt Modifikator<\/strong>&nbsp;und&nbsp;<strong>Ende s<\/strong>hape zur Verbindung mit&nbsp;<strong>Sammeln Sie&nbsp;<\/strong>stattdessen die Form. Warum sollten wir das tun, fragen Sie? Logischerweise h\u00e4tten wir es so lassen k\u00f6nnen, wie es war. Wir haben die Nachrichtenk\u00f6rper f\u00fcr Produkte, die nicht nachbestellt werden m\u00fcssen, gel\u00f6scht und den Prozess f\u00fcr diese Nachrichten danach beendet.  Dies h\u00e4tte jedoch dazu gef\u00fchrt, dass mehrere Nachrichten die Endform erreicht h\u00e4tten. Angenommen, es g\u00e4be 80 Produkte, die nicht nachbestellt werden m\u00fcssen, dann h\u00e4tten wir neben der konsolidierten Liste, die wir f\u00fcr die Produkte erstellen, die nachbestellt werden m\u00fcssen, noch 80 weitere Nachrichten, die den End Shape erreichen. Das k\u00f6nnte zu Problemen bei der Nachverfolgung dieser Nachrichten f\u00fchren, oder schlimmer noch, zu 80 unn\u00f6tigen E-Mails!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-42.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Wir m\u00fcssen die Form Gather konfigurieren und das Eingangsformat und den Aggregationsalgorithmus festlegen. Wir wissen, dass wir Nachrichten sammeln wollen, die Details zu Produkten enthalten, und auch einige Nachrichten mit nichtigem Textk\u00f6rper, und dass sie zu einer einzigen Nachricht verkettet werden sollen. Daher werden wir das Eingangsformat auf \"Plain Text\" und den Aggregationsalgorithmus auf \"Concatenate\" setzen. Sie k\u00f6nnen auch andere Optionen verwenden, je nach Relevanz und Ihren Vorlieben. Sie k\u00f6nnen mehr \u00fcber Gather Shape lesen&nbsp;<a href=\"https:\/\/help.sap.com\/viewer\/368c481cd6954bdfa5d0435479fd4eaf\/Cloud\/en-US\/94ef1f283e624ebdae747dbad67b38dc.html\">hier<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-11.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Wir haben zwar ein Shape zum Sammeln hinzugef\u00fcgt, aber keine Shapes f\u00fcr die Operationen, die an den Nachrichten auf Route 2 durchgef\u00fchrt werden m\u00fcssen, bevor sie gesammelt werden. Das Ziel ist es, jeder dieser Nachrichten Lieferanteninformationen hinzuzuf\u00fcgen, und dies kann in die folgenden Aufgaben unterteilt werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Produkt-ID aus Nachricht abrufen<\/li>\n\n\n\n<li>Abrufen von Lieferanteninformationen \u00fcber die Produkt-ID<\/li>\n\n\n\n<li>Nachrichtenk\u00f6rper bilden, die f\u00fcr die Verkettung geeignet sind<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-obtain-product-id-from-message\">1. Produkt-ID aus Nachricht abrufen<\/h3>\n\n\n\n<p>Zu diesem Zweck werden wir einen Content Modifier verwenden. Wie bereits erw\u00e4hnt, wird ein Content Modifier Shape verwendet, um den Nachrichtentext, die Eigenschaften und die Kopfzeilen zu \u00e4ndern. Wir haben ihn bereits verwendet, um den Nachrichtentext auf Null zu setzen. Jetzt werden wir die Produkt-ID aus dem Nachrichtentext extrahieren und sie in den Nachrichteneigenschaften speichern.<\/p>\n\n\n\n<p>F\u00fcgen Sie einen Inhaltsmodifikator zwischen den Formen Router und Gather ein.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-44.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Wir werden einen XPath-Ausdruck verwenden, um die Produkt-ID aus dem Nachrichtentext zu extrahieren: \/Produkte\/Produkt\/LieferantID<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-13.png\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-obtain-supplier-info-using-product-id\">2. Abrufen von Lieferanteninformationen \u00fcber die Produkt-ID<\/h3>\n\n\n\n<p>Zu diesem Zweck werden wir eine Form namens&nbsp;<strong><em>Inhaltsanreicherung'.<\/em><\/strong>die Daten aus einer externen Quelle (Lookup Message) abruft und sie zu den vorhandenen Daten (Original Message) hinzuf\u00fcgt. In unserem Fall m\u00f6chten wir den Produktdaten, die wir derzeit im Nachrichtentext haben, Informationen zum Lieferanten hinzuf\u00fcgen.<\/p>\n\n\n\n<p>Zum Hinzuf\u00fcgen einer&nbsp;<em>Inhaltliche Bereicherung<\/em>Klicken Sie auf Call-&gt;External Call-&gt;Content Enricher und platzieren Sie es zwischen Content Modifier und Gather Shapes:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-45.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Da wir Daten von einer entfernten Quelle abrufen werden, f\u00fcgen wir einen Empf\u00e4nger hinzu, wie wir ihn im ersten Schritt des Integrationsablaufs hinzugef\u00fcgt haben, um Produktinformationen zu erhalten. F\u00fcgen Sie einen Empf\u00e4nger und dann einen&nbsp;<em>OData-Adapter<\/em>&nbsp;vom Empf\u00e4nger zum Content Enricher.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-46.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Klicken Sie auf den OData-Adapter, um die Verbindung zu konfigurieren. Die Konfiguration ist sehr \u00e4hnlich zu Schritt 2, der im Abschnitt&nbsp;<a href=\"https:\/\/blogs.integrtr.com\/enterprise-integration-with-cpi-1\/\">erster Teil<\/a>&nbsp;dieser Blogserie, aber anstelle von \"Produkten\" beziehen wir Daten von \"Lieferanten\".<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-18.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-19.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Nun w\u00e4hlen wir den Aggregationsalgorithmus f\u00fcr den Content Enricher. Es gibt zwei Optionen f\u00fcr den Aggregationsalgorithmus:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>M\u00e4hdrescher<\/strong>: Bei Verwendung dieser Option wird die Lookup-Nachricht an die Originalnachricht angeh\u00e4ngt.<\/li>\n\n\n\n<li><strong>Bereichern Sie<\/strong>: Bei Verwendung dieser Option wird die Lookup-Nachricht mit der Original-Nachricht \u00fcber ein gemeinsames Feld zusammengef\u00fchrt.<\/li>\n<\/ol>\n\n\n\n<p>In unserem Szenario wollen wir Lieferantendetails in Produktinformationen zusammenf\u00fchren, indem wir die Lieferantendaten als gemeinsames Feld verwenden und daher Enrich als unseren Aggregationsalgorithmus ausw\u00e4hlen.&nbsp;<em>Sie k\u00f6nnen mehr \u00fcber Content Enricher lesen&nbsp;<a href=\"https:\/\/help.sap.com\/viewer\/368c481cd6954bdfa5d0435479fd4eaf\/Cloud\/en-US\/8827f9feb94e4264aaf42ac1c6ce11b7.html\">hier<\/a>.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-21.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Sowohl f\u00fcr die Anreicherung als auch f\u00fcr die urspr\u00fcngliche Nachricht m\u00fcssen wir den Pfad zum Knoten angeben, in dem die Entit\u00e4tsdaten enthalten sind, wie in unserem Fall die Produkt- und Lieferantendetails. Das Schl\u00fcsselelement ist der Name des Elements, das f\u00fcr die Zusammenf\u00fchrung abgeglichen werden muss. Die Konfiguration sieht wie folgt aus:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/ds3k0vm1e5mvs.cloudfront.net\/2020\/06\/image-22.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Zu diesem Zeitpunkt haben wir die Lieferanteninformationen in die Produktinformationen integriert und die angereicherten Daten sehen wie folgt aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>8\n\t\tfalsch\n\t\t13\n\t\t\n\t\t\t13\n\t\t\tNord-Ost-Fisch Handelsgesellschaft mbH\n\t\t\tFrahmredder 112a\n\t\t\t(04721) 8713\n\t\t\t\n\t\t\t27478\n\t\t\tDeutschland\n\t\t\tCuxhaven\n\t\t\tSven Petersen\n\t\t\tKoordinator Auslandsm\u00e4rkte\n\t\t\n\t\t25.8900\n\t\tNord-Ost Matjeshering\n\t\t10 - 200 g Gl\u00e4ser\n\t\t0\n\t\t30\n\t\t15\n\t\t10<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-form-message-bodies-which-are-suitable-for-concatenation\">3. Nachrichtenk\u00f6rper bilden, die f\u00fcr die Verkettung geeignet sind<\/h3>\n\n\n\n<p>Wir haben Produktdetails zusammen mit den Details der Lieferanten, aber die resultierende XML-Datei hat ein verschachteltes Format, bei dem sich die Lieferantendetails nicht auf derselben hierarchischen Ebene befinden wie der Rest der Produktdetails. Es ist wichtig, dass sich alle Daten auf der gleichen Ebene befinden, damit die Nachricht effektiv in das CSV-Format konvertiert werden kann. Daher m\u00fcssen die folgenden Aufgaben mit diesen Daten durchgef\u00fchrt werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Alle relevanten Daten auf derselben hierarchischen Ebene in der XML-Datei abrufen.<\/li>\n\n\n\n<li>Entfernen Sie doppelte Daten, falls vorhanden.<\/li>\n<\/ol>\n\n\n\n<p>Um dies zu erreichen, werden wir das folgende Groovy-Skript verwenden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import com.sap.gateway.ip.core.customdev.util.Message;\nimport java.util.HashMap;\nimport groovy.util.XmlSlurper; ;\nimport groovy.xml.XmlUtil;\ndef Message processData(Message message) {\n    \/\/K\u00f6rper\n       def body = message.getBody(java.lang.String) as String;\n       def rootNode= new XmlSlurper().parseText(body);\n       def product=rootNode.Product;\n\t   \t   \n\t   product.SupplierID.replaceNode{\n\t   };\n\t   product.appendNode(product.Supplier.SupplierID);\n\t   product.appendNode(product.Supplier.ContactName);\n\t   product.appendNode(product.Supplier.ContactTitle);\n\t   product.appendNode(product.Supplier.CompanyName);\n\t   product.appendNode(product.Lieferant.Adresse);\n\t   product.appendNode(product.Lieferant.Telefon);\n\t   product.appendNode(product.Lieferant.Postleitzahl);\n\t   product.appendNode(product.Lieferant.Land);\n\t\n\t   product.Lieferant.replaceNode{};\n\t   def flatXML=XmlUtil.serialize(produkt);\n       flatXML=flatXML-\"\"\"\"\"\";\n       flatXML=flatXML-\"\"\"\"\";\n       message.setBody(flatXML);\n       Nachricht zur\u00fcckgeben;\n       }<\/code><\/pre>\n\n\n\n<p>In diesem Skript verwenden wir zun\u00e4chst&nbsp;<code>XMLSlurper<\/code>&nbsp;um den XML-K\u00f6rper zu lesen, um relevante Lieferanteninformationen aus dem Lieferantenknoten zu extrahieren, der w\u00e4hrend der Anreicherung hinzugef\u00fcgt wurde. Anschlie\u00dfend f\u00fcgen wir diese Informationen dem Produktknoten hinzu, so dass wir alle erforderlichen Informationen auf der gleichen hierarchischen Ebene haben. Dies geschieht mit&nbsp;<code>appendNode<\/code>&nbsp;Methode der&nbsp;<code>XMLSlurper<\/code>. Sobald wir die erforderlichen Informationen in dem gew\u00fcnschten Format haben, entfernen wir die redundanten Datenknoten mit&nbsp;<code>replaceNode<\/code>.<\/p>\n\n\n\n<p>Wenn Sie sich das Skript ansehen, werden Sie feststellen, dass wir den Knoten entfernt haben, der&nbsp;<code>Anbieter-ID<\/code>&nbsp;Informationen vor dem Anh\u00e4ngen&nbsp;<code>Daten der Lieferanten<\/code>. Dies geschieht, um die Erstellung redundanter Daten zu vermeiden. Vielleicht fragen Sie sich aber, warum wir die Daten der Lieferantennummer hinzugef\u00fcgt haben, wenn sie doch schon vorher vorhanden waren. Wenn wir Node mit XMLSlurper anh\u00e4ngen, werden die Daten am Ende hinzugef\u00fcgt. In unserem Fall werden alle Lieferanteninformationen am Ende des Produktknotens hinzugef\u00fcgt, so dass alle Daten zusammen bleiben. Wenn wir diese Daten zu einem sp\u00e4teren Zeitpunkt in das CSV-Format konvertieren, ist es logisch, dass die Lieferanteninformationen an derselben Stelle stehen und nicht \u00fcber die Produktinformationen verstreut sind. Bitte beachten Sie, dass dies nicht der einzige Weg ist, um dieses Ergebnis zu erreichen, und wir werden die anderen M\u00f6glichkeiten zu einem sp\u00e4teren Zeitpunkt diskutieren.<\/p>\n\n\n\n<p>Das war's! Wir werden diesen Blog hier unterbrechen, damit Sie die Themen, auf die wir gesto\u00dfen sind, vollst\u00e4ndig verstehen und w\u00fcrdigen k\u00f6nnen. In diesem Blogbeitrag haben wir etwas \u00fcber Router, Content Modifier, Content Enricher und ein wenig mehr \u00fcber Groovy Scripting gelernt. Im n\u00e4chsten Blog-Beitrag werden wir unter anderem etwas \u00fcber die Konvertierung von XML in CSV und den Mail-Adapter lernen, um unsere Reise in die Unternehmensintegration mit SAP CPI abzuschlie\u00dfen. Bis dahin, auf Wiedersehen und viel Spa\u00df beim Lernen!<\/p>","protected":false},"excerpt":{"rendered":"<p>In this part, we learn about Routers, Content Modifiers, Content Enricher and a little more of Groovy Scripting as build our integration flow further Hello technology hitchhikers! Welcome to the third part of Enterprise Integration with SAP CPI. In the first two parts (read the&nbsp;first&nbsp;and&nbsp;second&nbsp;parts if you haven&#8217;t already) we established our integration scenario, divided [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":4766,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[31,34],"tags":[36,40],"class_list":["post-4680","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-integration","category-quick-tips","tag-cpi","tag-enterprise-integration"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Enterprise Integration with SAP CPI (Part 3 of 4) - INTEGRTR<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enterprise Integration with SAP CPI (Part 3 of 4) - INTEGRTR\" \/>\n<meta property=\"og:description\" content=\"In this part, we learn about Routers, Content Modifiers, Content Enricher and a little more of Groovy Scripting as build our integration flow further Hello technology hitchhikers! Welcome to the third part of Enterprise Integration with SAP CPI. In the first two parts (read the&nbsp;first&nbsp;and&nbsp;second&nbsp;parts if you haven&#8217;t already) we established our integration scenario, divided [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/\" \/>\n<meta property=\"og:site_name\" content=\"INTEGRTR\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/integrtr\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-02T10:23:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-24T06:24:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/integrtr.com\/wp-content\/uploads\/2020\/10\/cover-1-1158x600-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1158\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ankit Vimal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@integrtr\" \/>\n<meta name=\"twitter:site\" content=\"@integrtr\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ankit Vimal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"13\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/\"},\"author\":{\"name\":\"Ankit Vimal\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/#\\\/schema\\\/person\\\/c857f557e27df690961fcdf265dd00a2\"},\"headline\":\"Enterprise Integration with SAP CPI (Part 3 of 4)\",\"datePublished\":\"2020-07-02T10:23:00+00:00\",\"dateModified\":\"2023-02-24T06:24:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/\"},\"wordCount\":1872,\"publisher\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/integrtr.com\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/cover-1-1158x600-1.png\",\"keywords\":[\"CPI\",\"Enterprise Integration\"],\"articleSection\":[\"INTEGRATION\",\"Quick Tips\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/\",\"url\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/\",\"name\":\"Enterprise Integration with SAP CPI (Part 3 of 4) - INTEGRTR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/integrtr.com\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/cover-1-1158x600-1.png\",\"datePublished\":\"2020-07-02T10:23:00+00:00\",\"dateModified\":\"2023-02-24T06:24:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/#primaryimage\",\"url\":\"https:\\\/\\\/integrtr.com\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/cover-1-1158x600-1.png\",\"contentUrl\":\"https:\\\/\\\/integrtr.com\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/cover-1-1158x600-1.png\",\"width\":1158,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/de\\\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/integrtr.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enterprise Integration with SAP CPI (Part 3 of 4)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/#website\",\"url\":\"https:\\\/\\\/integrtr.com\\\/\",\"name\":\"INTEGRTR\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/integrtr.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/#organization\",\"name\":\"INTEGRTR GmbH\",\"url\":\"https:\\\/\\\/integrtr.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/integrtr.com\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/integrtr-logo.png\",\"contentUrl\":\"https:\\\/\\\/integrtr.com\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/integrtr-logo.png\",\"width\":364,\"height\":96,\"caption\":\"INTEGRTR GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/integrtr.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/integrtr\\\/\",\"https:\\\/\\\/x.com\\\/integrtr\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/integrtr\\\/\",\"https:\\\/\\\/www.instagram.com\\\/integrtr\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@integrtr9894\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/integrtr.com\\\/#\\\/schema\\\/person\\\/c857f557e27df690961fcdf265dd00a2\",\"name\":\"Ankit Vimal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/92fec326d185b0ff294d557bb363862dfcd029cf67ecc212af61e4b61a68755f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/92fec326d185b0ff294d557bb363862dfcd029cf67ecc212af61e4b61a68755f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/92fec326d185b0ff294d557bb363862dfcd029cf67ecc212af61e4b61a68755f?s=96&d=mm&r=g\",\"caption\":\"Ankit Vimal\"},\"url\":\"https:\\\/\\\/integrtr.com\\\/de\\\/author\\\/ankit\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Unternehmensintegration mit SAP CPI (Teil 3 von 4) - INTEGRTR","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/","og_locale":"de_DE","og_type":"article","og_title":"Enterprise Integration with SAP CPI (Part 3 of 4) - INTEGRTR","og_description":"In this part, we learn about Routers, Content Modifiers, Content Enricher and a little more of Groovy Scripting as build our integration flow further Hello technology hitchhikers! Welcome to the third part of Enterprise Integration with SAP CPI. In the first two parts (read the&nbsp;first&nbsp;and&nbsp;second&nbsp;parts if you haven&#8217;t already) we established our integration scenario, divided [&hellip;]","og_url":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/","og_site_name":"INTEGRTR","article_publisher":"https:\/\/www.facebook.com\/integrtr\/","article_published_time":"2020-07-02T10:23:00+00:00","article_modified_time":"2023-02-24T06:24:13+00:00","og_image":[{"width":1158,"height":600,"url":"https:\/\/integrtr.com\/wp-content\/uploads\/2020\/10\/cover-1-1158x600-1.png","type":"image\/png"}],"author":"Ankit Vimal","twitter_card":"summary_large_image","twitter_creator":"@integrtr","twitter_site":"@integrtr","twitter_misc":{"Verfasst von":"Ankit Vimal","Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/#article","isPartOf":{"@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/"},"author":{"name":"Ankit Vimal","@id":"https:\/\/integrtr.com\/#\/schema\/person\/c857f557e27df690961fcdf265dd00a2"},"headline":"Enterprise Integration with SAP CPI (Part 3 of 4)","datePublished":"2020-07-02T10:23:00+00:00","dateModified":"2023-02-24T06:24:13+00:00","mainEntityOfPage":{"@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/"},"wordCount":1872,"publisher":{"@id":"https:\/\/integrtr.com\/#organization"},"image":{"@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/#primaryimage"},"thumbnailUrl":"https:\/\/integrtr.com\/wp-content\/uploads\/2020\/10\/cover-1-1158x600-1.png","keywords":["CPI","Enterprise Integration"],"articleSection":["INTEGRATION","Quick Tips"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/","url":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/","name":"Unternehmensintegration mit SAP CPI (Teil 3 von 4) - INTEGRTR","isPartOf":{"@id":"https:\/\/integrtr.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/#primaryimage"},"image":{"@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/#primaryimage"},"thumbnailUrl":"https:\/\/integrtr.com\/wp-content\/uploads\/2020\/10\/cover-1-1158x600-1.png","datePublished":"2020-07-02T10:23:00+00:00","dateModified":"2023-02-24T06:24:13+00:00","breadcrumb":{"@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/#primaryimage","url":"https:\/\/integrtr.com\/wp-content\/uploads\/2020\/10\/cover-1-1158x600-1.png","contentUrl":"https:\/\/integrtr.com\/wp-content\/uploads\/2020\/10\/cover-1-1158x600-1.png","width":1158,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/integrtr.com\/de\/unternehmensintegration-mit-sap-cpi-teil-3-von-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/integrtr.com\/"},{"@type":"ListItem","position":2,"name":"Enterprise Integration with SAP CPI (Part 3 of 4)"}]},{"@type":"WebSite","@id":"https:\/\/integrtr.com\/#website","url":"https:\/\/integrtr.com\/","name":"INTEGRTR","description":"","publisher":{"@id":"https:\/\/integrtr.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/integrtr.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/integrtr.com\/#organization","name":"INTEGRTR GmbH","url":"https:\/\/integrtr.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/integrtr.com\/#\/schema\/logo\/image\/","url":"https:\/\/integrtr.com\/wp-content\/uploads\/2022\/05\/integrtr-logo.png","contentUrl":"https:\/\/integrtr.com\/wp-content\/uploads\/2022\/05\/integrtr-logo.png","width":364,"height":96,"caption":"INTEGRTR GmbH"},"image":{"@id":"https:\/\/integrtr.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/integrtr\/","https:\/\/x.com\/integrtr","https:\/\/www.linkedin.com\/company\/integrtr\/","https:\/\/www.instagram.com\/integrtr\/","https:\/\/www.youtube.com\/@integrtr9894"]},{"@type":"Person","@id":"https:\/\/integrtr.com\/#\/schema\/person\/c857f557e27df690961fcdf265dd00a2","name":"Ankit Vimal","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/92fec326d185b0ff294d557bb363862dfcd029cf67ecc212af61e4b61a68755f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/92fec326d185b0ff294d557bb363862dfcd029cf67ecc212af61e4b61a68755f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/92fec326d185b0ff294d557bb363862dfcd029cf67ecc212af61e4b61a68755f?s=96&d=mm&r=g","caption":"Ankit Vimal"},"url":"https:\/\/integrtr.com\/de\/author\/ankit\/"}]}},"_links":{"self":[{"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/posts\/4680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/comments?post=4680"}],"version-history":[{"count":0,"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/posts\/4680\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/media\/4766"}],"wp:attachment":[{"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/media?parent=4680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/categories?post=4680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/integrtr.com\/de\/wp-json\/wp\/v2\/tags?post=4680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}