{{i18n("button.posting")}}
カスタムエラーで主従関係の子レコードがあるときは親レコードを削除させない
削除という操作で入力規則的なことができるってすばらしい。
Admin
{{getTime(record.UpdatedTime)}}
先週公開しました「
Winter'24 フローのカスタムエラーでは、複雑な入力規則や重複管理のようなことができるよ!
」で、時間があったら先週のうちに記事を書くと言っていた件です。約束を破ってすみませんでした。
Winter’24でリリースされるカスタムエラー、入力規則や重複管理のような、条件に応じてレコード作成/更新を許可するような設定ができるということがわかりました。ですが、なかなか素敵な例が思う浮かばず、いたずらにカスタムエラーを作っていたのですが、こちらのサイトさんでユースケースとして紹介されているのを拝見しまして、「そうか!そういうのをカバーできるんだ!」と気づかせていただき、プレリリース組織で試してみました。
asagarwal.com >Step by Step Guide to “Custom Error” in Record-Triggered Flow
やりたいこと
主従関係において、親(主)レコードを削除すると子レコードも一緒に削除されるが、子レコードが作成されているときは親レコードが削除されないようにしたい。
対処法
カスタムエラーを作成し、子レコードが存在する親レコードを削除しようとしたとき、エラーとなって削除の操作が完了しないようにする。
設定例
次のようなリレーションを設定。
※すべてカスタムオブジェクト。
生徒(主・親)ー 受講記録 (従・子)
紐づく受講記録のレコードが作成されている場合、生徒のレコードを削除しようとすると、エラーになるようにする。
プレリリース組織で実践!
それでは、フローを作成します。
設定内容は要件に応じて変わってきますが、今回はもっともシンプルな方法で設定します。
Let’s try✊
※説明欄の入力には触れていませんが、設定の意図などを書いておくと後からみても理解しやすいので、入力されることをおすすめします。
先に、今回のフローの完成図です。
1.[設定>プロセスの自動化>フロー]の画面で、①【新規フロー】をクリックし、②「レコードトリガーフロー」を選択して③【作成】をクリックします。
※カスタムエラーは現在のところレコードトリガーフローでしか使用できません。
2.開始の設定をおこないます。
④「オブジェクト」では親(主)オブジェクトを選択します。
⑤「トリガーを設定」ではフローをトリガーする条件に「レコードが削除された」を選択します。
⑥「エントリ条件を設定」では、今回は「なし」を選択します。
3.「レコードを取得」要素を追加します。
⑦開始の下の〇をクリックして、「レコードを取得」要素を選択します。
4.レコードを取得要素の内容を設定します。
ここでは、削除しようとしている生徒のレコード(親レコード)に紐づく子レコードを取得します。
⑨「表示ラベル」と「API参照名」は、組織の命名ルールに則って入力してください。
⑩「このオブジェクトのレコードを取得」では従オブジェクト「受講記録」を選択します。
⑪「(受講記録)レコードを絞り込み」では、次のよう設定します。
条件の要件|すべての条件に一致(AND)
項目:生徒のID|演算子:次の文字列と一致する|値:$Record>カスタムオブジェクトID
ここで、削除しようとしている親レコードのIDを参照項目に持っている=親レコードに紐づく子レコード、という条件を設定します。
⑫「受講記録レコードを並び替え」
「並び替え順」は今回影響しないため、「並び替えなし」を選択します。
「保存するレコード数」は「すべてのレコード」、
「レコードデータの保存方法」は、「すべての項目を自動的に保存」を選択します。
5.3のときと同じように、今度は
⑬「レコードを取得」要素の下の〇をクリックして、
⑭「決定」要素を追加します。
6.「決定」要素の内容を設定します。
⑮「表示ラベル」と「API参照名」は、組織の命名ルールに従って入力してください。
⑯結果の1つ目の「表示ラベル」と「API参照名」も、組織の命名ルールに従って入力してください。
⑰「結果を実行する条件の要件」は「すべての条件に一致(AND)」を選択し、
次のように設定します。
リソース
:4で取得したレコードコレクション変数|
演算子
:null|
値
:False
ここで、条件にあう子レコードが存在していたときという条件を設定しています。
7.⑱デフォルトの結果の表示ラベルをわかりやすいものに変更し、
⑲【完了】をクリックします。
8.5と同じように、
⑳決定要素の「ある」(子レコードが存在すると定義)の結果の下の〇をクリックして、
㉑「カスタムエラー」要素を追加します。
9.「カスタムエラー」要素の内容を設定します。
㉒「表示ラベル」と「API参照名」は、組織の命名ルールに従って入力してください。
㉓「エラーメッセージを表示する場所」は「レコードページのウィンドウで」を選択します。
㉔「エラーメッセージ」には表示したいエラーメッセージを入力します。
今回は「関連する受講記録のレコードが存在しているため、削除できません。」と入力しています。
10.フローを保存します。
㉕画面右上の【保存】をクリックして、
㉖「フローの表示ラベル」と「フローのAPI参照名」を入力して、
㉗【保存】をクリックします。
テストします
関連する受講記録レコード(子レコード)がある生徒レコード(親レコード)を削除しようとすると、エラーメッセージが表示され、削除できませんでした。成功です!
ちなみに、エラーメッセージの表示場所を項目にすると、指定した項目名がエラーメッセージの頭に表示されます。
良い子の皆さんはおわかりだと思いますが、実際はデバッグなどでテストをちゃんとしてくださいね!
ひとこと
前回の記事の公開時、Xでも感想をいただいていましたが、この勢いだとカスタムの入力規則や重複管理もいずれフローに吸収されてしまうのでしょうか。確かに便利ですが、なんでもかんでもフローというのは、ノーコード・ローコードの世界で生きてきた人間だと管理が大変そうな気がします。
個人的にカスタムフローの設定はとても楽しいので、乱用しないように気をつけながら活用したいと思います。
Winter'24
関連の記事
Winter'24のスケジュールが出ましたね
Winter'24 リリースノート(英語版)が公開されました!
Winter'24のプレリリース組織が取得できますよ!
Winter'24 日本語(カタカナ)の表示ラベル変更について
Winter'24 またまたUIのお色味が変わるようです。
Winter'24 ファイルの公開リンク 有効期限のデフォルト値が90日から30日に変更
Winter'24 画面フローでの値保持が強化されます
Winter'24 ダッシュボードの所有者を変更できるかも(未確認です)
Winter'24 メールログのリクエスト設定にオプションが増えます
Winter'24 権限セットと権限セットグループの内容を一目で把握する【概要を表示】
Winter'24 リリースノートの日本語版が公開されました!
Winter'24 取引先責任者のホーム画面が……青に変わるッ!
Winter'24 フローで要素の作成途中なのに保存できるようになるよ!
Winter'24 Chatter メールの差出人名とメールアドレスの設定必須化
拡張ドメイン強制適用のロードマップ&設定方法まとめ
Winter'24 フローのカスタムエラーでは、複雑な入力規則や重複管理のようなことができるよ!
公開:2023年10月3日
更新①:2024年9月3日
{{i18n("articles.view.premium")}}
{{cta.Content}}
{{cta.ButtonName}}
{{tag}}