Skip to content

Creación de un complemento CLI de Salesforce ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

El enlace a la publicación original, lo encontrarás al final de este artículo.

Creación de un complemento CLI de Salesforce | Blog de desarrolladores de Salesforce

La CLI de Salesforce es una herramienta poderosa y esencial para el desarrollo de Salesforce. Puede usarse no solo para crear y desarrollar aplicaciones, sino también para crear y administrar organizaciones, importar y exportar datos, ejecutar pruebas y funcionar como una herramienta de automatización para múltiples propósitos. Pero uno de los aspectos más poderosos, y a menudo pasados por alto, de la CLI es su extensibilidad a través de complementos.

En esta publicación de blog, le mostraremos cómo escribir un complemento de la CLI de Salesforce utilizando el generador @salesforce/plugin-dev para la CLI de sf . También cubriremos cómo conectarse a una organización de Salesforce utilizando las bibliotecas proporcionadas por el generador de complementos.

requisitos previos

  1. Node.js LTS
  2. Gestor de paquetes de hilo
  3. La última versión de la CLI de Salesforce : sfdx update
  4. Código de Visual Studio con extensiones de Salesforce (opcional pero recomendado)

Además, deberá instalar el @salesforce/plugin-dev para que la CLI de sf comience a crear un nuevo complemento. Puedes hacerlo ejecutando:

Generación de un complemento

Generemos un nuevo complemento ejecutando sf dev generate plugin . Este generador te hará algunas preguntas:

  • Si el complemento es o no un complemento interno de Salesforce
  • Nombre del complemento
  • Descripción del complemento
  • Información del autor
  • Cobertura de código % para hacer cumplir

Como ejemplo, crearemos un complemento API REST que nos permitirá realizar solicitudes de API REST de Salesforce autenticadas directamente desde la terminal. No tendremos que preocuparnos por los tokens de autorización, las URL de las instancias, etc.; nuestro complemento se encargará de todo esto.

Generando un comando

Un complemento puede estar compuesto por un comando independiente o varios comandos agrupados por temas. Tenga en cuenta que cubrimos mucho terreno sobre los fundamentos de la aplicación CLI en la publicación de blog Creación de una aplicación CLI con oclife .

El @salesforce/plugin-dev viene con un práctico generador, y también podemos generar comandos ejecutando:

Veamos qué archivos se crearon para el comando rest .

Archivo Descripción
paquete.json npm que describe las dependencias y versiones del paquete.
src/comandos/rest.ts Archivo TypeScript principal que contiene el código para el comando resto. El comando importa y amplía clases desde @salesforce/sf-plugins-core.
mensajes/descanso.md Archivo Markdown que contiene los mensajes que componen la ayuda y los errores del comando.
prueba/comandos/rest.nut.ts Pruebas complejas de integración, humo y de extremo a extremo. También conocido como NUTS (pruebas no unitarias).
prueba/comandos/rest.test.ts Pruebas unitarias.

A los efectos de esta publicación de blog, nos centraremos únicamente en el archivo src/commands/rest.ts . Si desea echar un vistazo al proyecto, el código fuente completo está alojado en GitHub.

Algunas partes clave del código anterior incluyen:

  • Se amplía un comando de la clase SfCommand de la biblioteca @salesforce/sf-plugins-core .
  • Las cadenas (mensajes) como el resumen, la descripción, los ejemplos, etc. se almacenan en formato de descuento y se cargan mediante la clase Messages .
  • Las banderas se definen con la clase Flags de @salesforce/sf-plugins-core , esto le dará más opciones para banderas como directory , url , requiredOrg , orgApiVersion y otras. Puede encontrar más información sobre los indicadores disponibles en la documentación .
  • El método run es donde se ejecuta la lógica del comando. Se recomienda especificar un tipo de retorno, que será utilizado por el indicador --json .

Implementación de un comando API REST de Salesforce

