Du är här:
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).
-
Klicka på snabbåtkomstmenyn (
) och klicka sedan på Developer Console.
- Välj .
- Ange ett namn och klicka på OK.
- Klistra in exempelkoden i dialogrutan.
- Spara dina ändringar.
See Also
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:
|
| Karta < Sträng, Objekt > outMap |
|
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');
}
}
