Usted está aquí:
Ejemplo de Apex asíncrono
Cuando ejecute una política de seguridad de transacciones, utilice un proceso asíncrono de Apex para retirar operaciones que requieren tiempo, como el envío de un email de notificación a un destinatario externo.
Ediciones necesarias
| Disponible en Salesforce Classic (no disponible en todas las organizaciones) y Lightning Experience. |
Disponible en: Enterprise Edition, Unlimited Edition y Developer Edition Requiere suscripciones de complementos de Salesforce Shield o Monitoreo de eventos de Salesforce. |
Este ejemplo tiene dos partes. En primer lugar, crea una clase de Apex asíncrona que utiliza un evento en el método de ejecución para invocar una llamada o una operación DML. En segundo lugar, crea una política de seguridad de transacciones y modifica la clase de Apex para implementar TxnSecurity.EventCondition y TxnSecurity.AsyncCondition.
TxnSecurity.AsyncCondition pone en cola el proceso de Apex asíncrono cuando desencadena la política de seguridad de transacciones.
Crear la clase de Apex asíncrono
En esta sección, crea una clase de Apex asíncrono que toma un SObject. En este ejemplo, utilizamos ApiEvent. Luego invoca una llamada o una operación DML.
public class SimpleAsynchronousApex implements Queueable {
private ApiEvent apiEvent;
public SimpleAsynchronousApex(ApiEvent apiEvent) {
this.apiEvent = apiEvent;
}
public void execute(QueueableContext context) {
// Perform your callout to external validation service
// or a DML operation
}
}Crear una política
En esta sección se crea la política de seguridad de transacciones, que modifica la clase de Apex asociada con la política. Luego crea el objeto SimpleAsynchronousApex, pasa en ApiEvent y enruta el trabajo.
global class SimpleApiEventCondition implements TxnSecurity.EventCondition, TxnSecurity.AsyncCondition {
public boolean evaluate(SObject event) {
// Cast SObject to an ApiEvent object
ApiEvent apiEvent = (ApiEvent) event;
SimpleAsynchronousApex simpleAsynchronousApex = new SimpleAsynchronousApex(apiEvent);
System.enqueueJob(simpleAsynchronousApex);
return false;
// In a typical implementation may return true if it triggers an action
}
}
