Sie haben wahrscheinlich bereits von unserem Salesforce-Konnektor gehört, den wir vor einigen Monaten herausgebracht haben. Mit diesem Konnektor können Sie Content, der im Nuxeo Repository gespeichert ist, direkt in Salesforce anzeigen.
Wir möchten, dass Sie noch einen Schritt weitergehen: Erstellen Sie eine Drop-down-Liste auf der Nuxeo Content Services Platform, mit der Sie Content von Salesforce in Echtzeit abrufen können. Im Grunde genommen ist dieser Anwendungsfall das Gegenteil eines früheren Anwendungsfalls. Beispielsweise haben wir ein Verzeichnis aus Unternehmen erstellt, die in Salesforce gespeichert sind (in das Konto-Objekt).
Das Ergebnis ist für den Endnutzer transparent, da die gesamte Konfiguration im Hintergrund abläuft und es keinen Unterschied macht, ob wir ein Verzeichnis von Werten abbilden, das auf der Nuxeo Platform gespeichert ist, oder ob wir diese in Echtzeit von Salesforce abfragen!
Vorgänge im Hintergrund
Das Plug-in basiert auf einem Nuxeo Add-On mit dem Namen Nuxeo-Directory-Connector, das alles Notwendige erstellt, um einen Webservice zu aktivieren, um ein Verzeichnis an Werten innerhalb eines Vokabulars abzurufen (auch als Directory bekannt).
Thibaud hat in einem früheren Blog beschrieben, wie der Nuxeo-Directory-Connector verwendet werden kann.
In diesem Blog werde ich mich auf die entsprechenden Schritte für Salesforce konzentrieren. Der von mir verwendete Web Service basiert auf der Force.com REST API.
OAuth2 Konfiguration
Die Authentifizierung auf Salesforce’s API wird über OAuth2 vorgenommen. Alles was für die Konfiguration eines OAuth2 Anbieters benötigt wird, ist bereits auf der Nuxeo Platform vorhanden.
Dies geschieht im Menü Admin > Cloud Services > Service Providers.
Hier definieren wir die Daten für den Salesforce Oauth2. Um die Client ID und das Client Secret abzurufen, müssen Sie eine “Connected App” in der Nuxeo Platform erstellen. Gehen Sie dazu zu Salesforce > Setup > Build > Create > Apps und erstellen dort eine neue App unter dem Tab “Connected Apps”.
Hier sehen Sie ein Beispiel für die Konfiguration einer Connected App. Beachten Sie diese beiden wichtigen Hinweise:
- Die Callback URL: sollte dieser gleichen: https://hostname:port/nuxeo/site/oauth2/Salesforce/callback
Bitte beachten Sie, dass Ihre Nuxeo Platform unter https laufen sollte (es sei denn, sie testen unter localhost).
- ausgewählte Aufgabenbereiche von OAuth: - Verwaltung und Zugriff auf Ihre Daten (api) - Zugang zu Ihren Daten über das Web bereitstellen(web) - jederzeit Anfragen in Ihrem Namen durchführen (refresh_token, offline_access)
In unserem Beispiel verwenden wir der Einfachheit halber den uneingeschränkten Zugang (full), dies kann aber je nach Anwendungsfall angepasst werden.
Sobald Sie Ihre Konfiguration speichern, erhalten Sie Ihren Consumer Key und Ihr Consumer Secret, die Sie kopieren und in Ihre Nuxeo Platform einfügen müssen.
Authentifizierung
Sobald wir den Oauth2-Anbieter festgelegt haben, müssen wir die Authentifizierung auf Salesforce über die Nuxeo Platform durchführen.
Gehen Sie dazu auf Home > Cloud Services und klicken sie auf Connect to Salesforce. Sobald Sie verbunden sind und der Offline-Zugriff erteilt wurde, sind Sie startklar.
Zur Vereinfachung haben wir das Administratorenkonto auf der Nuxeo Platform verwendet.
Erweiterungspunkt
<extension target="org.nuxeo.directory.connector.ConnectorBasedDirectoryFactory" point="directories"><directory name="Salesforce_Organization" class="org.nuxeo.directory.connector.json.salesforce.SalesforceInMemoryConnector"><idfield>Id</idfield> <schema>vocabulary</schema> <parameters><parameter name="url">/services/data/v20.0/query/?q=SELECT+Id,Name+from+Account</parameter> <parameter name="label">Name</parameter> <parameter name="id">Id</parameter> <parameter name="autoRefresh">true</parameter></parameters> <mapping><map field="label">Name</map> <map field="id">Id</map></mapping></directory></extension>
Hier befindet sich der Erweiterungspunkt, in dem die Konfiguration vorgenommen wird.
Salesforce_Organization ist beispielsweise der Name des Verzeichnisses (oder Vokabulars) das Sie verwenden werden, wenn Sie es für ein bestimmtes Vorschlags-Widget verwenden. (Im nächsten Absatz werde ich darauf näher eingehen).
Es wird eine bestimmte Anzahl an Parametern verwendet, um Content aus Salesforce abzurufen und einem Nuxeo-Vokabular zuzuordnen.
Die Salesforce-Abfrage, die Sie in die URL eingeben (SELECT+Id,Name+from+Account) ist vollständig konfigurierbar. Sie können dabei Listen von Ansprechpartnern oder sogar Informationen über ein angepasstes Objekt erhalten.
Bitte beachten Sie, dass in einem Nuxeo Vokabular eine ID und ein Label vorhanden ist. Sie müssen das Ergebnis Ihrer Abfrage zuordnen, um festzulegen, welches Salesforce-Objektfeld als ID und welches als Label verwendet wird.
Es gibt außerdem die Option, das Ergebnis immer in Echtzeit abzurufen (autoRefresh). Wenn autoRefresh auf False eingestellt ist, wird die Anfrage an Salesforce einmal gestellt und das Ergebnis wird im Speicher der Nuxeo Platform gespeichert. Wenn es also um Daten geht, die sich nicht regelmäßig ändern, kann diese Option verwendet werden.
Vorschlags-Widget
Um das zuvor festgelegte Verzeichnis Salesforce_Organization zu nutzen, müssen Sie Ihrem Erstellungs-, Lese- und Bearbeitungslayout lediglich ein Vorschlags-Widget hinzufügen, mit Textfeld-Metadaten verknüpfen und die Eigenschaft directoryName unter der Custom Properties Configuration festlegen.
Das war’s dann schon!
Das Plug-in finden Sie hier. Probieren Sie es aus und sagen Sie uns, was Sie davon halten!