288.10. Salesforce Composite API를 사용하여 SObject 트리 제출
288.10. Salesforce 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 속성) 또는 해당 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