Connecteur Salesforce - Récupérez le contenu Salesforce en temps réel


Tue 11 October 2016 Par Michael Gena

Salesforce Connector

Vous avez certainement entendu parler du connecteur Salesforce que nous avons lancé il y a quelques mois. Ce connecteur vous permet d'afficher directement dans Salesforce le contenu stocké dans la base documentaire Nuxeo.

Nous souhaitons maintenant aller encore plus loin : nous souhaitons afficher une liste déroulante dans Nuxeo Platform afin de récupérer le contenu Salesforce en temps réel. Ce cas d'utilisation est donc l'opposé du précédent. En guise d'exemple, nous avons décidé d'implémenter une liste des organisations stockées dans Salesforce (dans l'objet Account).

Le résultat est transparent pour l'utilisateur car toute la configuration se fait en coulisse. De plus, il n'y a aucune différence entre l'affichage d'une liste de valeurs stockées dans Nuxeo Platform et la récupération du contenu Salesforce en temps réel !

En coulisse

Le plug-in se base sur un add-on Nuxeo nommé nuxeo-directory-connector qui permet de créer les éléments nécessaires à la connexion d'un service Web afin de récupérer une liste de valeurs à l'intérieur d'un « vocabulary » (également appelé « directory » ou base documentaire).

Thibaud a déjà parlé dans un article précédent de l'utilisation du plug-in nuxeo-directory-connector.

Je vais donc me concentrer sur Salesforce. Le service Web que j'ai utilisé est celui qui est basé sur l'API REST Force.com.

Configuration OAuth2

L'authentification à l'API Salesforce est gérée via OAuth2. Tout ce dont vous avez besoin pour configurer un prestataire OAuth2 est déjà présent dans Nuxeo Platform.

Rendez-vous dans le menu Admin > Cloud Services > Service Providers.

OAuth2 Service Provider

Nous définissons ici les informations liées à Salesforce OAuth2. Pour récupérer le ClientID et l'information secrète du client, il vous faut créer une « application connectée » (Connected App) dans Nuxeo Platform. Pour ce faire, rendez-vous dans le menu Salesforce > Setup > Build > Create > Apps puis créez une nouvelle application dans l'onglet Connected Apps.

Voici un exemple de configuration d'une application connectée. Il y a 2 éléments importants à noter :

Veuillez noter que votre instance de Nuxeo Platform doit être en https (sauf en cas de test sur localhost).

  • Selected OAuth Scopes:
    • Access and manage your data (api)
    • Provide access to your data via the Web (web)
    • Perform requests on your behalf at any time (refresh_token, offline_access)

Dans notre démo, on utilise Full access (full) pour plus de simplicité, mais vous pouvez modifier ce paramètre en fonction de votre cas d'utilisation.

Salesforce Quick Start

Vous recevrez votre Consumer Key et votre Consumer Secret après avoir sauvegardé votre configuration. Vous pourrez ensuite les copier/coller dans Nuxeo Platform.

NuxeoApp

Authentification

Une fois le prestataire OAuth2 défini, nous devons nous authentifier à Salesforce via Nuxeo Platform.

Pour ce faire, rendez-vous dans le menu Home > Cloud Services et cliquez sur Connect to Salesforce. Une fois connecté avec un accès hors connexion, vous êtes prêt !

Cloud Services Accounts

Ici aussi, nous avons utilisé le compte administrateur de Nuxeo Platform pour plus de simplicité.

Point d'extension

<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>

Voici le point d'extension où la configuration est réalisée.

Salesforce_Organization, par exemple, est le nom du répertoire (directory/vocabulary) que vous utiliserez pour un widget de suggestion (expliqué plus en détail juste après).

Plusieurs paramètres sont utilisés pour récupérer du contenu depuis Salesforce et pour effectuer le mappage avec un Vocabulary Nuxeo.

La requête Salesforce présente dans l'URL (SELECT+Id,Name+from+Account) peut être entièrement paramétrée. Par exemple, vous pouvez récupérer une liste de contacts ou même les informations d'un objet personnalisé.

Le plus important ici est la présence d'un id et d'un label dans le Vocabulary Nuxeo. Vous devez réaliser le mappage avec le résultat de votre requête pour déclarer les champs d'objet Salesforce utilisés en tant qu'id et en tant que label.

Une autre option permet de toujours récupérer le résultat en temps réel (autoRefresh). Si autoRefresh est défini sur false, la requête Salesforce ne sera exécutée qu'une seule fois et le résultat sera gardé en mémoire dans Nuxeo Platform. Ça peut être intéressant si vos données ne sont pas amenées à changer régulièrement.

Widget de suggestion

Afin d'utiliser le répertoire Salesforce_Organization défini précédemment, il vous suffit d'ajouter un widget de suggestion dans votre organisation en création, lecture et modification, de le relier vers une métadonnée de type texte et de définir le paramètre directoryName dans la section Custom Properties Configuration.

Custom Properties Configuration

Et c'est tout !

Vous trouverez le plug-in ici. N'hésitez pas à l'essayer et à nous faire part de vos retours !


Tagged: Nuxeo Integration, Salesforce, How to