Composite 要求および Collections 要求の allOrNone パラメータ
- Composite 要求で allOrNone が true に設定されている場合、オールオアナッシングの動作は各 sObject Collections サブ要求にも適用され、サブ要求の allOrNone の値が上書きされます。
- Composite 要求で allOrNone が false に設定されている場合、各 sObject Collections サブ要求はその allOrNone の値に従って動作します。
たとえば、Composite 要求に sObject Collections 要求と取引先責任者を作成するための要求の 2 つの項目が含まれているジョブで何が起こるかを考えてみましょう。sObject Collections 要求では 2 つの取引先を作成しようとしますが、そのうちの 1 つはすでに同じ情報の既存の取引先があるため失敗します。
1POST https://MyDomainName.my.salesforce.com/services/data/v59.0/composite -H "Authorization: Bearer token"
2
3{
4 "allOrNone" : outerFlag,
5 "collateSubrequests" : false,
6 "compositeRequest" : [
7 {
8 "method" : "POST",
9 "url" : "/services/data/v59.0/composite/sobjects",
10 "body" : {
11 "allOrNone" : innerFlag,
12 "records" : [
13 {
14 "attributes" : { "type" : "Account" },
15 "Name" : "Northern Trail Outfitters",
16 "BillingCity" : "San Francisco"
17 },
18 {
19 "attributes" : { "type" : "Account" },
20 "Name" : "Easy Spaces",
21 "BillingCity" : "Calgary"
22 }
23 ]
24 },
25 "referenceId" : "newAccounts"
26 },
27 {
28 "method" : "POST",
29 "url" : "/services/data/v59.0/sObject/Contact",
30 "body" : {
31 "FirstName" : "John",
32 "LastName" : "Smith"
33 },
34 "referenceId" : "newContact"
35 }
36 ]
37}outerFlag パラメータおよび innerFlag パラメータは true または false であり、これによって 4 つのケースが考えられます。
ケース 1: outerFlag = false、innerFlag = false
この場合、どちらの要求でも allOrNone が true に設定されていないため、どちらの要求もロールバックされません。1 つの取引先が作成され、1 つは失敗します。

ケース 2: outerFlag = false、innerFlag = true
この場合、内側の sObject Collections 要求では allOrNone が true に設定されているため、ロールバックされます。外側の Composite 要求はロールバックされません。

ケース 3: outerFlag = true、innerFlag = true
この場合、両方の要求で allOrNone が true に設定されているため、両方の要求がロールバックされます。

ケース 4: outerFlag = true、innerFlag = false
1{
2 "compositeResponse" : [
3 {
4 "body" : [
5 {
6 "id" : "001R00000066cndIAA",
7 "success" : true,
8 "errors" : [ ]
9 },
10 {
11 "success" : false,
12 "errors" : [
13 {
14 "statusCode" : "DUPLICATES_DETECTED",
15 "message" : "Use one of these records?",
16 "fields" : [ ]
17 }
18 ]
19 }
20 ],
21 "httpHeaders" : { },
22 "httpStatusCode" : 200,
23 "referenceId" : "collection1"
24 },
25 {
26 "body" : [
27 {
28 "errorCode" : "PROCESSING_HALTED",
29 "message" : "The transaction was rolled back since another operation in the same transaction failed."
30 }
31 ],
32 "httpHeaders" : { },
33 "httpStatusCode" : 400,
34 "referenceId" : "newContact"
35 }
36 ]
37}この場合、内側の sObject Collections 要求では allOrNone が false に設定されているため、すぐにはロールバックされません。ただし、外側の Composite 要求では allOrNone が true に設定されているため、ロールバックされ、これによって内側の sObject Collections 要求もロールバックされます。