Loading
Apex luominen objektin tilan toiminnon määritelmälle

Apex luominen objektin tilan toiminnon määritelmälle

Luo Developer Consolessa kutsuttava Apex jokaiselle objektin tilojen toiminnon määritelmälle (mukautetulle toiminnolle).

  1. Napsauta pikavalikkoa (Määritysten hammasrataskuvake) ja napsauta sitten Developer Console.
  2. Valitse Tiedosto | Uusi Apex-luokka .
  3. Syötä nimi ja napsauta OK.
  4. Liitä esimerkkikoodi valintaikkunaan.
  5. Tallenna muutokset.

Esimerkki Apex luokasta objektin tilan toiminnon määritelmälle

Alla on joitakin Apex, joilla voit luoda objektien tilojen toimintojen määritelmiä. Muokkaa esimerkkikoodia tarpeidesi mukaisesti

Metodin allekirjoitus sisältää nämä pakolliset parametrit:

Parametri Kuvaus
Kartoitus < Merkkijono, objekti > inputMap

Sisältää kaksi avainta:

  • contractId: SObjectId

  • objektinStateActionDefinition: Kutsutetun toiminnon tietue.

  • actionData: Toimintokohtainen data, joka sisältää lisätietoja API:sta tai oletusarvoisista toiminnoista, joiden tyyppi on Map <String, String>.

Kartoitus < Merkkijono, objekti > outMap
  • outMap.put('isSuccess', true): Apex epäonnistuvat, jos isSuccess-parametriä ei palautettu tai isSuccess-parametri palautetaan arvona false.

  • outMap.put('finalStatusValue', '<abc>'): Jos kutsutulle toiminnolle on mahdollista siirtyä useisiin objektien tilan muutoksiin, joilla on sama ”Vastaanottaja”-tila ja eri ”Vastaanottaja”-tila, Apex ei muuta sopimuksen ”Vastaanottaja”-tilaa. Sinun täytyy määrittää finalStatusValue.

Esimerkki RestartContract Apex

Käynnistä lopetettu sopimus uudelleen käyttämällä mukautettua toimintoa.

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

Esimerkki Apex

Toteuta lisälogiikkaa, joka suoritetaan samanaikaisesti Salesforcen tavallisen hyväksymisprosessin kanssa.

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

Esimerkki Apex EndContract

Jos kutsutun toiminnon Lähettäjä-tilassa on mahdollista siirtyä useisiin objektien tilan muutoksiin, koska useat Vastaanottaja-tilat ovat käytettävissä, Apex ei muuta sopimuksen tilaa. Esimerkiksi aktivoidussa sopimuksessa on mukautettu Endcontract-toiminto, joka on määritetty siirtämään sopimus kahteen tilaan: peruutettu ja lopetettu. Apex onnistuminen vaatii finalStatusValue-parametrin.

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