フローを使用したレコードロック制御(Summer'24新機能)

Summer'24新機能で追加された、フローでの「レコードのロック」アクションを使用してみました。

はじめに

こんにちは!
今回は、Summer '24にて追加された機能のうちの一つである、フローにおける「レコードのロック」アクションについて、実際に使用しながらご紹介させていただきます。

これまでもレコードロックを行う機能自体はSalesforceにありましたが、承認プロセスなど、かなり限られた状況でしか使用することができませんでした。そのため、レコードロックの要件を個別開発せずに実現する場合には、
・逐一入力規則を設定する
・全項目を「参照のみ」に設定したページレイアウトを用意し、レコードタイプをフロー等で切り替える
というような形をとっていたかと思います。

しかし、それでは項目の改廃などに伴うメンテナンスが煩雑になるなどのデメリットがありました。今回のレコードロックアクションの機能追加によって、煩雑な機能実装をすることなく、レコードロック制御が簡単に行えるようになりました。

それでは早速、この機能を使ってみましょう。

要件

本記事で実装する要件は以下になります。

① 商談がクローズした場合にレコードをロックして、編集できないようにする
② 「営業管理者」と「システム管理者」のみが使用できる「ロック解除」「再ロック」ボタンを配置する

フローの実装

概要

事前準備としてロック状況を管理するカスタム項目を作成したのち、①の要件をレコードトリガーフロー、②を画面フローでそれぞれ実装します。

事前準備

フローの実装を行う前に、商談オブジェクトにレコードのロック状況を管理するカスタム項目を作成しておきます。これは、②の要件で現在のロック状況を確認する必要がありますが、そのロック状況の取得がフロー単独ではできないことが理由です。

①レコードトリガーフローの作成

次に、①のレコードトリガーフローを作成します。
今回の実装では、エントリ条件を設定し完了フラグ(IsClosed)がTrueに更新された商談レコードのみを対象としました。

アクションを実行する前に、事前準備で作成した「レコードロック」項目を『True』に更新します。

続いて、「レコードのロック」アクションを配置します。以下のように値を設定します。
引数 補足
アクション Lock ”Lock”か”Unlock”をテキストで入力して、実行するアクションを指定します。
レコードID $Record.Id トリガーレコードのID
許可されるID 含まない ロック済みでも編集可能なユーザーを指定できますが、今回は使用しません。

これで①の要件に沿ったレコードトリガーフローができました!
それでは実際に動かしてみます。商談のフェーズを「Closed Won」に変更して、クローズします。

実行ユーザー:営業

クローズした状態で、レコードを編集して保存しようとすると、エラーが出ました。これで、レコードがロックされたことが確認できました。

※システム管理者の場合、ロックしたレコードでも編集できます。

実行ユーザー:営業

②画面フローの作成

続いて、②の要件の画面フローを作成していきます。

まずは、商談レコードの取得、そして確認画面を配置していきます。

次に、事前準備で作成した「レコードロック」項目の値によって”Lock”もしくは”Unlock”を返す数式(Action)を作成して、「レコードのロック」アクションで実行する処理を決定します。

アクションが配置できたら、続いて「レコードロック」項目にロック状況の割り当てと更新、そして完了画面を配置します。これで、②の画面フローも完成です!

画面フローを呼び出すボタンを作成し、商談Lightningページに配置します。
今回の実装では、以下の通りに設定してみました。

ボタンの配置まで完了したので、動きを確認していきます。
「営業管理者」のユーザーとして、先ほどロックされた商談をロック解除します。

実行ユーザー:営業管理者

実行ユーザー:営業管理者

そして、「営業」ユーザーで商談を編集して保存ボタンを押すと、エラーが出ることなく正常に保存することができました。

実行ユーザー:営業

また、再ロックについても問題なくできました。

実行ユーザー:営業管理者

実行ユーザー:営業管理者

実行ユーザー:営業

まとめ

以上、「レコードのロック」アクションを使用したフロー実装でした!

使用する際には、
・”Lock”か”Unlock”をテキストで入力して実行する処理を決定する
・ロック状況の取得は現時点でフローだけでは実現できない
・システム管理者はレコードロックしていても編集できる
・ロック済のレコードに対してロックを行うとエラーになるが、ロックしていないレコードに対してロック解除を行った場合は特にエラーにならない
という点に注意しましょう!

最後までご覧いただきありがとうございました。