Ti trovi qui:
Creazione di una classe Apex per la definizione azione stato oggetto
Creare una classe Apex invocabile nella Developer Console per ciascuna delle definizioni delle azioni stato oggetto (azioni personalizzate).
-
Fare clic sul menu di accesso rapido (
), quindi su Developer Console.
- Selezionare .
- Immettere un nome e fare clic su OK.
- Incollare il codice di esempio nella finestra di dialogo.
- Salva le modifiche.
See Also
Esempio di classe di invocazione Apex per la definizione azione stato oggetto
Di seguito sono riportati alcuni esempi di classi Apex per la creazione di definizioni di azioni stato oggetto. Modificare il codice di esempio in base alle proprie esigenze
Firma metodo include i seguenti parametri obbligatori:
| Parametro | Descrizione |
|---|---|
| Mappa < Stringa, Oggetto > inputMap | Contiene due chiavi:
|
| Mappa < Stringa, Oggetto > outMap |
|
Esempio di classe Apex RestartContract
Riavviare un contratto risolto utilizzando un'azione personalizzata.
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);
}
}
}
Classe Apex ApprovalAction di esempio
Implementare una logica aggiuntiva eseguita contemporaneamente al processo di approvazione standard di Salesforce.
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);
}
}
Classe Apex EndContract di esempio
Per un'azione chiamata, se sono possibili più transizioni di stato oggetto per uno stato Da perché sono disponibili più stati A, Apex non modificherà lo stato del contratto. Ad esempio, in un contratto attivato è presente un'azione personalizzata denominata Endcontract configurata per spostare il contratto in due stati: annullato e terminato. Perché la chiamata Apex abbia esito positivo è necessario il parametro 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');
}
}
