Tous les produits
Search
Centre de documentation

DataWorks:Source de données Salesforce

Dernière mise à jour :Aug 10, 2026

Salesforce propose des logiciels à la demande pour la gestion de la relation client (CRM), notamment la gestion des contacts, les catalogues de produits, la gestion des commandes, la gestion des opportunités et la gestion des ventes. L'intégration de données de DataWorks prend en charge la lecture depuis des sources de données Salesforce. Cette rubrique décrit comment utiliser Salesforce comme source de données.

Types de champs pris en charge

Type de champ

Type DataWorks

address

STRING

anyType

STRING

base64

BYTES

boolean

BOOL

combobox

STRING

complexvalue

STRING

currency

DOUBLE

date

DATE

datetime

DATE

double

DOUBLE

email

STRING

encryptedstring

STRING

id

STRING

int

LONG

json

STRING

long

LONG

multipicklist

STRING

percent

DOUBLE

phone

STRING

picklist

STRING

reference

STRING

string

STRING

textarea

STRING

time

DATE

url

STRING

geolocation

STRING

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, vous devez ajouter la source de données requise à DataWorks en suivant les instructions fournies dans Configuration des sources de données. Vous pouvez consulter les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.

Vous pouvez créer une source de données Salesforce de l'une des manières suivantes :

  • Salesforce official : Connectez-vous au site web Salesforce pour obtenir automatiquement l'URL d'accès et créer une source de données.

  • Customize : Si vous souhaitez définir des identifiants de connexion dédiés pour DataWorks, vous pouvez configurer la source de données Salesforce en mode Customize. Vous devez vous connecter à Salesforce et créer une Connected App afin d'obtenir les identifiants de sécurité (Consumer Key et Consumer Secret), qui accordent une autorisation de connexion à DataWorks. La procédure de configuration est la suivante :

    Configuration personnalisée

    Créer une Connected App

    1. Accédez à la page de création de l'application.

      1. Accédez à l'URL de votre système Salesforce et connectez-vous.

      2. Dans le coin supérieur droit, cliquez sur image, puis sélectionnez App Manager dans le volet de navigation de gauche.

      3. Sur la page Lightning Experience App Manager, cliquez sur New Connected App.

    2. Configurez la Connected App.

      Paramètres clés :

      Étape

      Description

      1

      Saisissez un Connected App Name, un API Name et une Contact Email conformes aux normes Salesforce.

      2

      Sélectionnez Enable OAuth Settings. Pour Callback URL, saisissez https://bff-cn-shanghai.data.aliyun.com/di/oauth/callback/index.html.

      3

      Dans Selected OAuth Scopes, ajoutez les étendues suivantes :

      • Access Connect REST API resources (chatter api)

      • Access the identity URL service (id, profile, email, address, phone)

      • Access unique user identifiers (openid)

      • Manage user data via APIs (api)

      • Perform requests at any time (refresh token, offline_access)

      4

      • Désactivez la case à cocher Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows.

      • Activez la case à cocher Require Secret for Web Server Flow.

      • Activez la case à cocher Require Secret for Refresh Token Flow.

    3. Consultez les valeurs Consumer Key and Secret de la Connected App.

      1. Dans la liste App Manager, recherchez votre application. Cliquez sur l'icône de flèche image située à côté du nom de l'application, puis sélectionnez View.

      2. Sur la page des détails de l'application, localisez la section Consumer Key and Secret.

        Cliquez sur Manage Consumer Details pour récupérer les valeurs.

      3. Copiez les valeurs Consumer Key et Consumer Secret pour une utilisation ultérieure.

    Configurer les paramètres de la source de données

    1. Connectez-vous à la console DataWorks. Dans la région cible, cliquez sur Data Integration > Data Integration dans le volet de navigation de gauche. Sélectionnez un espace de travail dans la liste déroulante et cliquez sur Go to Data Integration.

    2. Dans le volet de navigation de gauche, cliquez sur Data Source pour accéder à la page de gestion des sources de données.

    3. Cliquez sur Add Data Source, puis recherchez et sélectionnez Salesforce. Sur la page Add Salesforce Data Source, définissez Data Source Type sur Customize.

      Paramètres clés :

      Parameter

      Description

      Login URL

      Saisissez https://<YourSalesforceDomain>/services/oauth2/authorize.

      Authentication URL

      Saisissez https://<YourSalesforceDomain>/services/oauth2/token.

      Consumer Key et Consumer Secret

      Saisissez les valeurs Consumer Key et Consumer Secret issues des détails de la Connected App.

      Cliquez sur Log in to Salesforce. Sur la page d'autorisation, saisissez votre nom d'utilisateur et votre mot de passe, puis cliquez sur Allow.

Important

Salesforce est un service tiers. Assurez-vous que le VPC de votre groupe de ressources peut se connecter à la plateforme Salesforce. Dans le cas contraire, vous ne pourrez pas créer la source de données.

Tâches de synchronisation de données

Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Tâche de synchronisation hors ligne à table unique

