Loading
Een Apex klasse maken voor Definitie van objectstatusactie

Een Apex klasse maken voor Definitie van objectstatusactie

Maak een aanroepbare Apex klasse in de Developer Console voor elk van de objectstatus actiedefinities (aangepaste acties).

  1. Klik op het menu Snelle toegang (pictogram Tandwielen voor Set-up) en vervolgens op Ontwikkelaarsconsole.
  2. Selecteer Bestand | Nieuw Apex-klasse .
  3. Geef een naam op en klik op OK.
  4. Plak de voorbeeldcode in het dialoogvenster.
  5. Sla uw wijzigingen op.

Voorbeeld van Apex aanroepklasse voor Definitie van objectstatusactie

Hier zijn enkele voorbeelden van Apex klassen voor het maken van objectstatus actiedefinities. De voorbeeldcode aanpassen aan uw vereisten

Methodehandtekening omvat deze verplichte parameters:

Parameter Beschrijving
Kaart < Tekenreeks, Object > inputMap

Bevat twee sleutels:

  • contractID: De SObjectId

  • objectStateActionDefinition: Een record voor de aangeroepen actie.

  • actionData: Een actiespecifieke gegevens die aanvullende details van de API of standaardacties van het type Kaart <Tekenreeks, Tekenreeks> bevat.

Kaart < Tekenreeks, Object > outMap
  • outMap.put('isSuccess', true): De Apex acties mislukken als de parameter isSuccess niet is geretourneerd of als de parameter isSuccess als false (onwaar) is geretourneerd.

  • outMap.put('finalStatusValue', '<abc>'): Als er meerdere objectstatusovergangen met dezelfde status "Van" en een andere status "Aan" mogelijk zijn voor de aangeroepen actie, wijzigt de Apex klasse de status "Aan" van het contract niet. U moet finalStatusValue definiëren.

Voorbeeld van Apex klasse RestartContract

Start een beëindigd contract opnieuw met behulp van een aangepaste actie.

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);
        }
    }
}

Voorbeeld van Apex klasse ApprovalAction

Implementeer extra logica die gelijktijdig wordt uitgevoerd met het standaard Salesforce-goedkeuringsproces.

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);
    }
}

Voorbeeld van EndContract Apex klasse

Als voor een aangeroepen actie meerdere objectstatusovergangen mogelijk zijn voor een Van-status omdat er meerdere Aan-statussen beschikbaar zijn, wijzigt Apex de status van het contract niet. Zo is er voor een geactiveerd contract een aangepaste actie met de naam Eindcontract die is geconfigureerd om het contract naar twee statussen te verplaatsen: geannuleerd en beëindigd. Voor het slagen van de Apex aanroep is de parameter finalStatusValue vereist.

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');
    }
}
 
Wordt geladen
Salesforce Help | Article