Loading
Skapa gränssnittobjekt för en datamappningsinläsning

Skapa gränssnittobjekt för en datamappningsinläsning

Tillhandahåll externa data, till exempel en CSV-fil, som en indata till en datamappningsinläsning. De externa data kan importeras till ett gränssnittsobjekt, som är ett eget Salesforce-objekt med hjälp av ett dataimportverktyg. Mappa sedan fälten från det egna objektet till målposterna i Salesforce med hjälp av en datamappningsinläsning. När du läser in data till ett eget Salesforce-objekt utlöses en Apex som anropar en Data Mapper Load. Datamappningen tar data från gränssnittsobjektet och skriver resulterande data till andra Salesforce-postobjekt.

Gränssnittsobjekt för datamappningsinläsning

Du kan läsa in data till ett eget Salesforce-objekt med hjälp av Salesforces Dataimportguide eller ett verktyg som Salesforce Data Loader, Informatica eller Talend.

  1. I Salesforce, skapa ett eget objekt och lägg till fält som motsvarar data i den externa källan.
    1. Lägg till dessa strängfält i det egna objektet:
      • DMError (Datatyp: Långt textområde)
      • DMProgressData (Datatyp: Långt textområde)
      • DMName (Datatyp: Text): Detta fält är obligatoriskt.
        Anteckning
        Anteckning

        I Omnistudio för hanterade paket är DRBundleName ett obligatoriskt fält.

      • DMStatus (Datatyp: Långt textområde)

      Dessa fält är reserverade av Data Mappers för intern användning.

    2. Lägg till fält som motsvarar data i den externa källan.
  2. Skapa en Apex klass DMInterfaceObjectFuture.
    1. Sök fram och öppna Apex Klasser i Inställningar.
    2. Skapa en ny Apex klass och lägg till denna kod.
      public class DMInterfaceObjectFuture {
      @future(callout=true)
      public static void call(String sObjectIdsAsString){
      List<String> sObjectIds = (List<String>)JSON.deserialize(sObjectIdsAsString, List<String>.class);
      ConnectApi.DataMapperInterfaceObjectInput input = new ConnectApi.DataMapperInterfaceObjectInput();
      input.interfaceObjectIds = sObjectIds;
      input.interfaceObjectAPIName = String.valueOf(((Id)sObjectIds.get(0)).getSObjectType());
      ConnectApi.DataMapperInterfaceObjectConnect.executeDataMapperLoadForInterfaceObjects(input);
      }
      }
      
  3. Skapa en ny utlösare för det egna objektet som åberopar Datamappningsbelastningen.
    trigger trigger_name on interface_object_api_name (after insert, after update)
    {
        String orgNamespace = [SELECT NamespacePrefix FROM Organization LIMIT 1].NamespacePrefix;
        String prefix = String.isEmpty(orgNamespace) ? '' : orgNamespace + '__';
        List<String> sObjectIds = new List<String>();
        for (sObject sObj : Trigger.new) {
           if (Trigger.isUpdate) {
             if (Trigger.oldMap.get(sObj.Id).get(prefix + 'DMStatus__c') != Trigger.newMap.get(sObj.Id).get(prefix + 'DMStatus__c') ||
               Trigger.oldMap.get(sObj.Id).get(prefix + 'DMError__c') != Trigger.newMap.get(sObj.Id).get(prefix + 'DMError__c') ||
               Trigger.oldMap.get(sObj.Id).get(prefix + 'DMProgressData__c') != Trigger.newMap.get(sObj.Id).get(prefix + 'DMProgressData__c') ||
               Trigger.oldMap.get(sObj.Id).get(prefix + 'DMName__c') != Trigger.newMap.get(sObj.Id).get(prefix + 'DMName__c')) {
               continue;
             }
           }
    
           sObjectIds.add(sObj.Id);
        }
    
        if (!sObjectIds.isEmpty()) {
            DMInterfaceObjectFuture.call(JSON.serialize(sObjectIds)); 
        }
    }
  4. Skapa och konfigurera Data Mapper Load.
    1. Skapa en datamappningsinläsning med SObject som indatatyp.
    2. Välj det gränssnittsobjekt som du skapade för indata från rullmenyn.
    3. I Datamappningsinläsning, mappa gränssnittsobjektfälten med de Salesforce-poster du vill uppdatera.
    4. För att verifiera att din Data Mapper Load har åtkomst till data i gränssnittobjektet, läs in en liten mängd testdata i gränssnittobjektet och kör Data Mapper.
  5. Importera externa data till gränssnittsobjektet med hjälp av Salesforces massinläsningsverktyg eller det massinläsningsverktyg du föredrar.

    Du kan nu använda gränssnittsobjekt i Datamappningar på samma sätt som standardobjekt i Salesforce.

    Tips
    Tips

    Om du använder gränssnittsobjekt regelbundet, istället för en engångsmassinläsning, skapa en flik för objektet för att underlätta snabb och enkel åtkomst.

Skapa gränssnittobjekt för ett exempel på datamappningsbelastning

  1. Skapa en TestInterfaceObject__c för gränssnittsobjekt med dessa fält:
    • Data__c: Detta är datafältet för att lägga till egna data.
    • DMStatus__c
    • DMError__c
    • DMProgress
    • DMName__c
  2. Skapa en datamappningsinläsning med objektet TestInterfaceObject__c som indata som skapar poster för Konto och Kontakt.
  3. Konfigurera mappningen Datamappningsbelastning.
    • TestInterfaceObject__c.Data__c till Account.Name:
    • TestInterfaceObject__c.Data__c till Contact.LastName:
  4. Skapa en ny post för TestInterfaceObject__c.
    Till exempel, när du lägger till en ny post, Account1, i fältet Data_c i gränssnittobjektet skapas en ny kontopost med Namn = Account1 och en ny kontaktpost med LastName = Account1 skapas.

    Dessa fält i objektet TestInterfaceObject__c uppdateras:

    • DMStatus__c: {"Account": "success", "Contact": "success"}
    • DMProgressData__c: {"Account": "<created account id>", "Contact": "<created contact id>"}
 
Laddar
Salesforce Help | Article