メモ。
レコードの ID を元に、そのレコードが現在承認プロセスの最中で、かつロックされているかどうか Apex で判定したい。
ここを参考にできた。
apex - Check if a record is in approval process - Salesforce Stack Exchange
Approval.isLocked(id)
を使う。
参考:Approval クラス | Apex 開発者ガイド | Salesforce Developers
isLocked
は id だけでなく id のリストだったり SObject またはそのリストも引数として受け取れるらしい。
1個だけ注意点として、このメソッドは
作成 > ワークフローと承認プロセス > プロセスの自動化設定
より、「Apex でのレコードのロックおよびロック解除を有効化」に✔を入れておかないといけない。
参考:SFDC:Apexトリガによる承認申請時のレコードロック解除について - tyoshikawa1106のブログ
設定しておかないと、以下のエラーが出る。
System.NoAccessException: Apex approval lock/unlock api preference not enabled.