Uncategorized

Integrate Salesforce and Heroku with Salesforce Connect /Intégration de Salesforce et Heroku à Salesforce Connect

Learning Objectives /Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Understand the Salesforce Connect Architecture. /Comprendre l’architecture de Salesforce Connect.
  • Develop Salesforce Connect Custom Adapters. /Développer des adaptateurs personnalisés Salesforce Connect.
  • Understand when and how to use Salesforce Connect with Heroku. /Comprendre quand et comment utiliser Salesforce Connect avec Heroku.

Salesforce Connect with Heroku /Salesforce Connect avec Heroku

Salesforce Connect is an easy way of proxying external data into Salesforce without copying it to the database. In this way, you can pull data into Salesforce and correlate that data with other objects in Salesforce. Salesforce Connect works with a variety of data sources. /Salesforce Connect facilite le traitement par proxy de données externes dans Salesforce sans les copier dans la base de données. Vous pouvez ainsi extraire des données dans Salesforce et les corréler avec d’autres objets dans Salesforce. Salesforce Connect fonctionne avec diverses sources de données.

  • Any OData 2.0 data source can be pulled into Salesforce with Salesforce Connect. /Toutes les sources de données OData 2.0 peuvent être extraites dans Salesforce avec Salesforce Connect.
  • Heroku Connect can expose a Heroku Postgres database to Salesforce Connect. /Heroku Connect peut exposer une base de données Heroku Postgres dans Salesforce Connect.
  • Any Heroku app can provide endpoints that can be consumed with Salesforce Connect. /Toutes les applications Heroku peuvent fournir des points de terminaison qui peuvent être consommés avec
Image illustrating how External Objects can be used to connect externally with outside data available through SAP, Oracle, Workday or Heroku

In this unit, we’re focusing on the third option. If you’d like more info on the others, you can learn how to use a Heroku Postgres database with Salesforce Connect with Heroku External Objects or dive into the Salesforce Connect Trailhead module. /Dans cette unité, nous allons nous intéresser à la troisième option. Si vous souhaitez en savoir plus sur les autres options, vous pouvez apprendre à utiliser une base de données Heroku Postgres avec Salesforce Connect dans Heroku External Objects ou suivre le module Trailhead Salesforce Connect.

Heroku apps can provide web endpoints for web and mobile apps as well as REST services. Because REST services can easily be consumed in Salesforce with Apex, it’s easy to write custom adapters for Salesforce Connect that proxy the data that the REST services provide. /Les applications Heroku peuvent fournir des points de terminaison Web pour des applications Web et mobiles ainsi que des services REST. Les services REST peuvent être aisément consommés dans Salesforce avec Apex. Par conséquent, il est facile d’écrire des adaptateurs personnalisés pour Salesforce Connect qui traitent par proxy les données fournies par les services REST.

The primary use case for Salesforce Connect custom adapters is when an external system (like your Heroku app!) provides data that is useful in the standard Salesforce UI. For instance, let’s say you have a customer-oriented real estate app on Heroku that exposes REST data to JavaScript and mobile UIs. It would be great to bring some of that real estate data into the Salesforce UI, because some back-office business processes and reports could use it. All you need to do is write an adapter from the REST services running on Heroku to the Salesforce Connect structure. /Vous utilisez des adaptateurs personnalisés Salesforce Connect principalement lorsqu’un système externe (par exemple votre application Heroku !) fournit des données utiles dans l’interface utilisateur standard de Salesforce. Par exemple, supposons que vous avez une application immobilière orientée clients sur Heroku qui expose des données REST à des interfaces utilisateur JavaScript et mobiles. Il serait intéressant d’intégrer des données immobilières dans l’interface utilisateur de Salesforce, que des processus métier back-office et des rapports pourraient utiliser. Il suffit pour cela d’écrire un adaptateur depuis les services REST exécutés sur Heroku vers la structure Salesforce Connect.

The primary benefit of using Salesforce Connect instead of traditional ETL methods is that the data is always in sync because it’s retrieved in near real time and not copied. /Le principal avantage de l’utilisation de Salesforce Connect par rapport aux méthodes ETL traditionnelles (extraction, transformation et alimentation) est la synchronisation permanente des données, qui sont récupérées en quasi temps réel et qui ne sont pas copiées.

Get Started with Salesforce Connect and Heroku /Premiers pas avec Salesforce Connect et Heroku

To get started learning about Salesforce Connect custom adapters, check out the Rendering GitHub JSON Data in Salesforce blog post. If you are unfamiliar with running REST services on Heroku, pick a programming language and framework that fits your needs and expertise. If you don’t know where to start, a great place is the Ionic 2 Sample App with REST services, which you can deploy on Heroku with one click. After it’s deployed, you have a REST endpoint for real estate data that looks like this: https://ionic2-realty-rest-demo.herokuapp.com/properties/

Pour mieux connaître les adaptateurs personnalisés Salesforce Connect, consultez la publication de blog Rendering GitHub JSON Data in Salesforce. Si vous ne connaissez pas l’exécution de services REST sur Heroku, choisissez un langage de programmation et une infrastructure adaptés à vos besoins et à vos connaissances. Si vous ne savez pas par où commencer, nous recommandons l’application exemple Ionic 2 Sample App with REST services, que vous pouvez déployer sur Heroku en un seul clic. Une fois déployée, vous disposez d’un point de terminaison REST pour données immobilières qui se présente comme suit : https://ionic2-realty-rest-demo.herokuapp.com/properties/

