288.12. Salesforce Composite API를 사용하여 여러 체인 요청을 제출
복합 작업을 사용하면 이전 요청에서 생성된 인스턴스 식별자에 대해 함께 연결할 수 있는 최대 25개의 요청을 후속 요청에 사용할 수 있습니다. 개별 요청 및 응답은 제공된 참조 와 연결됩니다.
참고
복합 API는 JSON 페이로드만 지원합니다.
참고
배치 API와 마찬가지로 결과는 API에서 API에 따라 다를 수 있으므로 요청 결과가 java.lang.Object 로 제공됩니다. 대부분의 경우 결과는 문자열 키와 값이 있는 java.util.Map 또는 기타 java.util.Map 값이 값으로 지정됩니다. JSON 형식으로 이루어진 요청은 일부 유형 정보(예: 문자열과 숫자 값이 무엇인지 알 수 있음)를 보유하므로 일반적으로 보다 형식 친화적이 됩니다.
예를 들어 다음을 살펴보겠습니다.
SObjectComposite composite = new SObjectComposite("38.0", true);
// first insert operation via an external id
final Account updateAccount = new TestAccount();
updateAccount.setName("Salesforce");
updateAccount.setBillingStreet("Landmark @ 1 Market Street");
updateAccount.setBillingCity("San Francisco");
updateAccount.setBillingState("California");
updateAccount.setIndustry(Account_IndustryEnum.TECHNOLOGY);
composite.addUpdate("Account", "001xx000003DIpcAAG", updateAccount, "UpdatedAccount");
final Contact newContact = new TestContact();
newContact.setLastName("John Doe");
newContact.setPhone("1234567890");
composite.addCreate(newContact, "NewContact");
final AccountContactJunction__c junction = new AccountContactJunction__c();
junction.setAccount__c("001xx000003DIpcAAG");
junction.setContactId__c("@{NewContact.id}");
composite.addCreate(junction, "JunctionRecord");
final SObjectCompositeResponse response = template.requestBody("salesforce:composite?format=JSON", composite, SObjectCompositeResponse.class);
final List<SObjectCompositeResult> results = response.getCompositeResponse();
final SObjectCompositeResult accountUpdateResult = results.stream().filter(r -> "UpdatedAccount".equals(r.getReferenceId())).findFirst().get()
final int statusCode = accountUpdateResult.getHttpStatusCode(); // should be 200
final Map<String, ?> accountUpdateBody = accountUpdateResult.getBody();
final SObjectCompositeResult contactCreationResult = results.stream().filter(r -> "JunctionRecord".equals(r.getReferenceId())).findFirst().get()