前置き
今回は以前作成した「ファイル削除フロー」を拡張して複数の添付ファイルを同時に削除できるようにしました。
データテーブルが加わったことで複数のレコードや情報を簡単に表現・活用ができるようになり
このためにVisualforce やLightningコンポーネントを無理に使わなくともよいケースが増えたように思います。
添付ファイル削除画面フロー(テーブル)全体像
1.コンテンツドキュメントリンク取得
以前はApexで処理していた部分ですが今回はフローでコンテンツドキュメントリンクを取得していきます。
このあとコンテンツドキュメントリンクの項目にあるコンテンツドキュメントを使用して添付ファイルを取得します。
コンテンツドキュメントとコンテンツドキュメントリンクの意味合いは私のざっくりした理解で申し上げると以下のとおりかと思います。
ContentDocument:添付ファイルそのもの
ContentDocumentLink:添付ファイルに紐づいているレコードの場所
正式な説明はこちらからどうぞ
ContentDocument
https://developer.salesforce.com/docs/atlas.ja-jp.object_reference.meta/object_reference/sforce_api_objects_contentdocument.htm
ContentDocumentLink
https://developer.salesforce.com/docs/atlas.ja-jp.object_reference.meta/object_reference/sforce_api_objects_contentdocumentlink.htm
2.コンテンツドキュメントリンクがあるか
「コンテンツドキュメントリンク取得」でレコードがある場合は後続の処理を続けて、ない場合はエラー画面を出すようにします。
3.ファイルId取得処理、ファイルId割当
「コンテンツドキュメントリンク取得」で取得できたレコードから各レコードのコンテンツドキュメントIdを変数に割り当てていきます。変数はテキスト型のコレクション変数とします。
4.添付ファイルの取得
レコードを取得要素で次のように指定することで、複数該当するコンテンツドキュメントを取得することができます。
こちらで取得したコンテンツドキュメントをデータテーブルに指定します。
項目:Id
演算子:次に含まれる
値:colFileId(テキスト型のコレクション変数)
5.添付ファイル削除画面選択
ソースコレクションには「添付ファイルの取得」を選択してテーブルに添付ファイルの一覧を表示していきます。
行選択モードでは「複数」を選択していきます。今回は複数のデータ削除を行うためにこうしています。
最小選択とは指定数以上でないと「次へ」ボタンを押したときにエラーが出る仕組みです。
今回は少なくとも1以上は選択する必要があることから1としています。
同様に最大選択は指定数より大きな数字は選択できない仕組みです
今回は設定していませんが、必要に応じて使える機能だと思います。
列の設定で任意の項目を選択していきます。
項目名以外にもカスタムでテーブル独自の名前を設定できる機能やテキストを折り返すか、切り詰めるかも選択可能です。
6.添付ファイルの削除
上記で選択されたものを指定し削除します。
7.その他
削除後はトーストを表示することでユーザにとってわかりやすくなると思います。
またファイル削除は通常、所有者かシステム管理者以外は削除できないですが
フローの実行方法を「システムコンテキスト共有なしーすべてのデータにアクセス」を選択するとシステムモードで実行することになり所有者以外も添付ファイルを削除することができるようになります。