Skip to main content
Únase a nosotros en TDX, en San Francisco, o en Salesforce+ los días 5 y 6 de marzo en la conferencia para desarrolladores sobre la era de agentes de IA. Registrarse ahora.

Desarrollar y probar cambios a nivel local

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Crear una rama y confirmar cambios en un repositorio de control de origen
  • Autorizar un sandbox mediante Salesforce Extensions para VS Code.
  • Recuperar cambios de un sandbox.

Configurar un repositorio de código

El equipo de desarrollo de Zephyrus Relocation Services aloja su código y revisa su trabajo en GitHub. Confirman los cambios en el repositorio de origen para identificar y combinar cualquier conflicto de personalización que surja antes de seguir.

Nota

Importante: El principal objetivo de este módulo es describir el flujo de trabajo del modelo de desarrollo de la organizaciones. No incluye ningún reto práctico. No obstante, sabemos que los trailblazers no suelen quedarse quietos. Si va a probar los pasos descritos en este módulo, recuerde que incluiremos notas aparte cuando las instrucciones que debe seguir sean distintas de las de Ella y Juan. Deje sus sandboxes para tareas de desarrollo "de verdad". Antes de empezar, regístrese para obtener una organización de Developer Edition o un Trailhead Playground que pueda usar en lugar de cada sandbox.

Crear el repositorio de control de origen

El repositorio es el lugar en el que Juan organiza los archivos de origen para el proyecto de desarrollo. Juan crea un proyecto de Salesforce DX y lo agrega al repositorio.

Asigne al repositorio un nombre descriptivo que refleje bien su propósito. Puesto que es un proyecto de desarrollo interno, Juan crea un repositorio privado desde la cuenta empresarial de Zephyrus denominado language-courses.

Crear un proyecto de Salesforce DX

  1. Abra VS Code.
  2. Seleccione View (Ver) | Command Palette (Paleta de comandos) en el menú.
  3. En el cuadro de búsqueda de la paleta de comandos, escriba sdfx project.
  4. Seleccione SFDX: Create Project with Manifest (SDFX: Crear proyecto con manifiesto).
  5. Utilice el mismo nombre que tiene su repositorio de GitHub, language-courses y luego haga clic en Enter (Introducir).
  6. Haga clic en Create Project (Crear proyecto).

Agregar archivos del proyecto en el repositorio de GitHub

  1. En VS Code, abra el directorio del proyecto de DX y haga clic en el icono de control de código fuente: Icono de control de código fuente.
  2. Haga clic en Initialize Repository (Inicializar repositorio).
  3. Desplace el cursor por Changes (Cambios) y haga clic en + para organizar todos los cambios.
  4. Acepte la rama predeterminada en la que desea confirmar el repositorio, por ejemplo, "main".
  5. Escriba un mensaje de confirmación y haga clic en el icono de confirmación: Icono de confirmación, marca de verificación.
  6. Haga clic en Publish Branch (Publicar rama).
  7. Confirme el lugar en el que quiere publicarla.

Crear personalizaciones para requisitos nuevos

Calvin se ha reunido con el equipo de ventas para reunir nuevos requisitos para el próximo lanzamiento. El equipo de ventas quiere recibir avisos cuando se agregue o modifique un curso de idiomas y quiere saber también quién es el docente encargado de cada curso.

Juan cree que esta petición es una excelente manera de que el equipo se familiarice con el modelo de desarrollo de la organizaciones. Aunque sirve para gestionar escenarios de desarrollo mucho más complejos, este sencillo conjunto de pasos puede ayudar al equipo a conocer el flujo de trabajo del modelo.

La tarea de Ella es crear un objeto personalizado para el docente del curso de idiomas y vincularlo al registro del curso. Juan crea un desencadenador que envía una notificación por correo electrónico al alias del equipo de ventas. Estos son los pasos en cuestión:

Clonar el repositorio

