Usted está aquí:
Crear una clase Apex para la definición de acción de estado de objeto
Cree una clase Apex invocable en Developer Console para cada una de las definiciones de acción de estado de objeto (acciones personalizadas).
-
Haga clic en el menú de acceso rápido (
) y, a continuación, haga clic en Developer Console.
- Seleccione .
- Ingrese un nombre y haga clic en Aceptar.
-
Pegue el código de muestra en el cuadro de diálogo.
Consulte Clase de invocación Apex de ejemplo para Definición de acción de estado de objeto.
- Guarde sus cambios.
See Also
Clase de invocación Apex de muestra para definición de acción de estado de objeto
Estas son algunas clases Apex de ejemplo para la creación de definiciones de acciones de estado de objeto. Modifique el código de muestra para ajustarse a sus requisitos
Firma de método incluye estos parámetros obligatorios:
| Parámetro | Descripción |
|---|---|
| Mapa < Cadena, Objeto > inputMap | Contiene dos claves:
|
| Mapa < Cadena, Objeto > outMap |
|
Clase Apex RestartContract de muestra
Reinicie un contrato terminado utilizando una acción personalizada.
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);
}
}
}
Clase Apex ApprovalAction de muestra
Implemente lógica adicional que se ejecuta simultáneamente con el proceso de aprobación estándar de 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);
}
}
Clase de Apex EndContract de muestra
Para una acción llamada, si son posibles múltiples transiciones de estado de objeto para un estado De porque hay múltiples estados Para disponibles, Apex no cambiará el estado del contrato. Por ejemplo, en un contrato activado, existe una acción personalizada denominada Contrato final que está configurada para mover el contrato a dos estados: cancelado y terminado. Para que la llamada Apex tenga éxito, se requiere el parámetro 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');
}
}
