Posts

Showing posts from November, 2019

Salesforce: Dynamically Submit the record for Approval process

Approval.ProcessSubmitRequest processSubmitRequest = new Approval.ProcessSubmitRequest(); processSubmitRequest.setComments('Submitting request for approval.'); processSubmitRequest.setObjectId(*******PASS RECORD ID*********); processSubmitRequest.setSubmitterId(userInfo.getUserId()); // Submit the record to specific process and skip the criteria evaluation processSubmitRequest.setProcessDefinitionNameOrId(*********MENTION THE APPROVAL PROCESS NAME************); processSubmitRequest.setSkipEntryCriteria(true); // Submit the approval request for the account Approval.ProcessResult result = Approval.process(processSubmitRequest);

Salesforce: Reassigning Pending Approval Request using Apex Class

String selectedRecordId = ******PASS THE TARGET OBJECT RECORD ID*******; //If there are multiple approvers then it return multiple records List<ProcessInstanceWorkitem> ProcessInstanceWorkitemRecordList = new List<ProcessInstanceWorkitem>(); for(ProcessInstanceWorkitem ProcessInstanceWorkitemRecord :[SELECT ProcessInstanceId,actorId FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId=:selectedRecordId]) { if(!String.valueOf(ProcessInstanceWorkitemRecord.actorId).startsWith('005') && ProcessInstanceWorkitemRecordList.size()==0){ ProcessInstanceWorkitemRecord.actorId = UserInfo.getUserId(); ProcessInstanceWorkitemRecordList.add(ProcessInstanceWorkitemRecord); } else if(ProcessInstanceWorkitemRecord.actorId == UserInfo.getUserId()){ ProcessInstanceWorkitemRecordList = new List<ProcessInstanceWorkitem>(); break; } } if(ProcessInstanceWorkitemRecordList.size()>0) UPDATE ProcessInstanceWorkitemRecordList;

Salesforce: Dynamically approve the approval process record using Apex Class

public void approveRecord(Id objectRecordId) { Id processInstanceWorkitemInstance = [SELECT Id FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :objectRecordId].id; Approval.ProcessWorkitemRequest processWorkitemRequestInstance = new Approval.ProcessWorkitemRequest(); processWorkitemRequestInstance.setComments('record approved'); processWorkitemRequestInstance.setAction('Approve'); processWorkitemRequestInstance.setWorkitemId(processInstanceWorkitemInstance); Approval.ProcessResult result = Approval.process(processWorkitemRequestInstance); }

Salesforce: Dynamically Create Apex Class and Apex Test Class using Tooling API

//Creating the Apex Class JSON Body String classMethod = 'public String DynamicClassMethod (string methodName) { return methodName; }'; String classBody = 'Public Class DynamicClass { '; classBody += classMethod + '}'; //Creating the Apex Test Class JSON Body String testClassBody = '@isTest private Class DynamicClassTest { '; String methodParameter = 'testName'; String testClassMethodInstance = ' DynamicClass DynamicClassInstance = new DynamicClass(); '; testClassMethodInstance += ' DynamicClass.DynamicClassMethod( \''+methodParameter+'\');'; testClassBody += testClassMethodInstance + '}'; String sessionId = UserInfo.getSessionID(); String endpointURL = URL.getSalesforceBaseUrl().toExternalForm(); HttpResponse httpResponseBody; String jsonBody; //Check whether class already created or not? List<ApexClass> apexClasssList = [SELECT id FROM ApexClass WHERE Name = 'DynamicClass']; //If Class...