Loading
Opprette en Apex for definisjon av objekttilstandshandling

Opprette en Apex for definisjon av objekttilstandshandling

Opprett en kallbar Apex i Developer Console for hver av definisjonene for objektstatushandlinger (tilpassede handlinger).

  1. Klikk på hurtigtilgangsmenyen (Tannhjulikon for oppsett), og klikk deretter på Utviklerkonsoll.
  2. Velg Fil | Nytt Apex-klasse .
  3. Skriv inn et navn og klikk på OK.
  4. Lim inn eksempelkoden i dialogboksen.
  5. Lagre endringene.

Eksempel på Apex for definisjon av objekttilstandshandling

Her er noen eksempler på Apex for å opprette definisjoner av objekttilstandshandlinger. Endre eksempelkoden slik at den passer dine behov

Metodesignatur inkluderer disse obligatoriske parameterne:

Parameter Beskrivelse
Kart < Streng, Objekt > inputMap

Inneholder to nøkler:

  • contractId: SObjectId

  • objectStateActionDefinition: En post for den kallede handlingen.

  • actionData: En handlingsspesifikk data som inneholder flere detaljer fra API eller standardhandlinger av typen Map <String, String>.

Kart < Streng, Objekt > utkart
  • outMap.put('isSuccess', true): Apex mislykkes hvis isSuccess-parameteren ikke ble returnert, eller isSuccess-parameteren returneres som false.

  • outMap.put('finalStatusValue', '<abc>'): Hvis flere objektstatusoverganger med samme Fra-status og forskjellige Til-statuser er mulige for den kallede handlingen, vil ikke Apex endre Til-statusen til kontrakten. Du må definere finalStatusValue.

Eksempel på Apex for RestartContract

Start en avsluttet kontrakt på nytt ved å bruke 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 tilleggslogikk som kjører samtidig med standard Salesforce-godkjenningsprosess.

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å Apex for sluttkontrakt

Hvis det for en kallet handling er mulig med flere objektstatusoverganger for en Fra-status fordi flere Til-statuser er tilgjengelig, endrer ikke Apex statusen til kontrakten. I en aktivert kontrakt er det for eksempel en tilpasset handling kalt Sluttkontrakt som er konfigurert for å flytte kontrakten til to statuser: kansellert og avsluttet. For at Apex skal lykkes, kreves parameteren 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');
    }
}
 
Laster
Salesforce Help | Article