En primer lugar, Ella clona el repositorio de GitHub y crea su propia rama.

  1. Vaya al repositorio que desee clonar, por ejemplo, https://github.com/zephyrus/language-courses.
    Este repositorio no existe. Solo se utiliza a modo de ejemplo. Si tiene pensado seguir los pasos descritos, sustituya el repositorio de ejemplo por el que ha creado durante estos pasos. Además, tenga en cuenta que va a simular el trabajo de dos perfiles de desarrollador: el de Juan y el de Ella. Recomendamos crear dos directorios principales independientes para que las tareas de desarrollo estén bien diferenciadas. Por ejemplo, si va a realizar las tareas de desarrollo de Ella, debe clonar el repositorio en una carpeta denominada org-dev-ella. Si va a realizar las tareas de desarrollo de Juan, debe clonar el repositorio en una carpeta denominada org-dev-juan.
    1. Haga clic en Clone or download (Clonar o descargar).
    2. Copie la URL HTTPS.
  2. En Command Palette (Paleta de comandos) en VS Code, seleccione Git: Clone (Git: Clonar).
  3. En Repository URL (URL de repositorio), pegue la URL en el repositorio y haga clic en Enter (Introducir). Ella clona el repositorio que ha creado Juan: https://github.com/zephyrus/language-courses.git.
  4. En el sistema de archivos local, vaya al lugar donde quiera colocar el repositorio de GitHub y luego haga clic en Select Repository Location (Seleccionar ubicación del repositorio).
  5. Haga clic en Open Repository (Abrir repositorio).
  6. En Command Palette (Paleta de comandos), seleccione Git: Create Branch (Git: Crear rama).
  7. Escriba el nombre de la rama. Ella asigna a su rama el nombre ella-custom-object. Ahora está trabajando en su propia rama.

Autorizar el sandbox e iniciar sesión en él

A continuación, Ella autoriza (es decir, inicia sesión) su sandbox de desarrollador mediante VS Code.

Nota

Si está siguiendo los pasos descritos, utilice una organización de Developer Edition o un Trailhead Playground. En el paso 3, seleccione Project Default (Valor predeterminado del proyecto) para usar login.salesforce.com como la URL de inicio de sesión.

  1. En el cuadro de búsqueda de Command Pallete (Paleta de comandos), escriba sdfx authorize.
  2. Seleccione SFDX: Authorize an Org (SDFX: Autorizar una organización).
  3. Seleccione Sandbox para la URL de inicio de sesión.
  4. Introduzca un alias para el sandbox, como dev_sandbox.
  5. Inicie sesión con su nombre de usuario y contraseña del sandbox.

Crear los objetos personalizados

