Salesforce admins can edit locked records. Depending on your approval process configuration settings, an assigned approver can also edit locked records. Locks and unlocks that are set programmatically use the same record editability settings as other approval-process locks and unlocks.
Record locks and unlocks are treated as DML. They’re blocked before a callout, they count toward your DML limits, and if a failure occurs, they’re rolled back along with the rest of your transaction. To change this rollback behavior, use an allOrNone parameter.
Approval is also used as a namespace for the ProcessRequest and ProcessResult classes.
The following are methods for Approval. All methods are static.
public static Approval.LockResult lock(Id recordId)
Type: Approval.LockResult
public static List<Approval.LockResult> lock(List<Id> ids)
Type: List<Approval.LockResult>
public static Approval.LockResult lock(SObject recordToLock)
Type: Approval.LockResult
public static List<Approval.LockResult> lock(List<SObject> recordsToLock)
Type: List<Approval.LockResult>
public static Approval.LockResult lock(Id recordId, Boolean allOrNothing)
Type: Approval.LockResult
public static List<Approval.LockResult> lock(List<Id> recordIds, Boolean allOrNothing)
Type: List<Approval.LockResult>
public static Approval.LockResult lock(SObject recordToLock, Boolean allOrNothing)
Type: Approval.LockResult
public static List<Approval.LockResult> lock(List<SObject> recordsToLock, Boolean allOrNothing)
Type: List<Approval.LockResult>
public static Approval.ProcessResult process(Approval.ProcessRequest approvalRequest)
Type: Approval.ProcessResult
// Insert an account Account a = new Account(Name='Test', annualRevenue=100.0); insert a; // Create an approval request for the account Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest(); req1.setObjectId(a.id); // Submit the approval request for the account Approval.ProcessResult result = Approval.process(req1);
public static Approval.ProcessResult process(Approval.ProcessRequest approvalRequests, Boolean allOrNone)
public static Approval.ProcessResult [] process(Approval.ProcessRequest[] approvalRequests)
public static Approval.ProcessResult [] process(Approval.ProcessRequest[] approvalRequests, Boolean allOrNone)
public static Approval.UnlockResult unlock(Id recordId)
Type: Approval.UnlockResult
public static List<Approval.UnlockResult> unlock(List<Id> recordIds)
Type: List<Approval.UnlockResult>
public static Approval.UnlockResult unlock(SObject recordToUnlock)
Type: Approval.UnlockResult
public static List<Approval.UnlockResult> unlock(List<SObject> recordsToUnlock)
Type: List<Approval.UnlockResult>
public static Approval.UnlockResult unlock(Id recordId, Boolean allOrNothing)
Type: Approval.UnlockResult
public static List<Approval.UnlockResult> unlock(List<Id> recordIds, Boolean allOrNothing)
Type: List<Approval.UnlockResult>
public static Approval.UnlockResult unlock(SObject recordToUnlock, Boolean allOrNothing)
Type: Approval.UnlockResult
public static List<Approval.UnlockResult> unlock(List<SObject> recordsToUnlock, Boolean allOrNothing)
Type: List<Approval.UnlockResult>