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

InvocableMethod アノテーション

呼び出し可能なアクションとして実行できるメソッドを識別するには InvocableMethod アノテーションを使用します。

フローが Apex を呼び出す場合、実行ユーザのユーザプロファイルまたは権限セットに対応する Apex クラスのセキュリティが設定されている必要があります。

メモ

呼び出し可能なメソッドは、外部 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<String> accountNames = new List<String>();
5    Map<ID, Account> accounts = new Map<ID, Account>[SELECT Name FROM Account WHERE Id in :ids];
6    for (ID id : ids) {
7      String accName = accounts.get(id) == null ? ' ' : accounts.get(id) .Name;
8      accountNames.add(account.Name);
9    }
10    return accountNames;
11  }
12}

次のサンプルコードは、特定の 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, false);
5    List<ID> accountIds = new List<ID>();
6    for (Database.SaveResult result : results) {
7      accountIds.add (result.isSuccess()) {
8        accountIds.add(result.getId());
9      }
10    }
11    return accountIds;
12  }
13}

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

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

次のサンプルコードは、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') 
4public 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 クラスを作成し、そのクラスに呼び出し可能な変数アノテーションが付加されているメンバー変数が少なくとも 1 つ含まれていることを確認します。
戻り値の型が Null 以外の場合は、メソッドによって返されるデータ型が次のいずれかである必要があります。
  • プリミティブデータ型のリスト、またはプリミティブデータ型のリストのリスト – 汎用 Object 型はサポートされていません。
  • sObject 型のリスト、または sObject 型のリストのリスト。
  • 汎用 sObject 型のリスト (List<sObject>)、または汎用 sObject 型のリストのリスト (List<List<sObject>>)。
  • サポートされている型の変数、またはユーザ定義の Apex 型を含み、InvocableVariable アノテーションが付加されているユーザ定義型のリスト。各自のデータ型を実装するカスタムのグローバルまたは公開 Apex クラスを作成し、そのクラスに呼び出し可能な変数アノテーションが付加されているメンバー変数が少なくとも 1 つ含まれていることを確認します。

    一括処理を正しく実装するには、入力と出力がサイズと順序の両方の点で一致する必要があります。たとえば、i 番目の出力エントリは i 番目の入力エントリに一致する必要があります。これは、アクションが一括処理で実行されるときにデータの正確性を維持するために必要です。たとえば、Apex アクションがレコードトリガフローで使用されるときに必要となります。

    メモ

管理パッケージ
  • パッケージの呼び出し可能なメソッドを使用できますが、呼び出し可能なメソッドを追加すると、パッケージの後続のバージョンからそのメソッドを削除できません。
  • 呼び出し可能な公開メソッドは、管理パッケージ内のフローおよびプロセスで参照できます。
  • 呼び出し可能なグローバルメソッドは、登録者組織のあらゆる場所で参照できます。呼び出し可能なグローバルメソッドのみが登録者組織の Flow Builder およびプロセスビルダーに表示されます。

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