Usted está aquí:
Utilizar Apex para configurar la creación de registros en lotes para sitios de gran volumen
Los usuarios de sitios de Experience Cloud pueden crear más casos, candidatos y objetos personalizados por segundo cuando se recopilan en lotes y se procesan de forma asíncrona en lugar de uno a uno. El procesamiento por lotes mejora el rendimiento y mantiene su sitio en movimiento durante picos de tráfico intenso. Puede invocar la creación de registros por lotes utilizando el método de Apex agregado para este propósito.
Ediciones necesarias
| Disponible en: Salesforce Classic y Lightning Experience |
| Disponible en: Enterprise Edition, Developer Edition, Performance Edition y Unlimited Edition |
| Permisos de usuario necesarios | |
|---|---|
| Para configurar el registro y la creación del caso en lotes: | Utilizar microlotes para crear registros |
| Para configurar el campo Creado por de un registro creado por el usuario original: | Establecer campos de auditoría en la creación de registros |
| Para publicar un sitio de Experience Cloud: |
|
| Para modificar las clases de Apex: |
|
Lo siguiente se aplica a usuarios autenticados que crean registros por lotes utilizando microlotes:
- Se requiere el permiso de perfil Utilizar microlotes para crear registros.
- Tienen la propiedad de todos los registros que crean a través de microlotes.
- La seguridad a nivel de campo y el acceso al tipo de registro se omiten al crear los registros. Se aplican después de crear el registro.
- Los registros creados a través de microlotes utilizan el tipo de registro predeterminado para la organización cuando se crean a través de microlotes.
- Al crear un registro secundario, solo se requiere el acceso Leer en el registro principal.
El método Apex Network.createRecordAsync tiene tres parámetros:
- El primer parámetro
processTypedebe establecerse como 'GENERIC'. - El segundo parámetro
sObjectno puede estar vacío o nulo. Debe contener un valor válido que represente un objeto compatible. Las validaciones del lado del cliente se realizan a través de la experiencia de usuario final antes del envío del registro para su creación utilizando microlotes. - El tercer parámetro es una matriz de vínculos de archivos adjuntos. Los archivos adjuntos deben crearse con antelación. Este parámetro es opcional y está disponible únicamente para usuarios autenticados.
Salesforce utiliza el usuario Proceso automatizado para crear registros por lotes en nombre de los usuarios originales. Los administradores del sitio con el permiso Establecer campos de auditoría al crear el registro pueden establecer el campo Creado por del registro creado en el usuario original. De lo contrario, el campo Creado por se establece como Usuario de Proceso automatizado.
Cuando los usuarios invitados crean registros a través de microlotes, el campo Creado por se establece como Usuario invitado; sin embargo, los usuarios invitados no son propietarios de los registros creados.
- Desde Configuración, en el cuadro Búsqueda rápida, introduzca Clases de Apex y, a continuación, seleccione Clases de Apex.
-
Utilice esta función para el controlador de Apex que gestiona la creación de registros por lotes del objeto que desea crear.
Para crear casos por lotes:
Case mycase = new Case( Subject = 'sample case', Description = 'case description');
String uuid = Network.createRecordAsync('GENERIC', mycase, [enter ContentDocumentIDs separated by commas])
Para verificar que los microlotes están funcionando como se espera a través de Apex, pruebe el método createRecordAsync en la clase de Apex agregando la definición de clase de prueba. Por ejemplo:
Esta es la clase de Apex
public class MicrobatchCreateRecord {
public string microbatchCreateCase(String subject) {
Case c = new Case();
c.subject = subject;
String uuid = Network.createRecordAsync('GENERIC', c);
return uuid;
}
}Esta es la clase de prueba de Apex:
@IsTest
public class MicrobatchCreateRecord_Test {
@IsTest
public static void testMicrobatchCreateCase() {
string newCaseSubject = 'ApexTestCase1';
MicrobatchCreateRecord controller = new MicrobatchCreateRecord();
Test.startTest();
string uuid = controller.microbatchCreateCase(newCaseSubject);
Assert.isNotNull(uuid);
Test.getEventBus().deliver();
Test.stopTest();
// Assert that the Case was created and has the expected subject
List<Case> testCases = [Select Id, Subject from Case];
Assert.areEqual(1, testCases.size());
Assert.areEqual(newCaseSubject, testCases[0].subject);
}
}