The following example shows how to obtain and iterate through the returned Approval.UnlockResult objects. It locks some queried accounts using Approval.unlock with a false second parameter to allow partial processing of records on failure. Next, it iterates through the results to determine whether the operation was successful for each record. It writes the ID of every record that was processed successfully to the debug log, or writes error messages and failed fields of the failed records.
// Query the accounts to unlock Account[] accts = [SELECT Id from Account WHERE Name LIKE 'Acme%']; // Unlock the accounts Approval.UnlockResult[] urList = Approval.unlock(accts, false); // Iterate through each returned result for(Approval.UnlockResult ur : urList) { if (ur.isSuccess()) { // Operation was successful, so get the ID of the record that was processed System.debug('Successfully unlocked account with ID: ' + ur.getId()); } else { // Operation failed, so get all errors for(Database.Error err : ur.getErrors()) { System.debug('The following error has occurred.'); System.debug(err.getStatusCode() + ': ' + err.getMessage()); System.debug('Account fields that affected this error: ' + err.getFields()); } } }
The following are methods for UnlockResult.
public List<Database.Error> getErrors()
Type: List<Database.Error>
public Id getId()
Type: Id
If the field contains a value, the object was unlocked. If the field is empty, the operation was not successfult.
public Boolean isSuccess()
Type: Boolean