2017-12-19 20 views
0

salesforce에서 기회를 얻기 위해 많은 양의 데이터를 upsert해야합니다. 첫 번째 일괄 처리 단계에서 일괄 커밋을 사용했습니다. Upsert Bulk의 결과는 success, id, error, fields가있는 Upsert Result 목록입니다.노새 : 캡처 실패 Salesforce 일괄 처리에서 일괄 처리 커밋 후 Upsert 레코드

이 결과를 반복하면서 실패한 레코드 (성공은 거짓 임)를 확인하기 위해 오류와 원본 페이로드를 전자 메일로 보내려고했습니다.

  1. 실패한 업서트 결과를 원래 페이로드와 어떻게 연관시킬 수 있습니까?
  2. 일괄 커밋 후 출력에 입력 페이로드의 순서가 유지됩니까?

예 : inputpayload은 : [rec1이,이 rec2, rec3은] UpsertResult [성공 : 사실, 성공 : 거짓 오류 : 유효하지 않은 필드, 성공 : TRUE]

내가이 rec2 말을 이메일을 보낼 실패했습니다 오류 유효하지 않은 필드 때문입니다.

도움을 주시면 감사하겠습니다.

답변

0

salesforce opeation 결과의 순서는 입력 순서와 동일하게 유지됩니다. 일괄 처리 단계 전에 Id를 키로, 입력 전체를 값으로 Hashmap에 저장하십시오. 일괄 처리 단계 후에 결과를 반복하고 결과가 상태가 false 일 때 Ids를 수집합니다.

이제 ID를 전달하여 해시 맵에서 실패한 ID의 데이터를 쉽게 검색 할 수 있습니다. 코드 스 니펫

def inputPayloadForReprocess = [];

에 대한 재 처리 에 대한 오류 레코드를 구축하기 // 로직 (;) (전 < payload.size, I = 0을 int로 내가 ++) {
(payload.get (I)로 .toString()가 포함되어있는 경우 (". 성공)) "= '거짓'{// 세일즈 포스 오류를 확인

inputPayloadForReprocess.add(message.getInvocationProperty("storePayload").get(i)); 
    break; 
} 

}