2024年6月のSummer’24では「レコードのロック」がフローに新登場しました。
今までは承認プロセスでの承認後にしかロックは適用されませんでしたが、今後はフローを使って好きなタイミングでロックをかける/ロックを解除することが可能になります。
レコードトリガーフロー、画面フローの両方で使用可能です。
レコードロックとは
レコードがロックされると下記のように、レコード保存したタイミングでエラーとなり保存が完了しません。ロックされている状態でもレコードを編集モードには出来るので、入力規則と同じで保存ボタンを押したタイミングで保存できるかのチェックが走ります。
【今まで】
承認プロセス or Apex でのみロックが可能でした。
承認回付中に、承認者以外のユーザがレコードを編集してしまわないようにという用途が一般的でした。
ちなみに下記の権限があるユーザは、レコードロック状態でもレコード編集可能でした。
・システム管理者
・レコードロックしているオブジェクトに対して「すべて変更」システム権限がある
・「すべてのデータの編集」権限がある
【今後は下記も可能に】
フロー内のアクションを使い自由なタイミングでロック、ロック解除が可能になります。
また、レコードロック状態でもレコード編集可能なユーザもアクション内で指定できるようになります。
アクションの入力値
「レコードのロック」アクションではアクション、レコードID、許可されるID の3つが入力値になっています。
●アクション
Lock、Unlock のいずれかを直接入力します。ロック、ロック解除など日本語ではだめのようです。
●レコードID
ロック、ロック解除したいレコードを指定します。
●許可されるID(任意設定)
ロックされているレコードを誰が編集できるかを、ユーザー/グループ/キュー/ロールで指定できます。
下記のユーザは本設定に関わらずデフォルトで編集可能なので、他に編集OKとしたいユーザがいれば設定します。
・システム管理者
・レコードロックしているオブジェクトに対して「すべて変更」システム権限がある
・「すべてのデータの編集」権限がある
アクションの注意点
【前提】
・APIバージョン61以降のフローでのみ使用できます。
・ロックにするには、ユーザーにそのレコードの表示アクセス権が必要です。
【エラー】
・すでにロック済みのレコードに対して再度ロックしようとすると、UNABLE_TO_LOCK_RECORD エラーが発生します。
・一方、すでにロック解除されているレコードのロックを解除しようとしてもエラーにはなりません。
承認プロセスでのロックとの関係性
●フローの本アクションでロック済みのレコードに対して、承認プロセスで更にロックがかかると?
承認プロセスのロック機能で上書きされます。
つまり、ロック状態でもレコード編集可能なユーザは承認プロセス側のロックルールに沿うことになります。
=フローの本アクションで「許可されるID」で指定したユーザ達のレコード編集可能権は無くなります。
●承認プロセス機能でロックされていたレコードを、フローの本アクションでロック解除すると?
「承認プロセスが中断される可能性があります。」とのことです。
承認プロセスのロック、フローでのロックは混在しない方が良さそうなので、
・承認プロセスでロックした場合→承認プロセスでロック解除
・フローのアクションでロック→フローのアクションでロック解除
とした方が安全に管理できそうです。
フローを作ってみる
①レコードロックのフロー:「ロックを実行しますか?」メッセージの後にロック実行
【全体像】
【画面要素】
【レコードのロックアクション】
➁レコードロック解除のフロー:「ロック解除を実行しますか?」メッセージの後にロック解除実行
【全体像】
【画面要素】
【レコードのロックアクション】
③Lightningページにフローの配置
今回は下記のように配置してみました。
レコードロックしたタイミングでカスタム項目「ロック済み」カスタムチェックボックス項目をTrueに更新するなどすれば、現在はロック済み/ロック解除済みのどちらなのかをユーザに明示もできそうです。
まとめ
Classicでは1レコードずづであれば手動でロック解除が以前から可能でした。
今後はロック解除、ロック、の2つともを任意のタイミングで簡単に実行できるようになります。
ただし、文中で記載の通り承認プロセス機能の「ロック」と混在しないようにするのがスマートな使い方になりそうです。