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}
20
21public class Requests {
22 @InvocableVariable(label='Records for Input' description='yourDescription' required=true)
23 public List<SObject> inputCollection;
24 }
25
26public class Results {
27 @InvocableVariable(label='Records for Output' description='yourDescription' required=true)
28 public SObject outputMember;
29 }
30}InvocableVariable 修飾子
次の例に示すように、呼び出し可能な変数アノテーションでは修飾子がサポートされています。
@InvocableVariable(label='yourLabel' description='yourDescription' required=(true | false))
どの修飾子も省略可能です。
- label
- 変数の表示ラベル。デフォルトは変数名です。
- description
- 変数の説明。デフォルトは Null です。
- required
- 変数が必須かどうかを指定します。指定されていない場合のデフォルトは false です。出力変数ではこの値が無視されます。
InvocableVariable に関する考慮事項
- 他のアノテーションと InvocableVariable アノテーションを併用することはできません。
- 呼び出し可能な変数にすることができるのは、グローバル変数と公開変数のみです。
- 次に該当する場合は、呼び出し可能な変数にできません。
- static 変数、local 変数などの非メンバー変数
- プロパティ
- final 変数
- Protected または private
- 呼び出し可能な変数のデータ型は、次のいずれかである必要があります。
- プリミティブ
- 汎用 sObject または特定の sObject のいずれかの sObject
- プリミティブ、sObject、Apex クラスから作成されたオブジェクト、コレクションのリスト、またはリストのリスト
- 管理パッケージの場合
- 呼び出し可能な公開変数は、同じ管理パッケージ内のフローおよびプロセスで設定できます。
- 呼び出し可能なグローバル変数は、登録者組織のあらゆる場所で設定できます。呼び出し可能なグローバル変数のみが登録者組織の Flow Builder およびプロセスビルダーに表示されます。
呼び出し可能アクションについての詳細は、『Actions Developer’s Guide (アクション開発者ガイド)』を参照してください。