A continuación, Ella crea los objetos personalizados Language Course (Curso de idiomas) y Language Instructor (Docente de idiomas) en su sandbox de desarrollador.

  1. En Setup (Configuración), haga clic en la ficha Object Manager (Gestor de objetos).
  2. Haga clic en Create (Crear) | Custom Object (Objeto personalizado) en la esquina superior derecha.
  3. En Label (Etiqueta), escriba Language Course Instructor (Docente del curso de idiomas). Tenga en cuenta que los campos Object Name (Nombre de objeto) y Record Name (Nombre del registro) se rellenan automáticamente.
  4. En Plural Label (Etiqueta plural), escriba Language Course Instructors (Docentes del curso de idiomas).
  5. Marque la casilla Launch New Custom Tab Wizard (Iniciar el asistente de nueva ficha personalizada y haga clic en Save (Guardar).
  6. Seleccione el estilo de ficha que quiera (Ella elige la de presentador) y haga clic en Next (Siguiente) hasta que pueda guardar el objeto.
Nota

Sugerencia avanzada: También puede usar los comandos schema generate para generar archivos de origen locales de nuevos objetos personalizados, campos, fichas y eventos de plataforma. Para este módulo recomendamos utilizar las opciones de Setup (Configuración), pero pruebe con los comandos en algún momento, seguro que le gustan.

Definir el campo personalizado

A continuación, Ella define el campo del objeto personalizado en el objeto Language Course (Curso de idiomas) que hace referencia al objeto Language Course Instructor (Docente del curso de idiomas).

Nota

Si está siguiendo los pasos descritos, tenga en cuenta que Ella ha creado el objeto Language Course (Curso de idiomas) en otro módulo. En el módulo se presupone que ese objeto ya existe en el sandbox de desarrollador de Ella. Cree el objeto personalizado antes de seguir:

  1. En Setup (Configuración), haga clic en la ficha Object Manager (Gestor de objetos).
  2. Haga clic en Create (Crear) | Custom Object (Objeto personalizado) en la esquina superior derecha.
  3. En Label (Etiqueta), escriba Language Course (Curso de idiomas). Tenga en cuenta que los campos Object Name (Nombre de objeto) y Record Name (Nombre del registro) se rellenan automáticamente.
  4. En Plural Label (Etiqueta plural), escriba Language Courses (Cursos de idiomas).
  5. Marque la casilla Launch New Custom Tab Wizard (Iniciar el asistente de nueva ficha personalizada y haga clic en Save (Guardar).
  6. Seleccione el estilo de ficha que quiera (Ella elige la de pizarra) y haga clic en Next (Siguiente) hasta que pueda guardar el objeto. 
  1. Desde Setup (Configuración), vaya a Object Manager (Gestor de objetos) | Language Course (Curso de idiomas).
  2. Haga clic en Fields & Relationships (Campos y relaciones). Podrá observar que ya hay algunos campos, incluido un campo de nombre.
  3. Haga clic en New (Nuevo).
  4. Para el tipo de datos, seleccione Master-Detail Relationship (Relación principal-detalle) y haga clic en Next (Siguiente).
  5. En Related To (Relaciones), seleccione Language Course Instructor (Docente del curso de idiomas y haga clic en Next (Siguiente).
  6. Especifique lo siguiente:
    • Field Label (Etiqueta de campo): Course Instructor (Docente del curso)
    • Description (Descripción): Teacher for the language course (Docente que imparte el curso)
  7. Haga clic en Next (Siguiente) hasta que pueda guardar el campo.

Realizar un seguimiento de los cambios en una lista de cambios

Ella crea una lista de cambios para el proyecto con el fin de capturar los cambios.

Metadata Type (Tipo de metadatos) Object (Objeto) Change Type (Create, Update, Delete) (Tipo de cambio: crear, actualizar o eliminar) Details (Detalles)
CustomObject Language_Course_Instructor__c Create (Crear) Objeto para capturar el nombre de la persona que imparte el curso
CustomField Course_Instructor__c Create (Crear) Relación de principal-detalle con el objeto personalizado Language_Course__c

Recuperar los cambios del sandbox de desarrollador

Ella recupera los cambios desde el sandbox en su proyecto local de DX. Puesto que Ella realiza un seguimiento de los cambios durante el proceso, sabe lo que debe recuperar desde el sandbox.

Como Ella recupera únicamente algunos componentes del sandbox, decide usar el terminal de VS Code para ejecutar el comando project retrieve start de la CLI de Salesforce. En función del directorio predeterminado que se haya especificado en el proyecto de DX, la CLI colocará el origen en la carpeta force-app. Como no se puede agregar una carpeta vacía en GitHub, Ella crea la carpeta force-app en el proyecto de DX en su sistema de archivos local.

  1. En el proyecto DC del sistema de archivos local, cree una carpeta force-app.
  2. En el Terminal de VS Code, ejecute el comando de la CLI para recuperar el objeto personalizado y el campo personalizado nuevos:
    sf project retrieve start --metadata CustomObject:Language_Course_Instructor__c --metadata CustomField:Language_Course__c.Course_Instructor__c
    Ella utiliza --metadata en lugar de --source-dir porque --source-dir permite recuperar solo archivos que ya existen en el sistema. Aparece el objeto personalizado en el directorio force-app/main/default/objectsEn VS Code, en el lado izquierdo se muestra la nueva estructura de directorios que se ha creado después de ejecutar el comando source:retrieve: force-app/main/default/objects. En el lado derecho aparece la ventana del Terminal donde se ha ejecutado el comando y el resultado de la CLI.

Confirmar los cambios en el repositorio de control del código fuente

Ella confirma los cambios en el repositorio y luego crea una solicitud de incorporación de cambios para informar a Juan de que ya puede revisar los cambios.

  1. En Visual Studio Code, seleccione el icono de control de código fuente Icono de control de código fuente.
  2. Escriba un comentario de confirmación y haga clic en el icono de confirmación: Icono de confirmación.
  3. Haga clic en Yes (Sí) para añadir y confirmar los archivos.
  4. En Command Palette (Paleta comandos) en Visual Studio Code, seleccione Git: Push To (Git: Enviar cambios).
  5. Seleccione el repositorio de origen.

Revisar el código

Nota

Si está siguiendo los pasos descritos, puede saltarse esta sección.

  1. Cree una solicitud de incorporación de cambios. En el repositorio de GitHub, haga clic en Compare & pull request (Comparar y solicitar una incorporación de cambios).
  2. Asigne los revisores. Ella asigna la revisión a Juan y aprueba los cambios.
  3. Introduzca un comentario para los revisores.
  4. Haga clic en Create Pull Request (Crear solicitud de incorporación de cambios).

Después de que Juan revise y apruebe el código, Ella fusiona la solicitud de incorporación de cambios. Juan sabe que ya puede empezar a trabajar con el desencadenador.

Crear el desencadenador

El desencadenador avisa al equipo de ventas cuando se actualiza o añade un curso. Un desencadenador es un fragmento de código Apex que se ejecuta antes o después de que se inserten, actualicen o eliminen registros de un tipo determinado en la base de datos de Lightning Platform.

Juan clona el repositorio de GitHub que contiene el nuevo objeto personalizado y crea su propia rama. Después, crea el desencadenador y la prueba correspondiente en Visual Studio Code.

Implementar el repositorio del proyecto en el sandbox de desarrollo

En primer lugar, Juan implementa los cambios de Ella en el sandbox de desarrollo para que se sincronicen ambos entornos.

Nota

Si está siguiendo los pasos, realícelos en la carpeta que ha creado para las tareas de desarrollo de Juan, por ejemplo, org-dev-juan. Utilice una nueva organización de Developer Edition o Trailhead Playground para el sandbox de desarrollador de Juan.

  1. Clone el repositorio de GitHub.
  2. En Visual Studio Code, seleccione Git: Create Branch (Git: Crear rama) y asigne un nombre a la rama. Juan asigna a la rama el nombre juan_apex_trigger.
  3. Seleccione SFDX: Authorize an Org (SDFX: Autorizar una organización).
  4. Seleccione Sandbox para la URL de inicio de sesión (test.salesforce.com).
  5. Introduzca un alias para el sandbox, como dev_sandbox.
  6. Inicie sesión con su nombre de usuario y contraseña del sandbox.
  7. Implemente los cambios de Ella en el sandbox de desarrollador. Haga clic con el botón derecho en la carpeta de objetos y seleccione SFDX: Deploy Source to Org (SFDX: Implementar código fuente en la organización). Juan también puede ejecutar el comando de Salesforce CLI en el Terminal.
    sf project deploy start --metadata CustomObject:Language_Course_Instructor__c --metadata CustomField:Language_Course__c.Course_Instructor__c

Desarrollar el desencadenador

  1. En la rama juan_apex_trigger de Visual Studio Code, cree el directorio donde va a colocar el desencadenador.
    1. Expanda la carpeta force-app.
    2. Haga clic con el botón derecho en "default" (predeterminado) y seleccione New Folder (Nueva carpeta).
    3. Introduzca triggers.
  2. Haga clic con el botón derecho en la carpeta "triggers" y haga clic en SFDX: Create Apex Trigger (Crear desencadenador de Apex).
  3. Escriba LanguageCourseTrigger para el nombre de desencadenador. Escriba el código del desencadenador.
    trigger LanguageCourseTrigger on Language_Course__c (after insert, after update, after delete) {
    // <write your own notification code>
    }
  4. Guarde el archivo.
  5. Cree una prueba para el desencadenador llamada TestLanguageCourseTrigger. Puesto que Juan es un desarrollador experimentado, quiere asegurarse de que se cumplan los requisitos de cobertura del código.

Implementar los cambios en el sandbox de desarrollo

Juan implementa el desencadenador para validarlo y compilarlo, y luego prueba que funciona correctamente con el nuevo objeto.

  1. En el Terminal de Visual Code Studio, haga clic con el botón derecho en la carpeta triggers y seleccione SFDX: Deploy Source to Org (SFDX: Implementar código fuente en la organización). Juan también puede ejecutar el comando de la CLI desde el Terminal.
    sf project deploy start --source-dir force-app/main/default/triggers
    En VS Code, en el lado izquierdo se muestra la nueva estructura de directorios que se ha creado después de ejecutar el comando source:deploy para el desencadenador: force-app/main/default/triggers. En el lado derecho aparece la ventana del Terminal donde se ha ejecutado el comando y el resultado de la CLI.
  2. Juan comprueba que ha capturado todos los cambios y que funcionan en el sandbox.
  3. Además, añade los cambios a la lista de cambios.
Metadata Type (Tipo de metadatos) Object (Objeto) Change Type (Create, Update, Delete) (Tipo de cambio: crear, actualizar o eliminar) Details (Detalles)
CustomObject Language_Course_Instructor__c Create (Crear) Objeto que sirve para capturar quién es el docente del curso
CustomField Course_Instructor__c
Create (Crear) Relación de principal-detalle con el objeto personalizado Language_Course__c
ApexTrigger LanguageCourseTrigger Create (Crear) Se envía un correo al equipo de ventas cuando se crea, actualiza o elimina el objeto Language_Course__c
ApexClass TestLanguageCourseTrigger Create (Crear) Cobertura de las pruebas de Apex del desencadenador

Confirmar los cambios en el repositorio de control del código fuente

Juan confirma los cambios en el repositorio y crea una solicitud de incorporación de cambios. Ella revisa el código.

Planificar la próxima versión

Juan y Ella siguen el mismo proceso para futuras personalizaciones. Si desarrollan personalizaciones en VS Code, como el trabajo del desencadenador de Juan, las implementan en sus sandboxes de desarrollador para validarlas y probarlas.

Utilizan Setup (Configuración) para todo lo demás, de forma que puedan aprovechar los generadores, los asistentes y las interfaces declarativas. Además, recuperan los cambios del sandbox en sus sistemas locales de archivos. Confirman los cambios en el control del código fuente, crean una solicitud de incorporación de cambios y solicitan una revisión del código antes de fusionar los cambios en la rama maestra.

Comparta sus comentarios sobre Trailhead en la Ayuda de Salesforce.

Nos encantaría conocer su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios cuando quiera desde el sitio de la Ayuda de Salesforce.

Más información Continuar para compartir comentarios