LoginSignup
4
2

More than 1 year has passed since last update.

【Salesforce】フローでSet型変数を利用する方法

Last updated at Posted at 2023-02-18

はじめに

Set型変数は重複を排除できる配列の変数型です。
フローでは通常のList型の変数は標準で使用することができますが、Set型変数は標準では定義されていません。
ここではフローでSet型の変数を使用する方法を紹介します。

実現方法

標準では存在しないデータ型を利用するためにカスタムでデータ型を定義します。
フローの変数定義ではApex型という選択肢があり、Apexで定義したカスタムのデータ型を利用することができます。
Set型を利用するために、Apexでカスタムのデータ型を作ります。

実装例

以下のようなApexクラスを定義します。
フローとのインターフェース用にcollectionという変数を定義し、get・setプロパティで値の受け渡しをします。フローからこのApexを参照するために@AuraEnabledアノテーションを付与します。
setプロパティからcollection変数に値がセットされる時に、内部的にSet型の変数に変換します。
getプロパティでは内部的に保持しているSet型の変数をList型の変数に変換して値を返します。

SetForFlow.apxc
public class SetForFlow {
	
    // 内部保持用のSet型変数
    private Set<String> innerSet;
    
    @AuraEnabled
    public List<String> collection {
        						       get {
                                           return new List<String>(this.innerSet);
                                       } 
        							   set {
                                           this.innerSet = new Set<String>(value);
                                       }
    								}
    
}

動作検証

画面フローを使って検証をします。
新規リソースから以下のように変数を作成します。
データ型はApex型、Apexクラスは先程作成したSetForFlowを指定します。
SetForFlow型自体が配列をもつデータ型なので、「複数の値を許可」をオンにする必要はありません。
image.png

割り当ての要素を追加し以下のように設定します。
新規リソースで定義したFlowValues変数に値をセットします。
値の受け渡しはFlowValuesで定義されたcollection変数を介して行います。
値「B」と値「C」はそれぞれ2回セットされており、リスト内で重複する値となっています。
image.png

値の確認用に画面要素を配置し、表示テキストコンポーネントでFlowValues変数の値を表示します。
image.png

フロ-全体では以下のようになります。
image.png

動作結果

フローを実行すると以下のような結果となります。
複数回セットされた値「B」、値「C」とも重複排除されて配列に格納されています。
image.png

まとめ

今回はフロー標準では存在しないデータ型を使用する方法としてApex型の変数を紹介しました。
複雑な階層構造をもつデータや、フローでは実現が大変な処理を内部的に保持するデータ型を使いたい場合はApex型変数が有効な実現の選択肢となります。フロー自体が複雑になる場合は、複雑な部分をApexに切り出すことでフロー単体での可読性や保守性が向上するメリットもあるので活用してみてください。

4
2
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
4
2