5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

フローでApexアクションからコレクション変数を受け取る

Posted at

前置き

Spring'22もフローが大きく強化され、ますます使い勝手があがってきました。
またこれまで自動化ツールとしてよく使われていたワークフロールールやプロセスビルダーも将来的に使えなくなるとのことからフローの注目度も高まってきているように思います。

今回はApexアクションとフローを組み合わせたレコードに添付されたファイルを削除する画面フローをご紹介していきます。

特にコレクション変数をどうやってフロー側に渡すかご紹介していきます。

大まかなファイル削除フローの説明

フロー1.PNG

1.添付ファイルを取得するApexアクションを実行
2.決定要素で1に添付ファイルがある場合は「ある」へ進み、削除したいファイルを選択する
 「ない」の場合は「添付ファイルがありません」と表示して終了
3.2で選択された添付ファイルを削除して、アクションを実行して成功トーストを表示する

Apexアクション「添付ファイル取得」

まずはサンプル的に書いたコードは以下の通りです。

FileDelete.cls
global class FileDelete{
    @InvocableVariable(required=true label='recordId')
    public Id recId;

    @InvocableMethod(label='添付ファイル取得' description='添付ファイル削除')	
    public static List<List<ContentDocument>> getContent(List<Id> recId){
        List<List<ContentDocument>> cdList2= new List<List<ContentDocument>>();
        List<ContentDocument> cdList = new List<ContentDocument>();
        List<Id> cdIdList = new List<Id>();
        
        List<ContentDocumentLink> cdlList = 
            [
                SELECT ContentDocumentId, LinkedEntityId
             	FROM ContentDocumentLink
             	WHERE LinkedEntityId =:recId
            ];
        
        if(cdlList.size() > 0){

            for(ContentDocumentLink cdl : cdlList){
                cdIdList.add(cdl.ContentDocumentId);
            }
            
            cdList = [SELECT Id,title FROM ContentDocument WHERE ID IN :cdIdList];           
            cdList2.add(cdList); 
        }
        
        return cdList2;
        
    }
}

ポイントはフローへコレクション変数を渡したい場合はメソッドの戻り値を 「List<List<>>」 とすることです。直観的には「List<>」ではないかと考えがちですが、「List<>」とするとフローには戻り値として単一の変数が戻ってきます。

画面「添付ファイル削除選択画面」

フロー2.PNG

「添付ファイル取得」でApexからコレクション変数を受け取ったところでこれを選択リストに設定します。Spring'22からこのようにコレクション変数を選択肢として使用できるようになったので表現の幅が広がったと思います。
フロー3.PNG

あとは選択したファイルを削除するようにし、アクションとして成功トーストを表示させれば完了です。

成功トーストの参考は以下となります。
フローでレコードをリダイレクトしてメッセージ表示をさせてみた

補足
ファイルの削除はシステム管理者かそのファイルの所有者しかできないので注意が必要です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?