Utilisation de l'API de transfert en masse
Objectifs de formation
- Décrire la différence entre une requête asynchrone et une requête synchrone
- Créer une tâche par lot en utilisant l’explorateur REST dans le Workbench
- Importez des données dans votre organisation Salesforce en ajoutant des données à une tâche.
- Surveiller la progression d'une tâche
- Récupérez les résultats d’une tâche.
API de transfert en masse et requêtes asynchrones
Par contre, les API REST et SOAP utilisent des requêtes synchrones et sont optimisées pour les applications clientes en temps réel qui mettent à jour quelques enregistrements à la fois. Vous pouvez utiliser ces API pour traiter de nombreux enregistrements, mais ils sont moins pratiques pour traiter des jeux de données contenant des centaines de milliers d'enregistrements. L’infrastructure asynchrone de l’API de transfert en masse est conçue pour simplifier et optimiser le traitement de données contenant des milliers ou des millions d’enregistrements.
Pour utiliser l’API de transfert en masse, le plus simple est de l’activer pour traiter les enregistrements dans Data Loader à l’aide de fichiers CSV. Data Loader vous évite d’écrire votre propre application cliente. Il se peut parfois que des exigences uniques nécessitent l’écriture d’une application personnalisée. L’API de transfert en masse vous permet de prendre le contrôle du bateau et de mettre le cap vers une solution adaptée à vos besoins.
Dans cette unité nous utilisons une nouvelle version de l’API de transfert en masse, appelée Bulk API 2.0. Si vous voulez mettre en application ce que vous avez appris dans cette unité à la version précédente de l’API de transfert en masse, toujours prise en charge, vous devez utiliser des URI de ressource différentes, et créer et gérer des lots en plus des tâches. Pour plus d’informations sur la version précédente de l’API de transfert en masse, consultez le Guide du développeur d’API de transfert en masse.
Importation des données de votre organisation
Création d’une tâche en masse
- Connectez-vous à votre Trailhead Playground et accédez à Workbench.
- Pour Environnement, sélectionnez Production. Pour la version d'API, sélectionnez le nombre le plus élevé. Assurez-vous de cocher J'accepte les conditions d'utilisation.
- Cliquez sur Se connecter avec Salesforce.
- Dans le menu supérieur, sélectionnez utilitaires | Explorateur REST.
Nous sommes prêts à charger nos données. La première étape consiste à créer une tâche. Une tâche spécifie le type d’opération et l’objet de données avec lequel nous travaillons. Cela fonctionne comme un compartiment dans lequel nous ajoutons les données à traiter.
Nous allons utiliser la ressource /jobs/ingest pour créer une tâche. Cette ressource permet également d'obtenir une liste des tâches en cours.
Pour créer une tâche, nous soumettons une requête POST à la ressource /jobs/ingest avec les propriétés de la tâche dans le corps de la requête. Comme l’API de transfert en masse est basée sur REST, cette requête se présente sous la forme habituelle d’une requête REST composée de quatre éléments : URI, méthode HTTP, en-têtes et corps. Comme nous venons de l’indiquer, la méthode est POST.
- Nous utilisons /services/data, qui est le même point de terminaison que pour l’API REST. L’API par lot utilise le même framework que l’API REST, ce qui signifie que l’API par lot prend en charge beaucoup de ses fonctionnalités, comme l’authentification OAuth.
- /jobs/ingest indique que nous accédons à la ressource pour créer des tâches via l’API de transfert en masse.
{ "operation" : "insert", "object" : "Account", "contentType" : "CSV", "lineEnding" : "CRLF" }
Ces propriétés indiquent que nous souhaitons utiliser l’opération insert dans les données que nous soumettons à la tâche. Nous soumettons des données de compte, sous le format CSV. L’API de transfert en masse accepte des charges de travail CSV.
Votre explorateur REST se présente comme suit.

Cliquez sur Execute et examinez la réponse.

