Integration

Wie integriere ich Salesforce mit verschiedenen Integrationsplattformen? Teil 1: Talend ESB

esentri AG
esentri AG

Datenintegration ist ein wichtiger Bestandteil der heutigen Informationstechnologie und nicht mehr aus dem Tagesgeschäft von Unternehmen wegzudenken. Jedes Unternehmen erfasst interne Daten oder nutzt Datenbestände aus diversen, externen Quellen, um für sich einen Nutzen daraus zu ziehen. Daher sehen sich Unternehmen mit der Herausforderung konfrontiert, diese Daten mit der bereits implementierten Anwendungsarchitektur zu „verheiraten“ bzw. zu integrieren und in geeigneter Weise nutzbar zu machen. Unternehmen können mit dem Einsatz von Integrationsplattformen unter anderem eine Effizienzsteigerung, eine Kostenreduktion, eine Verkürzung der benötigten Entwicklungszeit und eine Verbesserung der Zuverlässigkeit im operativen Bereich erreichen. Überdies entfallen Redundanzen bei der Speicherung von Daten, somit kann eine Einsparung von Speicherkapazität erreicht werden.

Vorhandene Salesforce-Datensätze werden in eine MySQL-Datenbank geschrieben und persistiert. Hierbei werden Accountdaten von Salesforce in die MySQL-Datenbank integriert. Anhand dieses Beispiels wird die Umsetzung mit den drei Integrationsplattformen Talend, MuleESB, und JBoss Fuse näher beleuchtet und verglichen. Hierbei wurden nur die frei zugänglichen und kostenlosen Lösungen verwendet.

Salesforce mit Talend

 Als kleine Besonderheit bietet Talend Inc. gleich sechs verschiedene Versionen (Big Data, Data Quality, ESB, Data Integration, Master Data Management, Data Preparation) seiner Open-Source-Integrationsplattform an. Für den vorliegenden Use Case wurde Talend ESB verwendet.

Zu Beginn einer Integration wird ein sogenannter Job erstellt. Damit können verschiedene Komponenten durch einfaches Drag&Drop und Zusammenklicken miteinander verbunden werden. Ein Job ermöglicht es, den gewünschten Data Flow zu modellieren und zu managen. Im Prinzip werden die Geschäftsanforderungen in Code übersetzt, der Data Flow wird sozusagen technisch implementiert. Bei Ausführung des Jobs wird automatisch Java-Code erstellt. Allerdings lässt sich der Code nicht ändern.

Talend bietet die Möglichkeit Meta-Daten anzulegen, auf die bei Bedarf zurückgegriffen werden kann. Vorteil ist hierbei, dass nur einmal Credentials und Settings für den Datenbank- oder Salesforcezugriff angelegt werden müssen. Wurden die Meta-Daten angelegt, muss ein Datenbankschema ermittelt und abgerufen werden. Dies ist insbesondere für die spätere Mapping-Komponente notwendig, die Quellschema und Zielschema aufeinander abbildet. Natürlich können sowohl mehrere Quellschemata auf ein Zielschema als auch ein Quellschema auf mehrere Zielschemata gemappt werden.

Für unseren einfachen Use Case benötigen wir nur drei Komponenten für den Job. Zum einen werden per Drag&Drop die erstellten Meta-Daten von Salesforce und der MySQL-Datenbank bzw. Schemata in unseren Job-Designer gezogen. Das Schema von Salesforce wird als Input deklariert, das Schema der MySQL-Datenbank folgerichtig als Output, da die Accountdaten in das vorhandene Datenbankschema integriert werden. Damit eine adäquate Integration der Accounts von Salesforce in die MySQL-Datenbank stattfinden kann, wird eine Mapping-Komponente benötigt. Die Input-Komponente wird durch einen Pfeil mit der Mapping-Komponente verbunden, die Output-Komponente wird wiederum mit der Mapping-Komponente verbunden. So entsteht der benötigte Job bzw. Data Flow.

Abb. 1: Abschließender Job des Use Cases.

Nun wird der Kern der Integration betrachtet: das Mapping. Ohne Mapping würde eine Integration nicht funktionieren. Die Mapping-Komponente ist in der Open-Source-Lösung integriert und bietet vollen Funktionsumfang.

Das Input-Schema kann durch „Auto map!“ größtenteils auf das Ziel-Schema abgebildet werden. Das Mapping beruht hierbei auf Namensähnlichkeiten bzw. -konventionen. Das heißt: Die Id des Input-Schema wird auf die Id des Ziel-Schema, der Name des Input-Schema auf den Namen des Ziel-Schema, usw. abgebildet. Ggf. müssen hierbei manuelle Anpassungen vorgenommen werden. Beispielsweise stimmt die Salesforce-Id nicht mit der Id des Ziel-Schemas überein. Daher muss dieses Mapping wieder gelöst werden. Talend bietet darüberhinaus – neben dem „Auto map!“ – einen Ausdruckseditor an, welcher es erlaubt benutzerdefinierte Funktionen zu bestimmen. So wird eine selbst definierte Sequenz auf die Id des Ziel-Schemas gemappt.

Abb. 2: Die Mapping-Komponente.

Ansonsten ist die Mapping-Komponente soweit abgeschlossen und der Job kann ausgeführt werden. Jobs können einfach über den „Run“-Button ausgeführt werden. Nach dem Ausführen des Job, kann der Nutzer überprüfen, ob die Salesforce-Account-Daten in die Datenbank eingefügt wurden.

Zu beachten ist noch, dass bei der Input-Komponente eine eigene Query definiert werden kann. Salesforce nutzt hierbei eine eigene Anfragesprache SOQL, die leicht von der allgemeinen SQL abweicht. Für das vorliegende Beispiel ist es aber nicht notwendig, eine eigene Query zu definieren.

Die MySQL-Output-Komponente bietet verschiedene Aktionen zur Auswahl. Zum einen können Aktionen auf Tabellen (u.a. Tabelle erstellen, Drop, Clear, Truncate) oder zum anderen Aktionen auf Daten (u.a. Insert, Update, Löschen, Ersetzen) ausgeführt werden. Hierbei wird die „Insert oder Update bei doppelten Schlüssel oder eindeutigem Index“-Aktion auf Daten verwendet, so dass bei Ausführung des Jobs die Salesforce-Account-Daten in die MySQL-Datenbank integriert werden und keine doppelten Datensätze bei mehrfacher Ausführung angelegt werden. In der MySQL-Datenbank-Komponente gibt es ebenfalls den Tab „Advanced settings“. Dort kann für alle Spalten ausgewählt werden, ob diese als Schlüssel beim Insert oder Update fungieren sollen und ob diese aktualisierbar und einfügbar sein sollen. Dies ist hilfreich für die gewählte Aktion, damit die Daten korrekt in die Datenbank eingefügt werden.

Stay tuned! Im nächsten Teil der Serie folgt die Integration von Salesforce mit Mule ESB.