Sie befinden sich hier:
Erstellen einer Apex-Klasse für die Objektstatusaktionsdefinition
Erstellen Sie in der Developer Console für jede Objektstatusaktionsdefinition (benutzerdefinierte Aktionen) eine aufrufbare Apex-Klasse.
-
Klicken Sie auf das Schnellzugriffsmenü (
) und dann auf Entwicklerkonsole.
- Wählen Sie aus.
- Geben Sie einen Namen ein und klicken Sie auf OK.
-
Fügen Sie den Beispielcode in das Dialogfeld ein.
Entsprechende Informationen finden Sie unter Beispiel einer Apex-Aufrufklasse für die Objektstatusaktionsdefinition.
- Speichern Sie Ihre Änderungen.
See Also
Beispiel-Apex-Aufrufklasse für Objektstatusaktionsdefinition
Im Folgenden finden Sie einige Apex-Beispielklassen zum Erstellen von Objektstatusaktionsdefinitionen. Anpassen des Beispielcodes an Ihre Anforderungen
Die Methodensignatur enthält die folgenden obligatorischen Parameter:
| Parameter | Beschreibung |
|---|---|
| Karte < Zeichenfolge, Objekt > inputMap | Enthält zwei Schlüssel:
|
| Karte < Zeichenfolge, Objekt > outMap |
|
Beispiel einer Apex-Klasse für RestartContract
Starten Sie einen gekündigten Vertrag mithilfe einer benutzerdefinierten Aktion neu.
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);
}
}
}
Beispiel-Apex-Klasse ApprovalAction
Implementieren Sie eine zusätzliche Logik, die gleichzeitig mit dem Salesforce-Standardgenehmigungsprozess ausgeführt wird.
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);
}
}
Beispiel-Apex-Klasse "EndContract"
Wenn für eine aufgerufene Aktion mehrere Objektstatusumstellungen für einen Von-Status möglich sind, da mehrere An-Status verfügbar sind, ändert Apex den Vertragsstatus nicht. Bei einem aktivierten Vertrag gibt es beispielsweise die benutzerdefinierte Aktion "Vertrag beenden", die konfiguriert ist, um den Vertrag in zwei Status zu versetzen: abgebrochen und beendet. Damit der Apex Aufruf erfolgreich ist, ist der Parameter finalStatusValue erforderlich.
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');
}
}