El comando que queremos implementar nos permitirá realizar solicitudes autenticadas a la API REST de Salesforce. Antes de implementar la lógica, se recomienda diseñar cómo funcionará su complemento. Puede encontrar más información sobre cómo diseñar un complemento en la documentación .

<dx-code-block title language code-block="# perform a GET request to the provided REST API path # (without /services/data/
sf rest [path] –target-org [target-org] # Example: Describe the Account object
sf rest /sobjects/Account/describe –target-org mydevhub»>

Argumentos

  • path : representa la ruta del recurso API (con o sin el prefijo /services/data/<apiVersion>/ )

Banderas

  • target-org, o — representa el nombre de usuario o alias de la organización autenticada
  • method, m — representa el método HTTP utilizado para interactuar con la API
  • content-type, t : representa el encabezado Content-Type de la solicitud (ya sea application/json o application/xml )
  • payload, p : representa la carga útil de la solicitud en JSON o XML
  • api-version : representa la versión de API de Salesforce que se usará para la solicitud (si no está presente, usará el valor predeterminado actual)

Conexión a una organización de Salesforce

Hay dos formas de conectarse a una organización de Salesforce:

  1. Podemos crear una conexión utilizando las clases AuthInfo y Connection de la biblioteca @salesforce/core . Para eso, necesitaríamos el nombre de usuario (o alias) de la organización, que será proporcionado por el indicador target-org .

Afortunadamente, @salesforce/sf-plugins-core nos brinda mejores utilidades para esto. Podemos usar la utilidad Flags.requiredOrg personalizada para recuperar la organización por nombre de usuario o alias, y esto devolverá un objeto de organización autenticado cuando se analicen las banderas.

Uso del objeto Conexión

La clase Connection se extiende desde JSforce Connection , lo que significa que podrá realizar cualquier operación compatible con JSforce. A los efectos de este complemento, utilizaremos el método de request para realizar solicitudes HTTP sin formato a la API REST de Salesforce. Nota: JSforce es una potente biblioteca de JavaScript para desarrollar aplicaciones de Salesforce.

La lógica del complemento, como se muestra arriba, hace lo siguiente:

  • Extrae la organización del indicador target-org
  • Obtiene la conexión de la organización usando org.getConnection() , que devolverá un objeto de conexión autenticado
  • Establece apiVersion en la conexión si se especifica el indicador
  • Extrae los parámetros HTTP de las banderas
  • Realiza la solicitud HTTP utilizando el método de request del objeto de conexión
  • Imprime la salida como un JSON con estilo usando el método this.styledJSON()

Nota: Asegúrese de autenticarse en una organización usando sf login org antes de usar el complemento sf rest .

Y finalmente, puede vincular el complemento con su instalación local de sf ejecutando:

¡Y voilá! Ahora puede usar el complemento y comenzar a realizar solicitudes de la API REST de Salesforce mediante la CLI de sf .

¿Que sigue?

Asegúrese de echar un vistazo a las grandes mejoras que llegan a la CLI de Salesforce , especialmente aquellas relacionadas con el desarrollo de complementos que son más fáciles que nunca.

Además, no cubrimos cómo escribir pruebas para un complemento de Salesforce, que requerirá su propia publicación de blog. Afortunadamente, nuestro amigo y principal promotor de desarrollo, Mohith Shrivastava, ya presentó una sesión de CodeLive en la que enseñó cómo probar los complementos de la CLI de Salesforce mediante NUT , y habrá una publicación de seguimiento que publicaremos pronto. ¡Estén atentos y feliz codificación!

Recursos de aprendizaje

Sobre el Autor

Julián Duque es Defensor Principal de Desarrolladores en Salesforce. Es desarrollador y educador y pasa su tiempo ejecutando juegos TTRPG en línea y jugando y entrenando a su Mini Aussie, Cumbia, y a su gatita Sphynx, Nefertiti.

Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.

Agregar a Slack Suscríbete a RSS

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2023/01/building-a-salesforce-cli-plug-in.html

Entradas recomendadas