La réponse inclut toutes sortes de propriétés sur la tâche, la plupart inutiles dans notre exemple, car nous n’avons pas encore ajouté de données. Nous souhaitons toutefois mettre le doigt sur deux propriétés. Recherchez l’ID de la tâche (id) et copiez-le dans un fichier texte. Nous l’utilisons pour ajouter des données à la tâche et vérifier son statut. Examinez également la propriété state. Lorsque vous créez une tâche, elle est immédiatement définie sur l’état Open. Cela signifie qu’elle est prête à recevoir des données. Regardons enfin la propriété contentUrl. Cette propriété montre l’URL que nous utilisons pour charger les données de la tâches.
Ajout de données à la tâche
Créez une nouvelle requête dans Workbench. Remplacez les données de la zone de texte de l’URI par la ligne suivante : /services/data/v XX.0/jobs/ingest/jobID/batches. Remplacez jobID par l’ID de la tâche que vous avez copié. Pour la méthode HTTP, sélectionnez PUT.
"Name" "Sample Bulk API Account 1" "Sample Bulk API Account 2" "Sample Bulk API Account 3" "Sample Bulk API Account 4"
Nous utilisons des données CSV car nous l’avons spécifié en créant la tâche.
Cliquez sur Headers et passez Content-Type sur Text/csv. Votre requête se présente comme suit.

Cliquez sur Exécuter.
La réponse contient uniquement un code de statut de 201 (créé) qui indique que Salesforce a bien reçu les données de tâche.
Fermeture de la tâche
{ "state" : "UploadComplete" }
Cliquez sur Exécuter. La réponse contient les informations de statut de la tâche. La propriété state indique que l’état de la tâche est UploadComplete. À ce stade, Salesforce arrête de traiter la tâche.
Vérification du statut de la tâche
Dans l’API, c’est la ressource /jobs/ingest/jobID qui permet de surveiller une tâche. Remplacez les données de la zone de texte de l’URI par la ligne suivante : /services/data/v XX.0/jobs/ingest/jobID, avec les remplacements habituels. Pour la méthode HTTP, sélectionnez GET.
Cliquez sur Exécuter. Une page semblable à la suivante s’affiche.

Si state est toujours UploadComplete au lieu de JobComplete, Salesforce est encore en train de traiter la tâche. Ne vous inquiétez pas, il sera traité dans quelques minutes. Allez prendre un verre en attendant et réessayez la même requête lorsque vous revenez. Si par chance votre tâche est déjà traitée, continuez pour récupérer les résultats, ce qui ne vous empêche pas de prendre une pause café.
Récupération des résultats de la tâche
Examinons d'abord les enregistrements qui ont bien été traités. Dans l’explorateur REST du Workbench, remplacez la valeur de la zone de texte de l’URI par la ligne suivante : /services/data/v XX.0/jobs/ingest/jobID/successfulResults, avec les remplacements habituels. Pour la méthode HTTP, sélectionnez GET.
Cliquez sur Exécuter. Une page semblable à la suivante s’affiche.

Salesforce renvoie du CSV contenant une liste de tous les enregistrements de la tâche qui ont bien été traités. Dans ce module, nous avons créé plusieurs enregistrements de compte. Les données CSV contiennent l’ID de l’enregistrement créé, ainsi que la valeur « true » pour la colonne sf_Created.
Il arrive parfois que certains enregistrements ne puissent être traités. La tâche peut, par exemple, avoir essayé de créer des enregistrements de compte qui existaient déjà. Ou alors il manquait des champs obligatoires dans les données de la tâche. Dans ces scénarios, nous pouvons demander à Salesforce une liste des enregistrements ayant présenté une erreur durant le traitement, ainsi que des informations complémentaires sur le problème survenu.
Dans l’explorateur REST, remplacez la valeur de la zone de texte de l’URI par la ligne suivante : /services/data/v XX.0/jobs/ingest/jobID/failedResults, avec les remplacements habituels. Pour la méthode HTTP, sélectionnez GET.
Cliquez sur Exécuter. Le résultat se présente comme suit.

Salesforce fournit des données CSV contenant une liste des enregistrements ayant rencontré des erreurs durant le traitement, ainsi que l’ID d'enregistrement et le message d'erreur. Dans notre cas, tous le enregistrements ont bien été insérés, donc cette liste d’enregistrements est vide. Du travail propre capitaine !
Ressources
Guide du développeur d’API de transfert en masse (version antérieure de l’API de transfert en masse, non abordée dans cette unité)