フローで Apex アクションを実行
Flow Builder には多くの機能がありますが、フローにデフォルト要素以外の機能が必要な場合があります。その場合は、Apex アクションを使用して、フローから Apex クラスをコールします。
必要なエディション
| サポートされているエディションを表示する。 |
開発者が Apex クラスをフローのアクション要素として使用可能にしようとする場合、2 つのオプションがあります。Process.Plugin インターフェースはパレットでクラスが表示される方法のカスタマイズをサポートしていますが、@InvocableMethod アノテーションにはより多くの機能があります。次の表に、各オプションでサポートされる機能を示します。
Process.Plugin インターフェースの代わりに @InvocableMethod アノテーションを使用することをお勧めします。Process.Plugin インターフェース |
@InvocableMethod アノテーション |
|
|---|---|---|
| Apex データ型のサポート | 未サポート:
|
未サポート:
Flow Builder は、Apex メソッドの入力または出力パラメーターのレコードコレクション変数への対応付けはサポートしていません。 |
| 一括処理 | 未サポート | サポート |
| カスタムアイコン | 未サポート | サポート |
| Flow Builder の要素種別 | アクション | アクション |
| カスタマイズ可能な構成環境 | 未サポート | InvocableActionExtension メタデータでサポートされます。開発者は、入力順序とグルーピングのカスタマイズ、カスタムヘッダーの追加、入力の選択リストの定義、特定の入力パラメーターのカスタムプロパティエディターの作成を行うことができます。 |
| Flow Builder の要素名 | クラス名または name プロパティの値。 |
クラス名 |
| 再利用性 | このインターフェースを実装するクラスはフローで使用可能 | このアノテーションを実装するクラスは、以下で使用可能:
|
| 『Apex 開発者ガイド』内の詳細 |
Process.Plugin インターフェースを使用してフローにデータを渡す
|
InvocableMethod アノテーションと InvocableVariable アノテーション |
このクラスは @InvocableMethod アノテーションを実装します。
global class lookUpAccountAnnotation {
@InvocableMethod
public static List<String> getAccountIds(List<String> names) {
List<Id> accountIds = new List<Id>();
List<Account> accounts = [SELECT Id FROM Account WHERE Name in :names];
for (Account account : accounts) {
accountIds.add(account.Id);
}
return accountIds;
}
}フローから Apex を呼び出すには、実行ユーザのプロファイルまたは権限セットで対応する Apex クラスの割り当てが必要です。
API バージョン 66.0 以降、呼び出し可能なアクション パラメータとして使用されるカスタム Apex クラスには、アクセス可能な引数なしコンストラクタが必要です。詳細は、「バージョン管理された更新」の「Spring '26 (API バージョン 66.0)」を参照してください。
このクラスは Process.Plugin インターフェースを実装します。
global class lookUpAccountPlugin implements Process.Plugin {
global Process.PluginResult invoke(Process.PluginRequest request) {
String name = (String) request.inputParameters.get('name');
Account account = [SELECT Id FROM Account WHERE Name = :name LIMIT 1][0];
Map<String,Object> result = new Map<String,Object>();
result.put('accountId', account.Id);
return new Process.PluginResult(result);
}
global Process.PluginDescribeResult describe() {
Process.PluginDescribeResult result = new Process.PluginDescribeResult();
result.Name = 'Look Up Account ID By Name';
result.Tag = 'Account Classes';
result.inputParameters = new
List<Process.PluginDescribeResult.InputParameter>{
new Process.PluginDescribeResult.InputParameter('name',
Process.PluginDescribeResult.ParameterType.STRING, true)
};
result.outputParameters = new
List<Process.PluginDescribeResult.OutputParameter>{
new Process.PluginDescribeResult.OutputParameter('accountId',
Process.PluginDescribeResult.ParameterType.STRING)
};
return result;
}
}lookupAccountAnnotation の長さは、lookupAccountPlugin の半分 (11 行) 未満 (28 行) です。また、アノテーションでは一括操作がサポートされているため、lookupAccountAnnotation はインタビューのバッチごとに 1 つのクエリを実行します。lookupAccountPlugin はインタビューごとに 1 つのクエリを実行します。