Annexe : Démonstrations de scripts et paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Pour configurer une tâche de synchronisation par lots via l'éditeur de code, vous devez définir les paramètres appropriés dans le script, conformément aux exigences du format de script unifié. Pour plus d'informations, consultez la section Configuration en mode script. Les informations suivantes détaillent les paramètres obligatoires pour les sources de données lors de la configuration d'une telle tâche.

Exemples de scripts Reader

Exemple 1 : Interroger un objet Salesforce

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "sobject",
        "table": "Account",
        "beginDateTime": "20230817184200",
        "endDateTime": "20231017184200",
        "where": "",
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "throttle":true,
      "concurrent":1,
      "mbps":"12"
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Exemple 2 : Interrogation via Bulk API 1.0

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "bulk1",
        "table": "Account",
        "beginDateTime": "20230817184200",
        "endDateTime": "20231017184200",
        "where": "",
        "blockCompoundColumn":true,
        "bulkQueryJobTimeoutSeconds":86400,
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{
        "print": true
      },
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "concurrent":1
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Exemple 3 : Interrogation via Bulk API 2.0

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "bulk2",
        "table": "Account",
        "beginDateTime": "20230817184200",
        "endDateTime": "20231017184200",
        "where": "",
        "blockCompoundColumn":true,
        "bulkQueryJobTimeoutSeconds":86400,
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "throttle":true,
      "concurrent":1,
      "mbps":"12"
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Exemple 4 : Interrogation à l'aide d'une instruction SOQL

