289.10. LimitRange Composite API를 사용하여 SObject 트리 제출
289.10. LimitRange Composite API를 사용하여 SObject 트리 제출
부모-자식 관계를 포함하여 최대 200개의 레코드를 생성하려면 salesforce:composite-tree 작업을 사용합니다. 이를 위해서는 입력 메시지에 org.apache.camel.component.salesforce.api.dto.composite.SObjectTree 의 인스턴스가 필요하며 출력 메시지에서 동일한 오브젝트 트리를 반환해야 합니다. org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase 인스턴스는 ID 값(Id 속성) 또는 해당 org.apache.camel.component.salesforce.api.dto.composite.SObjectNode 가 실패 시 오류로 채워집니다.
일부 레코드 작업의 경우 성공할 수 있고 일부의 경우 실패가 발생할 수 있으므로 수동으로 오류를 확인해야 합니다.
이 기능을 사용하는 가장 쉬운 방법은 camel-salesforce-maven-plugin 에서 생성된 DTO를 사용하는 것입니다. 그러나 데이터베이스에서 기본 키에 대해 트리의 각 개체를 식별하는 참조를 사용자 정의하는 옵션도 있습니다.
예를 들면 다음과 같습니다.
Account account = ...
Contact president = ...
Contact marketing = ...
Account anotherAccount = ...
Contact sales = ...
Asset someAsset = ...
// build the tree
SObjectTree request = new SObjectTree();
request.addObject(account).addChildren(president, marketing);
request.addObject(anotherAccount).addChild(sales).addChild(someAsset);
final SObjectTree response = template.requestBody("salesforce:composite-tree", tree, SObjectTree.class);
final Map<Boolean, List<SObjectNode>> result = response.allNodes()
.collect(Collectors.groupingBy(SObjectNode::hasErrors));
final List<SObjectNode> withErrors = result.get(true);
final List<SObjectNode> succeeded = result.get(false);
final String firstId = succeeded.get(0).getId();
Account account = ...
Contact president = ...
Contact marketing = ...
Account anotherAccount = ...
Contact sales = ...
Asset someAsset = ...
// build the tree
SObjectTree request = new SObjectTree();
request.addObject(account).addChildren(president, marketing);
request.addObject(anotherAccount).addChild(sales).addChild(someAsset);
final SObjectTree response = template.requestBody("salesforce:composite-tree", tree, SObjectTree.class);
final Map<Boolean, List<SObjectNode>> result = response.allNodes()
.collect(Collectors.groupingBy(SObjectNode::hasErrors));
final List<SObjectNode> withErrors = result.get(true);
final List<SObjectNode> succeeded = result.get(false);
final String firstId = succeeded.get(0).getId();
Copy to ClipboardCopied!Toggle word wrapToggle overflow