Loading
시스템 관리자에 대한 피싱 방지 MFA 및 전 직원사용자 MFA 적용 안내 더 많이 읽기
현재 다수의 문의가 발생하여 대응에 지연이 발생하고 있습니다.더 많이 읽기
데이터 매퍼 로드에 대한 인터페이스 개체 만들기

데이터 매퍼 로드에 대한 인터페이스 개체 만들기

CSV 파일과 같은 외부 데이터를 데이터 매퍼 로드에 대한 입력으로 제공합니다. 외부 데이터를 데이터 가져오기 도구를 사용하여 사용자 정의 Salesforce 개체인 인터페이스 개체로 가져올 수 있습니다. 그런 다음, 데이터 매퍼 로드를 사용하여 사용자 정의 개체의 필드를 대상 Salesforce 레코드에 매핑합니다. Salesforce 사용자 정의 개체에 데이터를 로드하면 데이터 매퍼 로드를 호출하는 Apex 트리거가 실행됩니다. 데이터 매퍼는 인터페이스 개체에서 데이터를 가져와 다른 Salesforce 레코드 개체에 결과 데이터를 작성합니다.

데이터 매퍼 로드에 대한 인터페이스 개체

Salesforce의 데이터 가져오기 마법사 또는 Salesforce Data Loader, Informatica 또는 Talend와 같은 도구를 사용하여 Salesforce 사용자 정의 개체에 데이터를 로드할 수 있습니다.

  1. Salesforce에서 사용자 정의 개체를 만들고 외부 소스의 데이터에 해당하는 필드를 추가합니다.
    1. 사용자 정의 개체에 다음 문자열 필드를 추가합니다.
      • DMError(데이터 유형: 긴 텍스트 영역)
      • DMProgressData(데이터 유형: 긴 텍스트 영역)
      • DMName(데이터 유형: 텍스트): 이 필드는 필수입니다.
        노트
        노트

        관리 패키지용 Omnistudio에서 DRBundleName은 필수 필드입니다.

      • DMStatus(데이터 유형: 긴 텍스트 영역)

      해당 필드는 데이터 매퍼에서 내부 사용을 위해 예약되어 있습니다.

    2. 외부 소스의 데이터에 해당하는 필드를 추가합니다.
  2. Apex 클래스 DMInterfaceObjectFuture를 만듭니다.
    1. 설정에서 Apex 클래스를 찾아서 선택합니다.
    2. 새 Apex 클래스를 만들고 이 코드를 추가합니다.
      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. 데이터 매퍼 로드를 호출하는 사용자 정의 개체에 새 트리거를 만듭니다.
    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. 데이터 매퍼 로드를 만들고 구성합니다.
    1. 입력 유형으로 SObject를 사용하여 Data Mapper 로드를 만듭니다.
    2. 드롭다운 목록에서 입력 데이터에 대해 만든 인터페이스 개체를 선택합니다.
    3. 데이터 매퍼 로드에서 업데이트할 Salesforce 레코드와 인터페이스 개체 필드를 매핑합니다.
    4. 데이터 매퍼 로드가 인터페이스 개체의 데이터에 액세스할 수 있는지 확인하려면 인터페이스 개체에 작은 양의 테스트 데이터를 로드하고 데이터 매퍼를 실행합니다.
  5. Salesforce 대량 로드 도구 또는 기본 대량 로드 도구를 사용하여 외부 데이터를 인터페이스 개체로 가져옵니다.

    이제 표준 Salesforce 개체와 같은 방식으로 데이터 매퍼에서 인터페이스 개체를 사용할 수 있습니다.

    팁

    인터페이스 개체를 일회성 대량 로드 대신 정기적으로 사용하는 경우 개체에 대한 탭을 만들어 빠르고 쉽게 액세스할 수 있습니다.

데이터 매퍼 로드에 대한 인터페이스 개체 만들기 예제

  1. 다음 필드를 사용하여 인터페이스 개체 TestInterfaceObject__c를 만듭니다.
    • Data__c: 이는 사용자 정의 데이터를 추가하는 데이터 필드입니다.
    • DMStatus__c
    • DMError__c
    • DMProgress
    • DMName__c
  2. 계정 및 연락처의 레코드를 생성하는 입력으로 TestInterfaceObject__c 개체를 사용하여 데이터 매퍼 로드를 만듭니다.
  3. 데이터 매퍼 로드 매핑을 구성합니다.
    • TestInterfaceObject__c.Data__c 으로 Account.Name
    • TestInterfaceObject__c.Data__c 으로 Contact.LastName
  4. TestInterfaceObject__c에 대한 새 레코드를 만듭니다.
    예를 들어, 인터페이스 개체의 Data_c 필드에 새 레코드인 Account1을 추가하면 Name = Account1이 있는 새 계정 레코드가 생성되고 LastName = Account1이 있는 새 Contact 레코드가 생성됩니다.

    TestInterfaceObject__c 개체의 다음 필드가 업데이트됩니다.

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