この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

InvocableVariable アノテーション

カスタムクラスで呼び出し可能なメソッドによって使用される変数を識別するには InvocableVariable アノテーションを使用します。

InvocableVariable アノテーションは、InvocableMethod メソッドの呼び出し可能なアクションの入力または出力パラメーターとして使用されるクラス変数を識別します。呼び出し可能なメソッドへの入力または出力として使用する独自のカスタムクラスを作成する場合、個別のクラスメンバー変数を付加すると、メソッドで使用できるようになります。

次のサンプルコードは、呼び出し可能な変数を取る呼び出し可能なメソッドを示します。

1global class ConvertLeadAction {
2  @InvocableMethod(label='Convert Leads')
3  global static List<ConvertLeadActionResult> convertLeads(List<ConvertLeadActionRequest> requests) {
4    List<ConvertLeadActionResult> results = new List<ConvertLeadActionResult>();
5    for (ConvertLeadActionRequest request : requests) {
6      results.add(convertLead(request));
7    }
8    return results;
9  }
10
11  public static ConvertLeadActionResult convertLead(ConvertLeadActionRequest request) {
12    Database.LeadConvert lc = new Database.LeadConvert();
13    lc.setLeadId(request.leadId);
14    lc.setConvertedStatus(request.convertedStatus);
15
16    if (request.accountId != null) {
17        lc.setAccountId(request.accountId);
18    }
19
20    if (request.contactId != null) {
21      lc.setContactId(request.contactId);
22    }
23
24    if (request.overWriteLeadSource != null && request.overWriteLeadSource) {
25      lc.setOverwriteLeadSource(request.overWriteLeadSource);
26    }
27
28    if (request.createOpportunity != null && !request.createOpportunity) {
29      lc.setDoNotCreateOpportunity(!request.createOpportunity);
30    }
31
32    if (request.opportunityName != null) {
33      lc.setOpportunityName(request.opportunityName);
34    }
35
36    if (request.ownerId != null) {
37      lc.setOwnerId(request.ownerId);
38    }
39
40    if (request.sendEmailToOwner != null && request.sendEmailToOwner) {
41      lc.setSendNotificationEmail(request.sendEmailToOwner);
42    }
43
44    Database.LeadConvertResult lcr = Database.convertLead(lc, true);
45    if (lcr.isSuccess()) {
46      ConvertLeadActionResult result = new ConvertLeadActionResult();
47      result.accountId = lcr.getAccountId();
48      result.contactId = lcr.getContactId();
49      result.opportunityId = lcr.getOpportunityId();
50      return result;
51    } else {
52      throw new ConvertLeadActionException(lcr.getErrors()[0].getMessage());
53    }
54  }
55
56  global class ConvertLeadActionRequest {
57    @InvocableVariable(required=true)
58    global ID leadId;
59
60    @InvocableVariable(required=true)
61    global String convertedStatus;
62
63    @InvocableVariable
64    global ID accountId;
65
66    @InvocableVariable
67    global ID contactId;
68
69    @InvocableVariable
70    global Boolean overWriteLeadSource;
71
72    @InvocableVariable
73    global Boolean createOpportunity;
74
75    @InvocableVariable
76    global String opportunityName;
77
78    @InvocableVariable
79    global ID ownerId;
80
81    @InvocableVariable
82    global Boolean sendEmailToOwner;
83  }
84
85  global class ConvertLeadActionResult {
86    @InvocableVariable
87    global ID accountId;
88
89    @InvocableVariable
90    global ID contactId;
91
92    @InvocableVariable
93    global ID opportunityId;
94  }
95
96  class ConvertLeadActionException extends Exception {}
97}

次のサンプルコードは、汎用 sObject データ型の呼び出し可能な変数を持つ呼び出し可能なメソッドを示しています。

1public with sharing class GetFirstFromCollection {
2  @InvocableMethod
3  public static List <Results> execute (List<Requests> requestList) {
4    List<SObject> inputCollection = requestList[0].inputCollection;
5    SObject outputMember = inputCollection[0];
6
7    //Create a Results object to hold the return values
8    Results response = new Results();
9
10    //Add the return values to the Results object
11    response.outputMember = outputMember;
12
13    //Wrap the Results object in a List container 
14    //(an extra step added to allow this interface to also support bulkification)
15    List<Results> responseWrapper= new List<Results>();
16    responseWrapper.add(response);
17    return responseWrapper;    
18  }
19
20public class Requests {
21  @InvocableVariable(label='Records for Input' description='yourDescription' required=true)
22  public List<SObject> inputCollection;
23  }
24
25public class Results {
26  @InvocableVariable(label='Records for Output' description='yourDescription' required=true)
27  public SObject outputMember;
28  }
29}

サポートされる修飾子

次の例に示すように、呼び出し可能な変数アノテーションでは修飾子がサポートされています。

@InvocableVariable(label='yourLabel' description='yourDescription' required=(true | false))

どの修飾��も省略可能です。
label
変数の表示ラベル。デフォルトは変数名です。

このラベルは、Flow Builder で、呼び出し可能なメソッドに対応するアクション要素に表示されます。このラベルは、管理者がフローで変数を使用する方法を理解するために役立ちます。

ヒント

description
変数の説明。デフォルトは Null です。
required
変数が必須かどうかを指定します。指定されていない場合のデフォルトは false です。出力変数ではこの値が無視されます。

InvocableVariable に関する考慮事項

  • 他のアノテーションと InvocableVariable アノテーションを併用することはできません。
  • 呼び出し可能な変数にすることができるのは、グローバル変数と公開変数のみです。
  • 次に該当する場合は、呼び出し可能な変数にできません。
    • static 変数、local 変数などの非メンバー変数。
    • プロパティ。
    • final 変数。
    • Protected または private
  • 呼び出し可能な変数のデータ型は、次のいずれかである必要があります。
    • オブジェクト以外のプリミティブ
    • 汎用 sObject または特定の sObject のいずれかの sObject
    • プリミティブ、sObject、Apex クラスから作成されたオブジェクト、コレクションのリスト、またはリストのリスト
  • Apex の呼び出し可能な変数の名前は、フロー内の名前に一致する必要があります。この名前は大文字と小文字が区別されます。
  • 管理パッケージの場合
    • 呼び出し可能な公開変数は、同じ管理パッケージ内のフローおよびプロセスで設定できます。
    • 呼び出し可能なグローバル変数は、登録者組織のあらゆる場所で設定できます。呼び出し可能なグローバル変数のみが登録者組織の Flow Builder およびプロセスビルダーに表示されます。

呼び出し可能アクションについての詳細は、『Actions Developer Guide (アクション開発者ガイド)』を参照してください。