tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:System.ApprovalのisLockedを試してみました

Spring'16で追加されたSystem.ApprovalクラスのisLockedを試してみました。Apex内でレコードがロックされているか判定することができます。

f:id:tyoshikawa1106:20160225224009p:plain

public Boolean checkRecordLocked(Id recordId) {
    if (String.isNotEmpty(recordId)) {
        if (System.Approval.isLocked(recordId)) {
            return true;
        }
    }
    return false;
}


レコードのロックとは承認申請中のこの状態です。
f:id:tyoshikawa1106:20160225224254p:plain


isLocked判定を利用すれば登録処理前にロックされているか判定したりできます。
f:id:tyoshikawa1106:20160225224440p:plain

f:id:tyoshikawa1106:20160225224509p:plain


isLocked判定の注意点として、プロセスの自動化設定で「Apex でのレコードのロックおよびロック解除を有効化」にチェックをつけておく必要があります。
f:id:tyoshikawa1106:20160224003639p:plain


これがないとisLocked判定実行時に『Apex approval lock/unlock api preference not enabled.』エラーが発生してしまいます。
f:id:tyoshikawa1106:20160225224808p:plain


System.ApprovalのisLockedはこんな感じです。


ちなみにisLockedの引数がNULLの場合はExceptionエラーになりました。
f:id:tyoshikawa1106:20160225224959p:plain


事前にIDの存在判定を入れておいた方が良さそうでした。
f:id:tyoshikawa1106:20160225225020p:plain