Activity › Forums › Salesforce® Discussions › Approval process in Salesforce apex classes
-
Approval process in Salesforce apex classes
Posted by PRANAV on July 26, 2016 at 4:37 PMHi All,
How can i use approval process in Salesforce apex class?
Thanks.
Himanshu replied 9 years, 9 months ago 2 Members · 1 Reply -
1 Reply
-
Hi Pranav,
In this code we have used some approval methods that helps for execution the process by code.
public class TestApproval {
void submitAndProcessApprovalRequest() {
// Insert an account
Account a = new Account(Name=’Test’,annualRevenue=100.0);
insert a;User user1 = [SELECT Id FROM User WHERE Alias=’SomeStandardUser’];
// Create an approval request for the account
Approval.ProcessSubmitRequest req1 =
new Approval.ProcessSubmitRequest();
req1.setComments(‘Submitting request for approval.’);
req1.setObjectId(a.id);// Submit on behalf of a specific submitter
req1.setSubmitterId(user1.Id);// Submit the record to specific process and skip the criteria evaluation
req1.setProcessDefinitionNameOrId(‘PTO_Request_Process’);
req1.setSkipEntryCriteria(true);// Submit the approval request for the account
Approval.ProcessResult result = Approval.process(req1);// Verify the result
System.assert(result.isSuccess());System.assertEquals(
‘Pending’, result.getInstanceStatus(),
‘Instance Status’+result.getInstanceStatus());// Approve the submitted request
// First, get the ID of the newly created item
List<Id> newWorkItemIds = result.getNewWorkitemIds();// Instantiate the new ProcessWorkitemRequest object and populate it
Approval.ProcessWorkitemRequest req2 =
new Approval.ProcessWorkitemRequest();
req2.setComments(‘Approving request.’);
req2.setAction(‘Approve’);
req2.setNextApproverIds(new Id[] {UserInfo.getUserId()});// Use the ID from the newly created item to specify the item to be worked
req2.setWorkitemId(newWorkItemIds.get(0));// Submit the request for approval
Approval.ProcessResult result2 = Approval.process(req2);// Verify the results
System.assert(result2.isSuccess(), ‘Result Status:’+result2.isSuccess());System.assertEquals(
‘Approved’, result2.getInstanceStatus(),
‘Instance Status’+result2.getInstanceStatus());
}
}Hope this helps you.
Log In to reply.