0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】フローとApexを連携する方法 ~@InvocableMethod と @InvocableVariableの使い方~

Posted at

Salesforceでは、フローとApexを連携する際に @InvocableMethod@InvocableVariable というアノテーションを使います。
この記事では、それぞれの役割や使い方について、解説します!


InvocableMethod アノテーションとは?

@InvocableMethodフローから呼び出せるメソッド を定義するためのアノテーションです。
このアノテーションを付けると、Apexクラスのメソッドを簡単にフローから利用できるようになります。

特徴

  • 1クラスに1つだけ 定義できます。
  • メソッドの引数は リスト型(List<T> のみ受け取ります。
  • メソッドの戻り値は任意ですが、一般的には リスト型 または void(戻り値なし)です。

使用例

以下の例は、フローから呼び出して複数の取引先(Account)レコードの名前を更新するメソッドを作成しています。

public class AccountUpdater {
    @InvocableMethod(label='取引先名を更新') // フローで見えるラベル名
    public static void updateAccountNames(List<AccountUpdateRequest> requests) {
        List<Account> accountsToUpdate = new List<Account>();
        for (AccountUpdateRequest request : requests) {
            Account acc = new Account(Id = request.accountId, Name = request.newName);
            accountsToUpdate.add(acc);
        }
        update accountsToUpdate; // レコードを更新
    }
}

このメソッドにより、フローから指定された取引先レコードの名前を一括更新できます。


InvocableVariable アノテーションとは?

@InvocableVariableフローから値を受け渡すための変数 に付けるアノテーションです。
このアノテーションを使うことで、フローから変数の値を設定できるようになります。

特徴

  • インナークラス(クラス内クラス) の変数に使います。
  • パブリック変数 にのみ使用可能です。
  • フローから直接値を設定できます。

使用例

AccountUpdater クラスには、AccountUpdateRequest というインナークラスがあり、このインナークラスの変数に @InvocableVariable を付けています。

public class AccountUpdater {
    public class AccountUpdateRequest {
        @InvocableVariable(label='取引先ID') // フローで見えるラベル名
        public Id accountId;

        @InvocableVariable(label='新しい名前') // フローで見えるラベル名
        public String newName;
    }
}

InvocableMethod と InvocableVariable の違い

特徴 InvocableMethod InvocableVariable
対象 メソッド クラス内の変数
定義可能な数 1クラスに1つ 制限なし
主な用途 フローから呼び出せるメソッドの登録 フローで設定可能な変数の登録
使用場所 外部(フローやプロセスビルダー) インナークラス

注意点

  1. 引数はリストで指定

    • @InvocableMethod で定義するメソッドの引数は、必ずリスト型にする必要があります。
  2. アノテーションの組み合わせ

    • 通常、@InvocableMethod@InvocableVariable はセットで使用されます。インナークラスを使ってデータを定義し、メソッドに渡す構造が基本です。

まとめ

@InvocableMethod@InvocableVariable は、フローとApex を連携するアノテーションです。ぜひ、実際に試してみてください!

参考
InvocableMethod アノテーション
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_annotation_InvocableMethod.htm

InvocableVariable アノテーション
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_annotation_InvocableVariable.htm

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?