Doc produitsMenu

Plateforme Coveo 7.0 >
Aide à l'administrateur > Connecteurs > Ancien connecteur Salesforce > Création et utilisation d'un fichier de correspondances personnalisé

Création et utilisation d'un fichier de correspondances Salesforce personnalisé pour l'ancien connecteur

Vous pouvez créer un fichier de correspondances personnalisé pour modifier le comportement de l'ancien connecteur Salesforce et l'adapter à votre base de données Salesforce.

Astuce : Lorsque vous ne souhaitez indexer qu'un sous-groupe de types de Salesforce qui est défini dans le fichier de correspondances par défaut, vous n'êtes pas obligé de créer un fichier de correspondances personnalisé. Vous pouvez simplement spécifier les types de Salesforce à indexer dans le champ Mapping Types de la source Salesforce (voir Configuration et indexation d'une source Salesforce pour l'ancien connecteur).

Pour créer et utiliser un fichier de correspondances personnalisé

  1. Copiez le contenu du fichier de correspondances par défaut (voir À propos du fichier de correspondances Salesforce par défaut pour l'ancien connecteur).

  2. Connectez-vous au serveur maître de Coveo avec un compte d'administrateur.

  3. À l'aide d'un éditeur de texte :

    1. Dans un fichier vide, collez le contenu du fichier de correspondances par défaut.

    2. Modifiez le contenu du fichier de correspondances afin de rencontrer vos besoin, en vous référant aux sous-sections suivantes pour obtenir des détails sur la modification du fichier :

    3. Enregistrez le fichier de correspondances personnalisé dans le serveur maître de Coveo.

      Exemple : C:\CES7\Config\SalesforceMappingFile.xml

  4. Configurez le connecteur pour qu'il utilise le fichier de correspondances personnalisé dans la source Salesforce :

    • Lorsque vous créez une source Salesforce (voir Configuration et indexation d'une source Salesforce pour l'ancien connecteur).

      OU

    • Pour une source Salesforce qui existe déjà :

      1. Dans le serveur Coveo, accédez à l'Outil d'administration (voir Ouverture de l'Outil d'administration).

      2. Sélectionnez Index > Sources et collections.

      3. Sous Collections, sélectionnez la collection qui renferme la source Salesforce

      4. Sous Sources, sélectionnez la source Salesforce.

      5. Dans le panneau de navigation situé à gauche, sélectionnez Général.

      6. Dans le paramètre Fichier de correspondances, saisissez le chemin d'accès complet vers votre fichier de correspondances personnalisé.

      7. Cliquez sur Appliquer les modifications.

  5. Régénérez la source.

Structure de fichier de correspondances

Le fichier de correspondances peut être divisé en trois sections :

  • CommonMapping : Tous les paramètres appliqués à toutes les correspondances.

  • Mapping : Correspondances individuelles pour chaque type d'objet à indexer.

    Vous pouvez ajouter des correspondances pour des types personnalisés de Salesforce qui ne sont pas inclus dans le fichier de correspondances par défaut en copiant et en modifiant une section de correspondances pour un type qui existe déjà.

  • ExternalResolvers : Lorsque vous devez appliquer une correspondance sophistiquée, vous pouvez spécifier un type d'assemblage externe à appeler pour la résoudre.

Nœuds enfants des correspondances

<Fields>

Champs pour cette correspondance. À partir de ce point, vous définissez un système ou un champ personnalisé.

  • Champs système

    Les champs système peuvent être utilisés directement sous le nœud <fields>. Ils sont associés à un champ système qui existe déjà.

    Exemple : <uri> est associé directement au champ système URI pour ce type.

  • Champs personnalisés

    Des champs personnalisés peuvent être associés à un nom de métadonnées personnalisé. Les métadonnées sont remplies avec le contenu des chaînes.

    Exemple : Le nœud <CustomField name="SFLocation">%[Location]</CustomField> associe le champ nommé Location dans l'objet Salesforce aux métadonnées SFLocation dans le document dans l'index unifié.

<AllowedUsers>

  • Type d'utilisateurs : Windows, CustomGroup, CustomUser, ExternalGroup, ExternalUser, WindowSid

  • Nom : Nom de l'utilisateur

  • Serveur : Désigne, habituellement, le domaine

Sécurité des correspondances

Vous pouvez configurer l'ancien connecteur Salesforce en ajoutant ou en supprimant des groupes et utilisateurs autorisés dans le fichier de correspondance de chaque type d'objet. Les permissions sont donc incorporées dans l'index. L'utilisation de cette méthode est recommandée, car CES n'est pas obligé de récupérer les permissions de sécurité en temps de requête pour chaque requête. Toutefois, des permissions de sécurité ne peuvent être définies que pour chaque type d'objet. Ceci veut dire que des objets individuels du même type auront toujours les mêmes permissions de sécurité.

Exemple : Le code de correspondances suivant donne, au groupe Sales de Windows provenant du domaine MyOrganization, l'accès à tous les types d'index alors que la section CommonMapping s'applique à toutes les correspondances indexées.
<CommonMapping>
  <AllowedUsers>
    <AllowedUser type="Windows" allowed="true">
      <Name>Sales</Name>
      <Server>MyOrganization</Server>
    </AllowedUser>
  </AllowedUsers>
</CommonMapping>  

Vous pouvez spécifier différentes permissions de sécurité pour chaque type de correspondances en ajoutant un nœud enfant AllowedUsers à chaque nœud de correspondances.

Exemple : Le code de correspondances suivant donne l'accès au type Account vers le groupe de sécurité personnalisé Salesforce Account Users de CES à partir du domaine MyOrganization.
<Mapping type="Account">
  <AllowedUsers>
    <AllowedUser type="CustomGroup" allowed="true">
      <Name>Salesforce Account Users</Name>
      <Server>MyOrganization</Server>
    </AllowedUser>
  <Fields>
    <Title>%[Subject]</Title>
    <Body>%[Description]</Body>
    <CustomFields>
      <CustomField name="SFOwner">%[OwnerId.FirstName]%[OwnerId.LastName]</CustomField>
      <CustomField name="SFOwnerID">%[OwnerId</CustomField>
      <CustomField name="SFStatus">%[Status]</CustomField>
      <CustomField name="SFPriority">%[Priority]</CustomField>
    </CustomFields>
  </Fields>
</Mapping>  

Vous pouvez également définir directement des utilisateurs ou groupes d'Active Directory dans le fichier de correspondances. Toutefois, cette méthode exige que vous modifiez le fichier de correspondances et régénériez la source chaque fois que vous ajoutez ou supprimez des utilisateurs ou des groupes.

Exemple : Le code de correspondances suivant donne l'accès au type Task vers le groupe Sales d'Active Directory à partir du domaine MyOrganization.
<Mapping type="Tasks">
  <AllowedUsers>
    <AllowedUser type="Windows" allowed="true">
      <Name>Sales</Name>
      <Server>MyOrganization</Server>
    </AllowedUser>
  <Fields>
    <Title>%[Subject]</Title>
    <Body>%[Description]</Body>
    <CustomFields>
      <CustomField name="SFOwner">%[OwnerId.FirstName]%[OwnerId.LastName]</CustomField>
      <CustomField name="SFOwnerID">%[OwnerId</CustomField>
      <CustomField name="SFStatus">%[Status]</CustomField>
      <CustomField name="SFPriority">%[Priority]</CustomField>
    </CustomFields>
  </Fields>
</Mapping>  

Expressions locales de correspondances

L'ancien connecteur Salesforce utilise une expression de correspondances spécifique pour représenter une valeur dans un objet de Salesforce. Des occurrences de l'expression %[field] sont remplacées par la valeur du champ spécifié par le nom entre crochets pour cet objet de Salesforce.

Exemple : L'expression <ModifiedDate>%[LastModifiedDate]</ModifiedDate> remplace la chaîne %[LastModifiedDate] par la valeur du champ LastModifiedDate pour chaque objet de Salesforce. La valeur récupérée est alors assignée au champ système ModifiedDate dans chaque document de l'index unifié.

Expressions étrangères de correspondances

Étant que certains objets font référence à d'autres dans Salesforce, vous pouvez récupérer la valeur d'un champ étranger dans vos correspondances, tant et aussi longtemps que le type étranger détient le champ demandé.

Exemple : L'expression <CustomField name="SFOwner">%[OwnerId.FirstName] %[OwnerId.LastName]</CustomField> récupère l'objet spécifique désigné par OwnerId et récupère la valeur des champs FirstName et LastName dans cet objet. La chaîne qui en résulte est alors un enchaînement des deux résultats. Un exemple du résultat pour cette expression pourrait être John Smith.

Important : Les expressions étrangères peuvent ralentir drastiquement le processus d'indexation, car un objet distant doit être recherché pour chaque expression étrangère. Coveo a une cache locale pour chaque valeur de champ; toutefois, la performance se dégrade chaque fois qu'elle doit récupérer des valeurs de champ dans un nouvel objet. Utilisez-les avec prudence.

Utilisation de programmes de résolution externes

En déclarant un programme de résolution externe, vous devez fournir un nom unique ainsi qu'un nom de type pleinement qualifié à appeler.

<SalesForce>
    <ExternalResolvers>
        <ExternalResolver name="Resolvername" type="FQTypename"/>
    </ExternalResolvers>
</SalesForce>

Note : Pour plus d'informations sur des noms de types pleinement qualifiés, référez-vous au document Specifying Fully Qualified Type Names de Microsoft.

Une fois que le programme de résolution externe a été défini, vous pouvez l'utiliser dans toute correspondance avec la syntaxe suivante : @[resolvername].

Des paramètres peuvent être définis pour passer au type externe. Dans ce cas, vous devez spécifier un nœud supplémentaire entre crochets avec des paramètres séparés par un point-virgule (;) : @[resolvername][param1;param2].

Alors que les programmes de résolution externes sont appelés en dernier, des champs à résoudre (tels que %[field]) peuvent être spécifiés en tant que paramètres et seront résolus avant que le programme de résolution externe soit appelé.

Limites des types de programmes de résolution externes

Pour que le type externe soit utilisé avec le système de programme de résolution externe, vous devez écrire un DLL qui met en œuvre l'interface IMappingResolver définie comme suit :

namespace Coveo.CES.CustomCrawlers.SalesForce
{
  //****************************************************************************
  /// <summary>
  /// the Interface the callback functions in the mapping file must implement.
  /// </summary>
  //****************************************************************************
  public interface IMappingResolver
  {	
    string Resolve(string[]         p_Parameters,
                   Record           p_CurrentRecord,
                   MappingUtilities p_Utilities);
  }
}

Les paramètres sont passés en tant qu'ensemble de chaînes dans p_Parameters. L'enregistrement présent qui est en cours d'analyse est passé, ainsi que p_CurrentRecord. Finalement, les enregistrements en cache, la connexion, la cache disque, etc. du connecteur peuvent être accédés à l'aide des fonctionnalités de correspondances. La chaîne retournée par la fonction de résolution sera utilisée en tant que valeur de correspondances.

Toutes ces classes et interfaces sont dans l'assemblage de l'ancien connecteur Salesforce, les assemblages externes devront ajouter l'assemblage du connecteur Salesforce en tant que référence.