{
  "type":"job",
  "version":"2.0",
  "steps":[
    {
      "stepType":"salesforce",
      "parameter":{
        "datasource":"",
        "serviceType": "query",
        "query": "select Id, Name, IsDeleted, CreatedDate from Account where Name!='Aliyun' ",
        "column": [
          {
            "type": "STRING",
            "name": "Id"
          },
          {
            "type": "STRING",
            "name": "Name"
          },
          {
            "type": "BOOL",
            "name": "IsDeleted"
          },
          {
            "type": "DATE",
            "name": "CreatedDate"
          }
        ]
      },
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"
    },
    "speed":{
      "throttle":true,
      "concurrent":1,
      "mbps":"12"
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Paramètres du script Reader

Paramètre

Obligatoire

Description

Valeur par défaut

datasource

Oui

Le nom de la source de données. En mode script, vous pouvez ajouter une source de données. La valeur de ce paramètre doit correspondre au nom de la source de données ajoutée.

Aucune

serviceType

Non

Le mode de synchronisation. Valeurs possibles :

  • sobject : interroge un objet Salesforce.

  • query : interroge les données à l'aide d'une instruction SOQL.

  • bulk1 : interroge un objet Salesforce à l'aide de l'API Bulk 1.0.

  • bulk2 : interroge un objet Salesforce à l'aide de l'API Bulk 2.0.

    Important
    • Les modes bulk1 et bulk2 ne prennent pas en charge les types de données composites, tels que address et geolocation.

    • Le mode bulk2 ne prend pas en charge les tâches distribuées.

    • Les performances peuvent varier entre bulk1 et bulk2. Testez les deux modes sur votre objet Salesforce pour sélectionner le plus adapté.

sobject

table

Oui

L'objet Salesforce, similaire à un nom de table, tel que Account, Case ou Group. Obligatoire si serviceType est défini sur sobject, bulk1 ou bulk2.

Aucune

beginDateTime

Non

  • Les heures de début et de fin pour l'extraction des données. Ce paramètre est utilisé lorsque serviceType est défini sur sobject, bulk1 ou bulk2.

  • Filtre les données en fonction de l'heure de dernière modification de l'objet Salesforce. Le champ d'heure de dernière modification est identifié automatiquement selon l'ordre de priorité suivant : SystemModstamp > LastModifiedDate > CreatedDate.

  • La plage horaire constitue un intervalle fermé à gauche et ouvert à droite.

  • Une chaîne temporelle au format yyyymmddhhmmss. Vous pouvez utiliser ce paramètre avec les paramètres de planification pour effectuer une extraction incrémentielle.

Aucune

endDateTime

Non

Aucune

splitPk

Non

  • La clé de partitionnement. Ce paramètre est utilisé lorsque serviceType est défini sur sobject.

  • Spécifie un champ à utiliser comme clé de partitionnement pour le fractionnement des données. Cela permet d'exécuter des tâches concurrentes et d'améliorer l'efficacité de la synchronisation des données.

  • Seuls les types de données datetime, int et long sont pris en charge. L'utilisation d'autres types entraîne l'échec de la tâche.

Aucune

blockCompoundColumn

Non

Spécifie le comportement lorsqu'un type de données composite est rencontré. Ce paramètre est utilisé lorsque serviceType est défini sur bulk1 ou bulk2. Valeurs possibles :

  • true : la tâche échoue. Vous devez supprimer le mappage de colonne pour le type de données composite et relancer la tâche.

  • false : le type de données composite est lu comme NULL.

true

bulkQueryJobTimeoutSeconds

Non

  • Le délai d'attente pour la préparation des données par lots, en secondes. Ce paramètre est utilisé lorsque serviceType est défini sur bulk1 ou bulk2.

  • Le serveur Salesforce prépare les données par lots avant le début de la lecture. La tâche échoue si cette préparation dépasse le délai d'attente spécifié.

86400

batchSize

Non

  • Taille du lot, c'est-à-dire le nombre d'enregistrements à télécharger par lot. Ce paramètre est utilisé lorsque serviceType est défini sur bulk1 ou bulk2.

  • Pour des performances optimales, spécifiez une valeur légèrement supérieure à la taille de lot déterminée par la tâche de préparation des données Salesforce.

  • Étant donné que les données sont diffusées en flux continu, l'augmentation de cette valeur n'entraîne pas une hausse de la consommation mémoire.

  • Il s'agit d'un paramètre avancé qui n'est pas pris en charge en mode assistant.

300000

where

Non

  • Condition de filtre. Ce paramètre est utilisé lorsque serviceType est défini sur sobject, bulk1 ou bulk2.

  • Dans les scénarios métier réels, vous pouvez filtrer les données. Par exemple, spécifiez Name != 'Aliyun'.

  • Si ce paramètre est vide, le système synchronise l'intégralité des données.

  • La valeur doit constituer une clause WHERE SOQL valide. Par exemple, limit 10 n'est pas valide car LIMIT représente une clause distincte en SOQL.

Aucune

query

Non

  • Instruction de requête. Ce paramètre est utilisé lorsque serviceType est défini sur query.

  • Lorsque le paramètre where s'avère insuffisant, utilisez query pour fournir une instruction de requête SOQL complète. Si ce paramètre est spécifié, il remplace les paramètres table, column, beginDateTime, endDateTime, where et splitPk. Exemple : select Id, Name, IsDeleted from Account where Name!='Aliyun'.

  • Il s'agit d'un paramètre avancé qui n'est pas pris en charge en mode assistant.

Aucune

queryAll

Non

  • Indique si les enregistrements supprimés doivent être inclus dans la requête. Ce paramètre est utilisé lorsque serviceType est défini sur sobject ou query.

  • Si la valeur est définie sur true, les résultats incluent les enregistrements supprimés, identifiables via le champ IsDeleted.

false

column

Oui

Colonnes à synchroniser. Spécifiez les colonnes sous forme de tableau JSON.

  • Prend en charge l'élagage des colonnes, ce qui permet de sélectionner un sous-ensemble de colonnes à exporter.

  • Permet de réorganiser les colonnes afin de les exporter dans un ordre différent du schéma de la table.

  • Vous pouvez configurer des constantes. Exemple :

    [
      {
        "name": "Id",
        "type": "STRING"
      },
      {
        "name": "Name",
        "type": "STRING"
      },
      {
        "name": "'123'",
        "type": "LONG"
      },
      {
        "name": "'abc'",
        "type": "STRING"
      }
    ]
    Remarque
    • Id et Name correspondent aux noms de colonne standards.

    • '123' représente une constante entière. Notez qu'elle doit être entourée de guillemets simples.

    • 'abc' représente une constante de type chaîne. Notez qu'elle doit être entourée de guillemets simples.

  • Vous devez explicitement spécifier toutes les colonnes à synchroniser sous forme d'un tableau non vide.

Aucune

connectTimeoutSeconds

Non

  • Délai d'attente pour l'établissement d'une connexion HTTP, exprimé en secondes. La tâche échoue si la connexion n'est pas établie dans ce délai.

  • Il s'agit d'un paramètre avancé qui n'est pas pris en charge en mode assistant.

30

socketTimeoutSeconds

Non

  • Délai d'attente de la réponse HTTP, exprimé en secondes. La tâche échoue si le temps écoulé entre la réception de paquets de données consécutifs dépasse cette valeur.

  • Il s'agit d'un paramètre avancé qui n'est pas pris en charge en mode assistant.

600

retryIntervalSeconds

Non

  • Intervalle de nouvelle tentative, exprimé en secondes.

  • Il s'agit d'un paramètre avancé qui n'est pas pris en charge en mode assistant.

60

retryTimes

Non

  • Le nombre de tentatives de nouvelle tentative.

  • Il s'agit d'un paramètre avancé qui n'est pas pris en charge dans le mode Assistant.

3

FAQ

Q : Une erreur de redirection HTTP 302 se produit lors de la configuration de la connexion à une source de données Salesforce. Comment résoudre ce problème ?

R : Vérifiez si le nom de domaine dans les champs Login URL et Authentication URL est incorrectement défini sur sfcrmapps.cn. Les instances Alibaba Cloud Salesforce doivent utiliser *.sfcrmproducts.cn, et non *.sfcrmapps.cn. Ces deux noms de domaine se ressemblent beaucoup et sont facilement confondus.

Exemples :

URL

Incorrect

https://<instance>.sfcrmapps.cn

Correct

https://<instance>.sfcrmproducts.cn

Remplacez le domaine dans les champs Login URL et Authentication URL par sfcrmproducts.cn pour rétablir la connexion normale.