Loading
Opret en Apex for objekttilstandshandlingsdefinition

Opret en Apex for objekttilstandshandlingsdefinition

Opret en Apex, der kan kaldes, på Developer Console for hver af objekttilstandshandlingsdefinitionerne (tilpassede handlinger).

  1. Klik på menuen til hurtig adgang (gearikonet for Opsætning), og klik derefter på Developer Console.
  2. Vælg Fil | Ny Apex-klasse .
  3. Indtast et navn, og klik på OK.
  4. Indsæt eksempelkoden i dialogboksen.
  5. Gem dine ændringer.

Eksempel på Apex for objekttilstandshandlingsdefinition

Her er nogle Apex-eksempelklasser til oprettelse af objekttilstandshandlingsdefinitioner. Rediger eksempelkoden, så den passer til dine krav

Metodesignatur inkluderer disse obligatoriske parametre:

Parameter Beskrivelse
Kort < Streng, Objekt > inputMap

Indeholder to nøgler:

  • contractId: SObjectId

  • objectStateActionDefinition: En registrering for den kaldte handling.

  • actionData: En handlingsspecifik data, der indeholder yderligere detaljer fra API eller standardhandlinger af typen Kort <Streng, Streng>.

Kort < Streng, objekt > outMap
  • outMap.put('isSuccess', true): Apex mislykkes, hvis isSuccess-parameteren ikke blev returneret, eller isSuccess-parameteren returneres som falsk.

  • outMap.put('finalStatusValue', '<abc>'): Hvis flere objekttilstandsovergange med den samme "Fra"-tilstand og en anden "Til"-tilstand er mulige for den kaldte handling, ændrer Apex ikke kontraktens "Til"-tilstand. Du skal definere finalStatusValue.

Eksempel på RestartContract Apex

Genstart en afsluttet kontrakt ved brug af en tilpasset handling.

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

Eksempel på Apex for ApprovalAction

Implementer yderligere logik, der kører samtidigt med Salesforce-standardgodkendelsesprocessen.

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

Eksempel på EndContract Apex

Hvis der for en kaldet handling er mulighed for flere objekttilstandsovergange for en Fra-tilstand, fordi der er flere Til-tilstande tilgængelige, ændrer Apex ikke kontraktens tilstand. På en aktiveret kontrakt er der f.eks. en tilpasset handling ved navn Slutkontrakt, der er konfigureret til at flytte kontrakten til to tilstande: annulleret og afsluttet. Hvis Apex skal lykkes, kræves der en finalStatusValue-parameter.

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');
    }
}
 
Indlæser
Salesforce Help | Article