2014-03-05 7 views

답변

2

이 게시물 :

https://developer.salesforce.com/forums/ForumsMain?id=906F000000090nUIAQ

는 다른 sObjects 수 있지만,이 덩어리 제한이 초과되도록 오브젝트의 순서가 아님을 시사한다. 즉, "1,1,1,2,2,2"에는 "1"에서 "2"로 전환되는 하나의 청크가 있습니다. "1,2,3,4,5,6"에는 요소 수가 동일하더라도 여섯 개의 청크가 있습니다. 객체 순서대로 정렬 된 객체를 목록에 배치하는 것이 좋습니다.

2 또는 3 행만으로 합리적인 테스트 케이스를 만들 수 있습니까?

1

이 문제에 대한 두 가지 설명이 있습니다 Jagular가 언급 한 바와 같이

  1. , 당신은 당신이 삽입 시도 sobjects을 주문하지 않은, 그래서 목록에 10 개 이상의 '청크'이있다.
  2. > 2000 레코드를 삽입하고> sobject 형식을 시도해보십시오. 오류 메시지가 문제와 일치하지 않기 때문에 Salesforce 버그처럼 보입니다. 하이브리드 목록이있을 때
+0

나는 조건 2가 나의 상황이라는 것을 알고있다. 오우 !! – sechastain

0

시나리오 1과 그 해결책은

, 개체가 어떤 순서없이 흩어져 있지 않은지 확인하십시오. 예를 들어, A, B, A, B, A, B, A, B .... Salesforce는 sObject 유형을 10 번 이상 전환하는 데 고유 한 문제가 있습니다. 그들은이 스위칭 한계를 청킹 한도라고 부릅니다. 따라서이 하이브리드 목록에서 정렬 된 다음 DML로 전달하면 Salesforce가 훨씬 더 행복해졌습니다. 예를 들어. A, A, A, A, B, B, B, B ...이 경우 salesforce는 한 번만 전환하면됩니다 (즉, 모든 A 객체 -> 스위치 -> 모든 B 객체 읽기). 최대 청크 제한은 10입니다. 따라서 여기서는 안전합니다. listToUpdate.sort(); 업데이트 listToUpdate;

시나리오 2와 솔루션

우리가 명심해야 할 또 다른 점은 하이브리드 목록은 하나 개의 유형 사물의 수를 포함하는 경우, 우리는 TypeException으로 실행할 수 있다는 것입니다. 스크린 샷에서 언급했듯이 list에 A 유형의 오브젝트 1001 개와 B 유형의 오브젝트 1001 개가 들어 있으면 총 오브젝트는 2002와 같습니다. 허용되는 최대 청크는 10입니다. 간단한 수학을 수행하면 오브젝트의 수는 각 청크는 2002/10 = 200이 될 것입니다. 또한 Salesforce는 각 청크가 200 개 또는 200 개 이상의 객체를 포함하지 말아야하는 또 다른 관리자 제한을 시행합니다. 이 경우 코드를 입력 할 수있는 객체의 양을 미리 예측해야하며 매번 DML에 안전한 크기의 목록을 전달하는 코드를 작성해야합니다. 시나리오 3과 솔루션

시나리오 3과 솔루션

하이브리드 목록은 다음, 10 개 이상의 종류의 객체가 포함 된 경우 발생할 수

세 번째 시나리오는 경우에도 목록의 크기의 경우 매우 작은 경우 Salesforce에서 다른 sObject를 읽으면 전환이 발생합니다.따라서이 경우 각 sObject 유형에 대해 별도의 목록을 할당 한 다음 DML에 전달해야합니다. 정점 트리거 또는 정점 클래스에서이를 수행하면 여러 DML이 컨텍스트에서 시작되므로 문제가 발생할 수 있습니다. 다른 컨텍스트에서 DML 작업을 위해 이러한 종류의 여러 sObject 목록을 전달하면 실제로 플랫폼에로드되는로드가 줄어 듭니다. 꼭짓점 트리거 또는 꼭대기 클래스보다는 일괄 처리 작업에서 이러한 종류의 논리를 수행하는 것이 좋습니다.

희망이 도움이됩니다.