Loading
Skapa en Apex klass för objektstatusåtgärdsdefinition

Skapa en Apex klass för objektstatusåtgärdsdefinition

Skapa en åberopbar Apex klass i Developer Console för var och en av objektstatusåtgärdsdefinitionerna (egna åtgärder).

  1. Klicka på snabbåtkomstmenyn (kugghjulsikonen Inställningar) och klicka sedan på Developer Console.
  2. Välj Fil | Nytt Apex-klass .
  3. Ange ett namn och klicka på OK.
  4. Klistra in exempelkoden i dialogrutan.
  5. Spara dina ändringar.

Exempel på Apex åberopningsklass för objektstatusåtgärdsdefinition

Här är några exempel på Apex klasser för att skapa definitioner av objektstatusåtgärder. Ändra exempelkoden så att den passar dina behov

Metodsignatur inkluderar dessa obligatoriska parametrar:

Parameter Beskrivning
Mappa < Sträng, Objekt > inputMap

Innehåller två nycklar:

  • contractId: SObjectId

  • objectStateActionDefinition: . En post för den anropade åtgärden.

  • actionData: En åtgärdsspecifik data som innehåller ytterligare detaljer från API eller standardåtgärder av typen Karta <Sträng, Sträng>.

Karta < Sträng, Objekt > outMap
  • outMap.put('isSuccess', true): . Apex misslyckas om parametern isSuccess inte returnerades eller om parametern isSuccess returneras som falsk.

  • outMap.put('finalStatusValue', '<abc>'): . Om flera objektstatusövergångar med samma “Från”-läge och olika “Till”-läge är möjliga för den anropade åtgärden kommer Apex klassen inte att ändra “Till”-läget för kontraktet. Du måste definiera finalStatusValue.

Exempel på Apex klass för RestartContract

Starta om ett avslutat kontrakt genom att använda en egen åtgärd.

global class RestartContract implements industries_clm.OpenInterface { 
    public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
        Boolean success = true;
        if (methodName == 'executeAction') {
            makeCallout(request, outMap);
        }
        return success;
    }
    public static void makeCallout(Map < String, Object > inputMap, Map < String, Object > outMap) {
        String ContractId = (String) inputMap.get('contractId');
        List<Contract> contract = [SELECT Id, Name, Status FROM Contract WHERE Id =:contractId];
        contract[0].Status = 'Draft';
        update(contract); 
            outMap.put('isSuccess', true);
        }
    }
}

Exempel på Apex klass ApprovalAction

Implementera ytterligare logik som körs samtidigt med Salesforces standardgodkännandeprocess.

global class ApprovalAction implements industries_clm.OpenInterface { 
    public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
        Boolean success = true;
        if (methodName == 'executeAction') {
            executeAction(request, outMap);
        }
        return success;
    }
    private void executeAction(Map < String, Object > inputMap, Map < String, Object > outMap) {
		Approval.ProcessSubmitRequest req1 = 
            new Approval.ProcessSubmitRequest();
        req1.setComments('Submitting request for approval.');
        String contractId = (String) inputMap.get('contractId');
        req1.setObjectId(contractId);
        
        // Submit the record to specific process and skip the criteria evaluation
        req1.setProcessDefinitionNameOrId('ContractApprovalProcessName');
        req1.setSkipEntryCriteria(true);
        
        // Submit the approval request for the account
        Approval.ProcessResult result = Approval.process(req1);
        
              outMap.put('isSuccess', true);
    }
}

Exempel på Apex klass för EndContract

För en anropad åtgärd, om flera objektstatusövergångar är möjliga för ett Från-läge eftersom flera Till-lägen är tillgängliga, kommer Apex inte att ändra kontraktets status. Till exempel finns det i ett aktiverat kontrakt en egen åtgärd som heter Endcontract som är konfigurerad att flytta kontraktet till två lägen: annullerad och avslutad. För att Apex ska lyckas krävs parametern finalStatusValue.

global class EndContract implements industries_clm.OpenInterface { 

    public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
        Boolean success = true;
        if (methodName == 'executeAction') {
            executeAction(request, outMap);
        }
        return success;
    }
    private void executeAction(Map < String, Object > inputMap, Map < String, Object > outMap) {   
		String contractId = (String) inputMap.get('contractId');
        
        outMap.put('isSuccess', true);
		outMap.put('finalStatusValue', 'Canceled');
    }
}
 
Laddar
Salesforce Help | Article