Utilizar sObjects y DML
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Definir sObject.
- Explicar la diferencia entre los sObjects y otros tipos de datos en Apex.
- Usar DML para insertar registros en la base de datos.
Siga el proceso con Trail Together
¿Desea seguir el proceso con un experto a medida que realiza este paso? Eche un vistazo a este vÃdeo, parte de la serie Trail Together en Trailhead Live.
(Este vÃdeo comienza en el minuto 21:39, en caso de que desee retroceder y volver a ver el principio del paso).
¿Qué es un sObject?
Un sObject es un tipo de dato de Apex que corresponde a un objeto de Salesforce (sObject) en una organización. Los sObjects son tipos de datos complejos que contienen múltiples valores en una sola variable. Contienen un único registro de datos de un objeto de Salesforce, como Account (Cuenta), Contact (Contacto) u Opportunity (Oportunidad). Recuerde que, de los aspectos básicos de Apex para administradores, las variables son como contenedores. La mayorÃa de las variables albergan información. Los sObjects son contenedores que tienen otros contenedores. Los contenedores dentro del contenedor sObject pueden ser de diferentes tipos de datos, como cadena, fecha, entero o booleano.
Nueva cuenta
Nombre |
Número de la cuenta |
Teléfono |
---|---|---|
The Tea Factory |
356281 |
555-0158 |
Tina's Teas |
623956 |
555-0129 |
Eche un vistazo a la información en esta tabla. Si ha utilizado Data Loader (Cargador de datos), no le sonará a nuevo este formato de cuenta. Los campos de la cuenta son Name (Nombre), Account Number (Número de cuenta) y Phone (Teléfono). Los datos son los que verÃa si recuperara la información de un informe o una vista de lista.
Los campos de un objeto en una organización se llaman propiedades de un sObject en el código Apex. Asà como cada campo en un objeto de una organización tiene un tipo de dato, cada propiedad de un sObject también tiene un tipo de dato. Por ejemplo, debido a que el campo Name (Nombre) de un objeto Account (Cuenta) tiene el tipo de dato cadena, la propiedad Name
(Nombre) del sObject myAcct
(Mi cuenta) también tiene el tipo de dato cadena: myAcct.Name = 'The Tea Factory'
.
Ya sea que cree una cuenta manualmente (en la interfaz de usuario de Salesforce) o de manera programática (usando código Apex), establece los mismos valores con los mismos tipos de datos. Por ejemplo, en la interfaz de usuario de Salesforce, puede crear una cuenta con los valores de los campos que aparecen en la primera fila de la tabla de New Accounts (Nuevas cuentas) arriba. Para crear la misma cuenta de manera programática, use un sObject de cuenta en código Apex, de la siguiente manera:
Use el nombre del sObject, la notación de puntos y los mismos campos predeterminados (Name, Phone y AccountNumber) que ya conoce en su organización.
En este ejemplo, las propiedades de myAcct
(Mi cuenta) (Name
[Nombre], Phone
[Teléfono] y AccountNumber
[Número de cuenta]) tienen tipos de datos con los que ya está familiarizado: cadena y entero.
Establecer el valor del campo
Use la notación de puntos para asignar un valor a un sObject. Observe las lÃneas 2-4 en el ejemplo de código anterior. Si pensamos en el sObject como un contenedor de contenedores, esas lÃneas abren el contenedor más grande, myAcct
(Mi cuenta); encuentran los contenedores Name
(Nombre), Phone
(Teléfono) y AccountNumber
(Número de cuenta); y les asignan valores.
Obtener el valor del campo
De manera similar, use la notación de punto para obtener (recuperar) un valor de un sObject.
Ejemplo: String accountName = myAcct.Name;
Este ejemplo de código abre el contenedor myAcct
(Mi cuenta), mira dentro del contenedor, encuentra el contenedor Name
(Nombre) y obtiene su valor. En este ejemplo, el valor devuelto es The Tea Factory.
Declarar un sObject es como agregar una fila a una hoja de cálculo. Cuando esté listo para crear otra cuenta, asigne un nuevo nombre al objeto Account. Por ejemplo:
Añadir datos a una organización de Salesforce
¿Todo listo para escribir código Apex y añadir datos a su organización de Salesforce? Sabe cómo crear clases, crear métodos y declarar un sObject. Pero ¿cómo agregar un sObject a su base de datos de Salesforce? Para enviar nuevos registros a su organización de Salesforce, utilice algo llamado lenguaje de manipulación de datos (DML, por sus siglas en inglés).
Como administrador, ya conoce el funcionamiento de DML. Lo conoce como las instrucciones Insert (Insertar) (crear un registro), Update (Actualizar) (editar un registro) y Delete (Eliminar) (eliminar un registro) que utiliza con herramientas de manipulación de datos, como Data Loader. En lugar de utilizar archivos .csv y Data Loader para agregar filas o insertar o actualizar registros, puede escribir código Apex para hacer el trabajo. Utilice código Apex y las instrucciones DML Insert
(Insertar), Update
(Actualizar) y Delete
(Eliminar). ¡MagnÃfico! En esta unidad, nos centramos en la instrucción Insert
(Insertar).
Definir la clase
- En Developer Console, haga clic en File | New | Apex Class (Archivo | Nuevo | Clase de Apex).
- Introduzca
NewAccounts
como el nombre de la clase.
- Haga clic en OK (Aceptar).
- Reemplace el código predeterminado con este código:
- Haga clic en File | Save (Archivo | Guardar).
Ahora tiene una clase NewAccounts
que crea un nuevo registro y establece sus propiedades. La clase también utiliza la instrucción insert
(insertar) para agregar el nuevo registro de cuenta a la base de datos. ¡Ha llegado el momento de ejecutar su código!
Ejecutar el código
- Haga clic en Debug | Open Execute Anonymous Window (Depurar | Abrir ventana de ejecución anónima).
- En la ventana Enter Apex Code (Introducir código Apex), pegue este código:
- Haga clic en la casilla de verificación Open Log (Abrir registro) y luego en Execute (Ejecutar).
- Desde App Launcher (Iniciador de aplicación), busque y abra Accounts (Cuentas). The Tea Factory aparece en la lista Accounts (Cuentas). (Si no ve The Tea Factory, actualice la página).
- Haga clic en The Tea Factory (La fábrica del té).
- Haga clic en Details (Detalles). Observe que los campos Account Name (Nombre de la cuenta), Phone (Teléfono) y Account Number (Número de la cuenta) muestran los valores que estableció como propiedades del sObject en la clase
NewAccounts
(Nuevas cuentas).
Usar un bucle para crear múltiples registros
Añadir una cuenta cada vez no es algo muy práctico. Por lo general, necesita crear muchas cuentas a la vez, ya sea importando o actualizando registros.
PodrÃa añadir varios registros de la misma manera en que incorporamos un registro en el ejemplo anterior, pero tendrÃa que repetir el código para cada registro, de esta manera:
En Aspectos básicos de Apex para administradores, ha aprendido acerca de bucles y listas. Aquà tiene la oportunidad para poner en práctica esos conceptos. Usando un bucle while
y una lista, puede crear muchos registros a la vez y añadir todos los registros a su base de datos. Es como usar Data Loader para cargar un archivo .csv que incluye tres registros e insertarlos en la base de datos.
Escribir el método
- Vuelva a la clase NewAccounts (Nuevas cuentas) en Developer Console.
- Sustituya el código existente por este código:
- Haga clic en File | Save (Archivo | Guardar).
Ejecutar el método.
- Haga clic en Debug | Open Execute Anonymous Window (Depurar | Abrir ventana de ejecución anónima).
- En la ventana Enter Apex Code (Introducir código Apex), pegue este código:
- Seleccione Open log (Abrir registro) y luego haga clic en Execute (Ejecutar). Se abre la ventana de registros.
- Seleccione Debug Only (Solo depurar).
La última entrada en el registro muestra que el código creó tres cuentas, con un nombre y un número de cuenta para cada una:
The Tea Factory 1, 356291
The Tea Factory 2, 356292
The Tea Factory 3, 356293
La lista teaFactoryAccounts
creada en la lÃnea 5 se ve de la siguiente manera:
Cada vez que el valor de la variable contador se incrementa, se crea un sObject en el siguiente Ãndice (posición) disponible en la lista.
Vuelva a la lista de Accounts (Cuentas) en su organización de Trailhead Playground y haga clic en Accounts (Cuentas). Los tres restaurantes que ha insertado están incluidos en la lista de Accounts (Cuentas).
Revisar código del bucle
Examine el código de bucle while
. Crea una nueva instancia de un sObject de tipo Account (Cuenta) llamado store
(tienda). A continuación, el bucle establece el nombre "The Tea Factory". Para diferenciar los registros de cuenta, añade el valor actual del contador al final de la cadena store.Name
en cada iteración del bucle.
Después de que se establecen las propiedades, teaFactoryAccounts.add
añade un sObject store
(tienda) a la lista teaFactoryAccounts
en cada iteración del bucle while
hasta que se cumple la condición del bucle cuando el valor es mayor o igual que el contador.
Cuando se cumple la condición, el bucle while
termina y la última lÃnea inserta la lista teaFactoryAccounts
en la base de datos a la vez.
¿Por qué a la vez? Debido a que los recursos son limitados, solo puede usar la instrucción insert (insertar) en su código un máximo de 150 veces. Uno por uno, puede insertar un total de 150 registros. Pero, si cada instrucción insert (insertar) añade 10 registros, ese total aumenta a 1500 registros. Insertar múltiples objetos a la vez ayuda con bulkification (combinar tareas repetitivas escribiendo código eficiente). Al principio, es posible que se inserten tan solo 10 registros a la vez. Pero, a medida que crezca su aplicación, podrÃa llegar a insertar 200 registros a la vez. Usar bulkification desde el principio prepara su aplicación para el crecimiento.
Recursos
- GuÃa del desarrollador de Apex: Trabajo con sObjects
- Módulo de Trailhead: Fundamentos y base de datos de Apex