InvocableMethod アノテーション
呼び出し可能なメソッドは、外部 API ソースとやりとりする Rest、Apex、フロー、または Einstein ボットからネイティブにコールされます。呼び出し可能なメソッドには動的な入力値と出力値があり、記述用の API コール (describe) をサポートします。
次の機能はサンプルコードは、プリミティブデータ型を取る呼び出し可能なメソッドを示します。
1public class AccountQueryAction {
2 @InvocableMethod(label='Get Account Names' description='Returns the list of account names corresponding to the specified account IDs.' category='Account')
3 public static List<String> getAccountNames(List<ID> ids) {
4 List<Account> accounts = [SELECT Name FROM Account WHERE Id in :ids];
5 Map<ID, String> idToName = new Map<ID, String>();
6 for (Account account : accounts) {
7 idToName.put(account.Id, account.Name);
8 }
9 // put each name in the output at the same position as the id in the input
10 List<String> accountNames = new List<String>();
11 for (String id : ids) {
12 accountNames.add(idToName.get(id));
13 }
14 return accountNames;
15 }
16}次のサンプルコードは、特定の sObject データ型を取る呼び出し可能なメソッドを示します。
1public class AccountInsertAction {
2 @InvocableMethod(label='Insert Accounts' description='Inserts the accounts specified and returns the IDs of the new accounts.' category= 'Account')
3 public static List<ID> insertAccounts(List<Account> accounts) {
4 Database.SaveResult[] results = Database.insert(accounts);
5 List<ID> accountIds = new List<ID>();
6 for (Database.SaveResult result : results) {
7 accountIds.add(result.getId());
8 }
9 return accountIds;
10 }
11}次のサンプルコードは、汎用の sObject データ型を取る呼び出し可能なメソッドを示しています。
1public with sharing class GetFirstFromCollection {
2 @InvocableMethod
3 public static List<Results> execute (List<Requests> requestList) {
4 List<Results> results = new List<Results>();
5 for (Requests request : requestList) {
6 List<SObject> inputCollection = request.inputCollection;
7 SObject outputMember = inputCollection[0];
8
9 //Create a Results object to hold the return values
10 Results result = new Results();
11
12 //Add the return values to the Results object
13 result.outputMember = outputMember;
14
15 //Add Result to the results List at the same position as the request is in the requests List
16 results.add(result);
17 }
18 return results;
19 }
20
21 public class Requests {
22 @InvocableVariable(label='Records for Input' description='yourDescription' required=true)
23 public List<SObject> inputCollection;
24 }
25
26 public class Results {
27 @InvocableVariable(label='Records for Output' description='yourDescription' required=true)
28 public SObject outputMember;
29 }
30}次のサンプルコードは、SVG ファイルからのカスタムアイコンを取る呼び出し可能なメソッドを示します。
1global class CustomSvgIcon {
2 @InvocableMethod(label='myIcon' iconName='resource:myPackageNamespace__google:top')
3 global static List<Integer> myMethod(List<Integer> request) {
4 List<Integer> results = new List<Integer>();
5 for(Integer reqInt : request) {
6 results.add(reqInt);
7 }
8 return results;
9 }
10}次のサンプルコードは、Salesforce Lightning Design System (SLDS) からのカスタムアイコンを取る呼び出し可能なメソッドを示します。
1public class CustomSldsIcon {
2
3 @InvocableMethod(iconName='slds:standard:choice')
4 public static void run() {}
5
6 }サポートされる修飾子
どの修飾子も省略可能です。
- label
- メソッドのラベル。Flow Builder にアクション名として表示されます。デフォルトはメソッド名ですが、ラベルを指定することをお勧めします。
- description
- メソッドの説明。Flow Builder にアクションの説明として表示されます。デフォルトは Null です。
- callout
- callout 修飾子は、メソッドが外部システムをコールするかどうかを識別します。メソッドが外部システムをコールする場合は、callout=true を追加します。デフォルト値は false です。
- category
- メソッドのカテゴリ。Flow Builder にアクションのカテゴリとして表示されます。カテゴリが指定されていない場合 (デフォルト)、アクションは [未カテゴリ] に表示されます。
- configurationEditor
- メソッドを使用して登録され、システム管理者がアクションを設定したときに Flow Builder に表示されるカスタムプロパティエディター。この修飾子を指定しない場合。Flow Builder では標準プロパティエディターが使用されます。
- iconName
- Flow Builder キャンバスでアクションのカスタムアイコンとして使用するアイコンの名前。静的リソースとしてアップロードした SVG ファイルか、Salesforce Lightning Design System 標準アイコンを指定します。
InvocableMethod 関する考慮事項
- 実装メモ
-
- 呼び出し可能なメソッドは、static で、public または global である必要があり、そのクラスは外部クラスである必要があります。
- クラスの 1 つのメソッドにのみ InvocableMethod アノテーションを付加できます。
- 他のアノテーションと InvocableMethod アノテーションを併用することはできません。
- 入力および出力
- 最大 1 つの入力パラメーターが存在する可能性があり、そのデータ型は次のいずれかである必要があります。
- プリミティブデータ型のリスト、またはプリミティブデータ型のリストのリスト – 汎用 Object 型はサポートされていません。
- sObject 型のリスト、または sObject 型のリストのリスト。
- 汎用 sObject 型のリスト (List<sObject>)、または汎用 sObject 型のリストのリスト (List<List<sObject>>)。
- サポートされている型の変数、またはユーザー定義の Apex 型を含み、InvocableVariable アノテーションが付加されているユーザー定義型のリスト。自分のデータ型を実装するには、カスタムグローバル Apex クラスまたはカスタム公開 Apex クラスを作成します。このクラスには、呼び出し可能な変数アノテーションが付加されているメンバー変数が 1 つ以上含まれている必要があります。
- プリミティブデータ型のリスト、またはプリミティブデータ型のリストのリスト – 汎用 Object 型はサポートされていません。
- sObject 型のリスト、または sObject 型のリストのリスト。
- 汎用 sObject 型のリスト (List<sObject>)、または汎用 sObject 型のリストのリスト (List<List<sObject>>)。
- サポートされている型の変数、またはユーザー定義の Apex 型を含み、InvocableVariable アノテーションが付加されているユーザー定義型のリスト。自分のデータ型を実装するには、カスタムグローバル Apex クラスまたはカスタム公開 Apex クラスを作成します。このクラスには、呼び出し可能な変数アノテーションが付加されているメンバー変数が 1 つ以上含まれている必要があります。
- 管理パッケージ
-
- パッケージの呼び出し可能なメソッドを使用できますが、呼び出し可能なメソッドを追加すると、パッケージの後続のバージョンからそのメソッドを削除できません。
- 呼び出し可能な公開メソッドは、管理パッケージ内のフローおよびプロセスで参照できます。
- 呼び出し可能なグローバルメソッドは、登録者組織のあらゆる場所で参照できます。呼び出し可能なグローバルメソッドのみが登録者組織の Flow Builder およびプロセスビルダーに表示されます。
呼び出し可能アクションについての詳細は、『Actions Developer Guide (アクション開発者ガイド)』を参照してください。