With the REST endpoint on Heroku ready to be consumed, it’s now just a matter of writing some Apex code to bridge between Salesforce Connect and the service. For the example real estate REST service, we could have a simple Apex adapter that extends the DataSource.Connection class and implements the sync(), query(), and search() methods with a basic structure like: /Avec le point de terminaison REST sur Heroku prêt à être consommé, il suffit maintenant d’écrire un code Apex pour faire le lien entre Salesforce Connect et le service. Dans l’exemple du service REST immobilier, vous pouvez avoir un simple adaptateur Apex qui étend la classe DataSource.Connection et implémente les méthodes sync(), query() et search() avec une structure de base telle que :

  global class RealEstateConnection extends DataSource.Connection {
      override global List<DataSource.TableResult> search(DataSource.SearchContext searchContext) { }
      override global List<DataSource.Table> sync() { }
      override global DataSource.TableResult query(DataSource.QueryContext queryContext) { }
    }
 

You can implement the search() method using custom search functionality or use this search out-of-the-box utility: /Vous pouvez implémenter la méthode search() utilisant une fonctionnalité de recherche personnalisée ou utiliser cet utilitaire de recherche prêt à l’emploi :

override global List<DataSource.TableResult> search(DataSource.SearchContext searchContext) {
    return DataSource.SearchUtils.searchByName(searchContext, this);
  }

The sync() method tells Salesforce about the data structure of the External Objects.For this example, we can just add a single table with a few columns. The ExternalId, DisplayUrl, and Name fields are required. /La méthode sync() indique à Salesforce la structure des données des objets externes. Dans cet exemple, nous pouvons simplement ajouter un tableau unique avec quelques colonnes. Les champs ExternalId, DisplayUrl et Name sont requis.

override global List<DataSource.Table> sync() {
  List<DataSource.Column> columns = new List<DataSource.Column>();
  columns.add(DataSource.Column.text('ExternalId', 255));
  columns.add(DataSource.Column.url('DisplayUrl'));
  columns.add(DataSource.Column.text('Name', 128));
  columns.add(DataSource.Column.text('city', 128));
  columns.add(DataSource.Column.text('price', 128));
  List<DataSource.Table> tables = new List<DataSource.Table>();
  tables.add(DataSource.Table.get('Properties', 'Name', columns));
  return tables;
}

When a user in Salesforce accesses an External Object’s list of records, the query() method fetches and parses the data into the data structure defined in the sync() method. Here is an example of the query() method for the real estate REST service. /Lorsqu’un utilisateur accède dans Salesforce à la liste d’enregistrements d’un objet externe, la méthode query() extrait et analyse les données dans la structure de données définie dans la méthode sync(). Voici un exemple de la méthode query() pour le service REST immobilier.

override global DataSource.TableResult query(DataSource.QueryContext queryContext) {
   List<Map<String, Object>> properties = DataSource.QueryUtils.process(queryContext, getProperties());
   DataSource.TableResult tableResult = DataSource.TableResult.get(queryContext, properties);
   return tableResult;
 }
 public List<Map<String, Object>> getProperties() {
   Http httpProtocol = new Http();
   HttpRequest request = new HttpRequest();
   String url = 'https://ionic2-realty-rest-demo.herokuapp.com/properties/';
   request.setEndPoint(url);
   request.setMethod('GET');
   HttpResponse response = httpProtocol.send(request);
   List<Map<String, Object>> properties = new List<Map<String, Object>>();
   for (Object item : (List<Object>)JSON.deserializeUntyped(response.getBody())) {
     Map<String, Object> property = (Map<String, Object>)item;
     property.put('ExternalId', property.get('id'));
     property.put('DisplayUrl', 'https://ionic2-realty-rest-demo.herokuapp.com/');
     property.put('Name', property.get('title'));
     properties.add(property);
   }
   return properties;
 }

The getProperties() method makes a request to the the real estate REST API on Heroku. The query() method transforms the data into the data structure of the External Object. /La méthode getProperties() transmet une requête à API REST immobilière sur Heroku. La méthode query() transforme les données en structure de données de l’objet externe.

When the other setup steps have been completed, the real estate data is available in Salesforce. /Une fois les autres étapes de configuration effectuées, les données immobilières sont disponibles dans Salesforce.

Because Salesforce Connect proxies the data, each time the user requests the data, Salesforce Connect uses the adapter to fetch the data. Now the data looks and acts just like any other data in Salesforce, except that it’s coming from an app on Heroku! /Salesforce Connect traite les données par proxy. Par conséquent, chaque fois que l’utilisateur demande des données, Salesforce Connect utilise l’adaptateur pour les extraire. Les données se présentent et agissent maintenant comme n’importe quelle autre donnée dans Salesforce, sauf qu’elles proviennent d’une application sur Heroku !

Salesforce Connect Advanced Features /Fonctionnalités avancées de Salesforce Connect

Salesforce Connect custom adapters make it easy to pull data into Salesforce from Heroku. Almost too easy. You can even define relationships between the different data sets. Learn more about External Object references in the DataSource.Column docs. /Les adaptateurs personnalisés Salesforce Connect facilitent la récupération de données dans Salesforce depuis Heroku. Presque trop facile. Vous pouvez même définir des relations entre les différents jeux de données. Pour en savoir plus sur les références des objets externes, reportez-vous aux documents DataSource.Column.

Pro tip: This simple example uses anonymous data but, in most cases, use some form of authentication with the external datastore. Learn more about authentication for external data sources in the Apex docs. /Conseil : Ce simple exemple utilise des données anonymes. Cependant, dans la plupart des cas, une méthode d’authentification est utilisée avec le magasin de données externe. Pour plus d’informations, consultez l’authentification des sources de données externes dans les documents Apex.

Salesforce Connect custom adapters can also handle data paging, which is essential if your REST services expose large data sets. /Les adaptateurs personnalisés Salesforce Connect peuvent également gérer la pagination des données, qui est essentielle si vos services REST exposent des jeux de données volumineux.

Leave a Reply

Your email address will not be published. Required fields are marked *