Skip to content

Etiqueta: github

SFR-Embedding-Mistral: Mejora de la recuperaci贸n de textos con aprendizaje por transferencia

El SFR-Embedding-Mistral supone un avance significativo en los modelos de incrustaci贸n de textos y se basa en los s贸lidos cimientos de E5-mistral-7b-instruct y Mistral-7B-v0.1.

Seguir leyendo

El poder de la IA: refuerzo de la seguridad de las aplicaciones mediante la eliminaci贸n de secretos en el c贸digo – Blog de ingenier铆a de Salesforce

Por Krishna Pandey y Scott Nyberg. En nuestra serie de preguntas y respuestas 芦Engineering Energizers禄, examinamos las trayectorias profesionales que han formado a los l铆deres de ingenier铆a de Salesforce. Conozca a Krishna Pandey, Director de ingenier铆a de seguridad de Salesforce. Con sede en Bangalore (India), su equipo de tecnolog铆a de seguridad de aplicaciones (AST) impulsa el programa de seguridad del c贸digo fuente de Salesforce, encargado de utilizar la IA para detectar y […]

The post El poder de la IA: reforzar la seguridad de las aplicaciones eliminando secretos en el c贸digo appeared first on Blog de ingenier铆a de Salesforce.

Seguir leyendo

Adaptar los modelos de difusi贸n a las preferencias humanas

TLDR

El aprendizaje a partir de preferencias humanas, concretamente el Aprendizaje por Refuerzo a partir de la Retroalimentaci贸n Humana (RLHF) ha sido un componente reciente clave en el desarrollo de grandes modelos ling眉铆sticos como ChatGPT o Llama2. Hasta hace poco, el impacto del entrenamiento a partir de la retroalimentaci贸n humana en los modelos texto-imagen era mucho m谩s limitado. En este trabajo, Diffusion-DPO,

Seguir leyendo

Modelado de secuencias largas con XGen: Un LLM de 7B entrenado con secuencias de entrada de 8K de longitud

TLDR

Entrenamos una serie de LLMs 7B llamados XGen-7B con atenci贸n densa est谩ndar hasta 8K de longitud de secuencia para hasta 1.5T tokens. Tambi茅n afinamos los modelos en datos de instrucci贸n de dominio p煤blico. Los principales resultados son:

  • En pruebas de PNL est谩ndar, XGen consigue resultados comparables o mejores
Seguir leyendo

CodeGen2.5: peque帽o, pero poderoso

Contribuci贸n equitativa entre Erik Nijkamp y Hiroaki Hayashi.

Paper
Code
Tweet

Abstract

La familia de modelos CodeGen de Salesforce crece con CodeGen2.5 – 隆un modelo peque帽o, pero poderoso! Mientras que ha habido una tendencia reciente de grandes modelos de lenguaje (LLM) de tama帽o cada vez mayor, mostramos que un modelo peque帽o

CodeGen2.5 – peque帽o pero poderoso

Seguir leyendo

GlueGen: Codificadores multimodales Plug and Play para la generaci贸n de im谩genes X a X

Otros autores son: Can Qin, Stefano Ermon, Yun Fu

GlueGen fue aceptado por el ICCV.

En el campo de la s铆ntesis de texto a imagen, que avanza con rapidez, los notables progresos en la generaci贸n de im谩genes realistas a partir de indicaciones textuales han sido evidentes. Sin embargo, sigue existiendo un reto importante: 驴c贸mo podemos integrar a la perfecci贸n potentes codificadores de texto preentrenados en

sistemas de s铆ntesis de texto a imagen?

Seguir leyendo

Desarrollo de la nueva XGen: Los LLM fundacionales de Salesforce

Por Shafiq Rayhan Joty y Scott Nyberg En nuestra serie 芦Engineering Energizers禄 Q&A, examinamos las trayectorias profesionales que han formado a los l铆deres de ingenier铆a de Salesforce. Conozca a Shafiq Rayhan Joty, Director de Salesforce AI Research. Shafiq codirige el desarrollo de XGen, una serie de innovadores modelos de lenguaje de gran tama帽o (LLM) de distintos tama帽os. Proporcionando conocimientos generales cr铆ticos, […]

El post Desarrollando el nuevo XGen: Salesforce’s Foundational Large Language Models appeared first on Blog de ingenier铆a de Salesforce.

Seguir leyendo

Plan de IA sostenible de Salesforce: Donde la responsabilidad se une a la innovaci贸n

Salesforce se gu铆a por sus valores fundamentales de confianza, 茅xito del cliente, innovaci贸n, igualdad y sostenibilidad. Estos valores se reflejan en su compromiso de desarrollar e implantar de forma responsable nuevas tecnolog铆as como la IA generativa en nombre de las partes interesadas, desde los accionistas hasta los clientes y el planeta. Los grandes modelos ling眉铆sticos (LLM) que potencian la IA generativa requieren enormes […]

The post Descubriendo el plan de Salesforce para una IA sostenible: donde la responsabilidad se une a la innovaci贸n appeared first on Blog de ingenier铆a de Salesforce.

La IA generativa requiere una gran cantidad de recursos para ser sostenible

Seguir leyendo

UniControl

UniControl es aceptado en NeurIPS’23.
驴Es posible que un 煤nico modelo domine el arte de crear im谩genes a partir de bocetos, mapas, diagramas y mucho m谩s? Aunque los generadores de texto a imagen basados en la difusi贸n, como DALL-E-3, han mostrado resultados notables a partir de instrucciones en lenguaje natural, lograr un control preciso de los dise帽os, los l铆mites y la geometr铆a sigue siendo un reto utilizando s贸lo descripciones de texto. Ahora, los investigadores han desarrollado UniControl, un modelo unificado capaz de manejar diversas condiciones visuales que van desde los bordes hasta los mapas de profundidad dentro de un marco unificado.

Background

La s铆ntesis de texto a imagen (T2I) se ha disparado recientemente gracias a los avances en modelos generativos profundos. Sistemas como DALL-E 2, Imagen y Stable Diffusion pueden generar ahora im谩genes de gran realismo fotogr谩fico controlables mediante instrucciones de lenguaje natural. Estos avances se basan en modelos de difusi贸n que han demostrado ser extremadamente eficaces para la generaci贸n de texto a imagen.

Sin embargo, el control mediante indicaciones de texto apenas es preciso para los atributos espaciales, estructurales y geom茅tricos. Por ejemplo, pedir 芦a帽adir un gran cubo morado禄 depende de la comprensi贸n impl铆citamente aprendida del modelo sobre la geometr铆a 3D. Enfoques recientes como ControlNet han introducido el condicionamiento a se帽ales visuales adicionales, como mapas de segmentaci贸n o detecciones de bordes. Esto permite un control expl铆cito de las regiones de la imagen, los l铆mites, la ubicaci贸n de los objetos, etc.

Pero cada modelo ControlNet s贸lo maneja una condici贸n visual espec铆fica, como los bordes o los mapas de profundidad. Para ampliar las capacidades es necesario un reentrenamiento exhaustivo. La compatibilidad con diversas entradas controlables requiere el desarrollo de modelos especializados para cada tarea. Esto sobrecarga los par谩metros, limita el intercambio de conocimientos y dificulta la adaptaci贸n entre modalidades o la generalizaci贸n fuera del dominio.

Motivaci贸n

Existe una necesidad acuciante de modelos unificados que puedan manejar diversas condiciones visuales para la generaci贸n controlable. La consolidaci贸n de las capacidades en un 煤nico modelo mejorar铆a enormemente la eficiencia de la formaci贸n y el despliegue sin necesidad de m煤ltiples modelos espec铆ficos para cada tarea. Tambi茅n permite explotar las relaciones entre condiciones, como la profundidad y la segmentaci贸n, para mejorar la calidad de la generaci贸n.

Por ejemplo, la estimaci贸n de la profundidad depende en gran medida de la comprensi贸n de la segmentaci贸n sem谩ntica y el dise帽o global de la escena. Un modelo unificado puede aprovechar mejor estas relaciones en comparaci贸n con los modelos de tareas aisladas. Adem谩s, a帽adir nuevas modalidades a modelos individuales conlleva un reentrenamiento masivo, mientras que un enfoque consolidado podr铆a generalizarse sin problemas.

El principal reto consiste en superar el desajuste entre diversas condiciones como bordes, poses, mapas, etc. Cada una de ellas requiere operaciones especializadas en funci贸n de sus caracter铆sticas. Mezclar trivialmente diversas entradas en un modelo falla debido a este desajuste de caracter铆sticas. El objetivo es desarrollar una arquitectura unificada que generalice las tareas y adapte sus componentes condicionantes. Y lo que es m谩s importante, esto debe lograrse sin necesidad de un reentrenamiento exhaustivo cada vez que se ampl铆en las capacidades.

Methods

El UniControl propuesto introduce dos nuevos componentes para permitir la generaci贸n unificada controlable multitarea:

1. Adaptadores de Mezcla de Expertos. Adaptadores de mezcla de expertos: M贸dulos convolucionales paralelos, uno por tarea, que se adaptan a las caracter铆sticas visuales de cada condici贸n.

2. Task-Aware HyperNetwork: Modula din谩micamente los n煤cleos de convoluci贸n de un modelo base en funci贸n de las instrucciones de la tarea.

UniControl se ha entrenado en doce tareas distintas que abarcan bordes, regiones, mapas y mucho m谩s. La arquitectura general del modelo se mantiene constante en todas las tareas, mientras que los componentes de acondicionamiento se especializan.

Adaptadores-mezcla-de-expertos

Los adaptadores proporcionan v铆as espec铆ficas para que cada tarea procese sus caracter铆sticas visuales de forma adecuada. De este modo se supera el desajuste entre diversas condiciones que necesitan un tratamiento especializado.

Por ejemplo, una ruta de mapa de segmentaci贸n se centra m谩s en las relaciones sem谩nticas espaciales que en la geometr铆a 3D. Por el contrario, un adaptador de profundidad har谩 hincapi茅 en la disposici贸n global y las orientaciones de las superficies. Con adaptadores separados por tarea, UniControl puede extraer representaciones matizadas adaptadas a cada tipo de entrada.

Esta modularizaci贸n imita una mezcla de expertos. Cada adaptador act煤a como un 芦experto禄 especializado para su tarea. Las v铆as paralelas evitan los objetivos contradictorios que surgir铆an de un manejo enredado de todas las condiciones. El modelo compone din谩micamente las salidas de los adaptadores relevantes en funci贸n de la tarea de entrada.

Hiperred consciente de la tarea

La hiperred permite la modulaci贸n din谩mica de UniControl en funci贸n de la tarea especificada. Introduce instrucciones como 芦mapa de profundidad a imagen禄 y emite vectores de incrustaci贸n. Estas incrustaciones pueden especializar el modelo modulando sus n煤cleos de convoluci贸n en funci贸n de la tarea.

Por ejemplo, el condicionamiento de la profundidad puede modular las primeras capas para centrarse m谩s en el dise帽o global y la geometr铆a. Mientras tanto, la adaptaci贸n de los bordes puede enfatizar los detalles de mayor frecuencia en las etapas posteriores. La hiperred permite a UniControl aprender la comprensi贸n y el procesamiento especializados de cada tarea y, al condicionar las instrucciones, tambi茅n permite la generalizaci贸n a nuevas tareas en el momento de la prueba. Las relaciones aprendidas durante el entrenamiento multitarea permiten una modulaci贸n sensible incluso para tareas desconocidas. La composici贸n de incrustaciones de tareas conocidas relacionadas facilita la transferencia sin disparos.

Experimentos

UniControl se entren贸 en un conjunto de datos MultiGen-20M con m谩s de 20 millones de tripletas imagen-texto-condici贸n. Los principales resultados demostraron:

  • Supera a ControlNets de una sola tarea en la mayor铆a de las tareas, benefici谩ndose del entrenamiento conjunto. El dise帽o unificado mejora la eficiencia.
  • Se generaliza a tareas h铆bridas no vistas como profundidad+pose sin reentrenamiento mediante la composici贸n de adaptadores.
  • UniControl mantiene 1,4B par谩metros mientras que un conjunto de modelos de una sola tarea (es decir, Multi-ControlNet) requerir铆a m谩s de 4B par谩metros.
  • La transferencia de cero disparos a nuevas tareas como la coloraci贸n y el inpainting se consigue mezclando adaptadores de tareas relacionadas.
Comparaci贸n visual entre la ControlNet oficial o reimplementada para tareas espec铆ficas y nuestro modelo propuesto.
(a)-(b): Ejemplos de resultados de UniControl sobre condiciones h铆bridas (combinaci贸n no vista) con las palabras clave 芦fondo禄 y 芦primer plano禄 adjuntas en los avisos. (c)-(e): Ejemplos de resultados de UniControl en tres tareas no visibles (desdibujado, coloreado, repintado).

Demostraci贸n en v铆deo

Explore More

arXiv: https://arxiv.org/abs/2305.11147
C贸digo: https://github.com/salesforce/UniControl
Web: https://canqin001.github.io/UniControl-Page/
HF Space: https://huggingface.co/spaces/Robert001/UniControl-Demo
Contacto: cqin@salesforce.com

BannerGen: Biblioteca para la generaci贸n de pancartas multimodales

Antecedentes

Los dise帽os de maquetaci贸n gr谩fica son la base de la comunicaci贸n entre los dise帽adores de medios y su p煤blico objetivo. Desempe帽an un papel fundamental en la organizaci贸n de diversos elementos visuales, como texto renderizado, logotipos, im谩genes de productos, llamadas a la acci贸n (como botones) y texturas/im谩genes de fondo. La disposici贸n de estos elementos es el

protagonismo de la comunicaci贸n

Seguir leyendo

Desmitificando Light DOM y sus casos de uso 鈽侊笍

Desmitificando Light DOM y sus casos de uso 鈽侊笍

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.

Desmitificando Light DOM y sus casos de uso | Blog de desarrolladores de Salesforce

Light DOM es una funci贸n de Lightning Web Components que ha estado disponible de forma general en Lightning Experience, Experience Cloud, LWC OSS (c贸digo abierto) y todas las versiones de la aplicaci贸n m贸vil Salesforce desde Summer '23 .

Los componentes web Lightning, de forma predeterminada, se representan en DOM oculto , lo que proporciona una encapsulaci贸n y seguridad s贸lidas para sus componentes. Sin embargo, al mismo tiempo, evita el estilo global y bloquea las integraciones de terceros que introspeccionan el interior de sus componentes. Light DOM es una caracter铆stica que se puede habilitar de forma granular en componentes seleccionados, de modo que Shadow DOM no los afecte.

驴C贸mo funciona el DOM ligero?

Usemos un componente web Lightning muy simple como ejemplo.

holaCodey.html

<dx-code-block title language="html" code-block="

Hello Codey!

芦>

holaCodey.js

En el ejemplo anterior, el DOM oculto predeterminado del componente evita que una regla CSS definida en el componente principal o el host alcance el elemento <p> . Adem谩s, no permite que el c贸digo JavaScript externo al componente consulte el elemento <p> mediante las API de consulta del navegador.

Para activar el DOM ligero para un componente, debe especificar el renderMode ligero en su archivo JavaScript y la directiva de plantilla lwc:render-mode en la etiqueta <template> del componente. Ambos cambios son necesarios debido a la forma en que se compilan los componentes web Lightning.

holaCodey.html

<dx-code-block title language="html" code-block="

Hello Codey!

芦>

holaCodey.js

Cuando activa el DOM claro en un componente, el marcado del componente se adjunta al elemento anfitri贸n en lugar de a su 谩rbol de sombra. Luego puede acceder al marcado desde otros componentes de la p谩gina como cualquier otro contenido en el host del documento que no est茅 protegido por Shadow DOM.

Los componentes DOM ligeros permiten el uso de API de consulta de navegador est谩ndar como querySelector y querySelectorAll . En este caso, en lugar de usar this.template.querySelector , debes usar this.querySelector .

holaCodey.js

O m谩s simplemente, a menudo puedes usar la directiva lwc:ref en ambos casos (componentes DOM sombreados y claros) y omitir el querySelector .

holaCodey.html

<dx-code-block title language="html" code-block="

Hello Codey!

芦>

holaCodey.js

Cu谩ndo usarlo y cu谩ndo no usarlo

Light DOM es una opci贸n para cada componente individual. Sus efectos no se aplicar谩n a otros componentes a menos que tambi茅n opten por participar. Tenga en cuenta que los componentes base siempre se representan en DOM oculto.

Recomendamos habilitar DOM ligero si tiene bibliotecas que necesitan acceder a los componentes internos mediante API de consulta de navegador est谩ndar, aplicar estilos globales o necesita m谩s flexibilidad para implementar las mejores pr谩cticas de accesibilidad, siempre y cuando el componente no exponga datos confidenciales. Cubriremos estos casos de uso con m谩s profundidad en la siguiente secci贸n.

No recomendamos habilitar DOM ligero para un componente si ese componente aparece o funciona con datos confidenciales. El uso de DOM ligero elimina la encapsulaci贸n de DOM en sombra y expone los componentes al raspado de DOM. Por lo tanto, tenga en cuenta esta importante consideraci贸n.

Casos de uso habilitados por DOM ligero

Light DOM permite varios casos de uso que anteriormente no eran compatibles.

1) Soporte de bibliotecas que necesitan acceso a las partes internas de un componente

Light DOM permite el uso de bibliotecas que necesitan acceso a los componentes internos. Un buen ejemplo de esto son las bibliotecas de an谩lisis utilizadas en los sitios de Experience Cloud, como Google Analytics, ya que necesitan acceso a los componentes internos para obtener mejores resultados.

Podemos probar este caso de uso, incluido el componente helloCodey anterior, en un componente principal mascotChanger de la siguiente manera.

mascotChanger.html

<dx-code-block title language="html" code-block="
芦>

mascotChanger.js

Tenga en cuenta que, aunque el p谩rrafo consultado pertenece al componente helloCodey , podemos acceder a 茅l con this.template.querySelector , porque pertenece al DOM ligero secundario. Sin embargo, si el componente helloCodey no tuviera habilitado el DOM ligero, querySelector habr铆a devuelto null .

Tambi茅n puede acceder a los componentes internos del DOM ligero desde un script que se carga como un recurso est谩tico en la p谩gina, siempre y cuando todos los componentes ancestros est茅n habilitados para el DOM ligero. Por ejemplo, en un sitio LWR Experience Cloud, que es DOM completamente ligero, puede agregar un recurso est谩tico de JavaScript que encuentre los componentes internos helloCodey de la siguiente manera.

myJSResource.js

2) Implementaci贸n m谩s sencilla de componentes profundamente anidados

Otro ejemplo en el que esto puede resultar 煤til es implementar componentes complejos y profundamente anidados. En ese caso, es posible que prefiera tener un 煤nico componente DOM de sombra en el nivel superior y componentes DOM claros dentro para evitar gastos generales. Por ejemplo, un componente de tabla de datos personalizado puede tener solo un gran componente DOM de sombra alrededor de todo, en lugar de una sombra para cada fila y celda de la tabla.

Esta implementaci贸n facilita la consulta de sus propios elementos desde el componente de nivel superior de su jerarqu铆a y tambi茅n la implementaci贸n de la accesibilidad. Adem谩s, hay una ligera mejora en el rendimiento en algunos casos de uso al usar DOM claro sobre DOM sombreado, lo que se debe principalmente a la sobrecarga de simplemente crear nodos de sombra adicionales.

3) Estilo global

Light DOM tambi茅n facilita el estilo global, ya que permite que los estilos CSS caigan en cascada en el marcado del componente. Por ejemplo, un componente DOM ligero puede establecer un estilo que se carga y luego se aplica una vez para todos los componentes DOM ligeros de la p谩gina. La inyecci贸n de estilos globales a trav茅s de DOM ligero solo se admite en sitios de Experience Cloud, editor de contenido CMS o Sales Enablement.

Por ejemplo, definamos un componente colorChanger de la siguiente manera.

colorChanger.html

<dx-code-block title language="html" code-block="
芦>

colorChanger.js

colorChanger.css

El color de fondo azul se aplicar谩 a los p谩rrafos de todas las instancias del componente helloCodey en la p谩gina, ya que est谩 habilitado para DOM claro.

En la mayor铆a de los casos, no querr谩s que tu estilo se filtre a otros componentes. Eso todav铆a es posible para componentes DOM ligeros. Solo necesita colocar esas reglas de estilo en un archivo *.scoped.css , para que tengan como alcance el componente DOM ligero. El CSS con alcance est谩 escrito exactamente igual que el CSS normal, pero solo se aplicar谩 a ese componente sin filtrarse.

Tenga en cuenta que si las reglas de estilo se cargan globalmente como recursos est谩ticos en una p谩gina de Lightning Experience o un sitio de Experience Cloud, se les quitar谩 el alcance y se aplicar谩n tanto a los componentes DOM claros como tambi茅n a los componentes DOM de sombra, ya que la sombra sint茅tica no evitar谩 que se filtren. Esta es una limitaci贸n que se solucionar谩 una vez que la sombra nativa sea totalmente compatible (actualmente en Developer Preview ). Cuando la sombra nativa est谩 habilitada, solo los componentes habilitados para DOM claro heredar谩n los estilos globales.

4) Implementaci贸n m谩s flexible de las mejores pr谩cticas de accesibilidad

Light DOM permite que un componente haga referencia a la i d un elemento que vive en otro componente separado habilitado para Light DOM. Esto le permite vincular dos elementos utilizando los atributos i d y aria , lo que le otorga flexibilidad adicional para implementar las mejores pr谩cticas de accesibilidad en sus proyectos. Mejoremos nuestro componente mascotChanger para demostrar esto.

mascotChanger.html

<dx-code-block title language="html" code-block="

芦>

mascotChanger.js

mascotaNombreInput.html

<dx-code-block title language="html" code-block="

芦>

mascotaNombreEtiqueta.html

<dx-code-block title language="html" code-block="

芦>

Tenga en cuenta que Salesforce est谩 trabajando actualmente con el W3C para agregar nuevos est谩ndares, de modo que el DOM oculto nativo pueda participar en estos patrones de accesibilidad. Esto significa que, en el futuro, este caso de uso ligero de DOM no ser谩 necesario. Como parte de nuestros esfuerzos de accesibilidad, tambi茅n patrocinamos a Igalia para implementar parcialmente ARIA Element Reflection , que ahora es totalmente compatible con Safari y parcialmente con Chrome. Si quieres saber m谩s sobre este tema, echa un vistazo a nuestra propuesta cross-root-aria , el repositorio para el grupo de trabajo Modelo de objetos de accesibilidad .

La siguiente tabla resume los casos de uso y d贸nde se admiten.

Experiencia en la nube Experiencia rel谩mpago Aplicaciones m贸viles de Salesforce LWC OSS/LWR en Node.js*
Soporte de bibliotecas que necesitan acceso a las partes internas de los componentes. S铆 S铆 S铆 S铆
Implementaci贸n m谩s sencilla de componentes profundamente anidados S铆 S铆 S铆 S铆
Estilo global S铆 No No S铆
Implementaci贸n m谩s flexible de las mejores pr谩cticas de accesibilidad S铆 S铆 S铆 S铆

*Si se utiliza DOM de sombra nativo en lugar de sombra sint茅tica . La sombra nativa es la opci贸n predeterminada para LWC OSS y LWR en Node.js.

Otras Consideraciones

Cuando se trabaja con DOM ligero, hay algunas consideraciones adicionales a tener en cuenta, entre ellas:

  • Los eventos no se reorientan con DOM ligero. Lea m谩s en la gu铆a para desarrolladores .
  • No hay soporte de navegador para espacios fuera del DOM oculto, por lo que se emula. Esto implica que algunas funciones, como los enlaces de ciclo de vida, no est谩n disponibles en ellos. Eche un vistazo a la documentaci贸n para saber m谩s.
  • Por ahora, los componentes ligeros habilitados para DOM no se pueden empaquetar.

Conclusi贸n

En esta publicaci贸n de blog, revisamos qu茅 es el DOM ligero, los casos de uso que permite y las consideraciones a tener en cuenta para decidir qu茅 componentes habilitar谩n la funci贸n. Todos los ejemplos que se muestran en este blog se encuentran en un repositorio de GitHub que puedes probar t煤 mismo.

Para obtener m谩s informaci贸n sobre DOM ligero en la plataforma Salesforce, lea la documentaci贸n o, si est谩 trabajando fuera de la plataforma, lea la documentaci贸n OSS .

Si decide seguir adelante y transformar sus componentes DOM ocultos en componentes DOM claros, consulte esta herramienta creada por Salesforce Engineering para simplificar la migraci贸n.

Sobre el Autor

Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Puedes seguirla en Linkedin , Twitter o GitHub .

Obtenga las 煤ltimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a trav茅s de Slack o RSS.

A帽adir a holgura Suscr铆bete a RSS

Seguir leyendo

Introducci贸n a los agentes aut贸nomos 鈽侊笍

Introducci贸n a los agentes aut贸nomos 鈽侊笍

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.

Introducci贸n a los agentes aut贸nomos | Blog de desarrolladores de Salesforce

El panorama de la IA est谩 cambiando a un ritmo tan r谩pido que las tecnolog铆as futuristas como la IA aut贸noma ya est谩n mucho m谩s cerca de lo que piensas. Esto se debe a la forma en que los grandes modelos de lenguaje (LLM) est谩n comenzando a incorporarse en casi todas las formas en que interact煤a con las aplicaciones. Para los desarrolladores, esto supone un cambio en la forma en que abordamos la creaci贸n de aplicaciones, desde las formas en que las reunimos hasta la creaci贸n con una UX conversacional completamente nueva.

En esta publicaci贸n de blog, veremos c贸mo los agentes aut贸nomos incorporan la IA a la forma en que funcionan las aplicaciones y, al mismo tiempo, nos acercan a un mundo aut贸nomo.

驴Qu茅 son los agentes aut贸nomos?

En nuestro panorama tecnol贸gico, los agentes son sistemas avanzados que aprovechan el poder de los modelos ling眉铆sticos para razonar y tomar decisiones. Lo que los diferencia de otro bot o marco es el hecho de que los agentes pueden realizar tareas en su nombre utilizando herramientas y memoria.

Las herramientas son extensiones de las capacidades de un modelo de lenguaje, que cierran brechas en su conocimiento y le permiten interactuar con fuentes de datos externas o recursos computacionales. Con estas herramientas, un modelo de lenguaje puede obtener datos en tiempo real, ejecutar tareas y utilizar los resultados para informar sus acciones posteriores. Por ejemplo, si un modelo de lenguaje conoce informaci贸n solo hasta una fecha determinada, las herramientas pueden proporcionarle informaci贸n m谩s actualizada de la web, bases de datos u otras fuentes externas.

La memoria proporciona a los agentes la capacidad de recordar interacciones pasadas, lo que puede ser esencial para la continuidad de las tareas y el aprendizaje de acciones anteriores. Esta memoria puede ser de corta duraci贸n, centr谩ndose en interacciones recientes, o de largo plazo, recordando eventos o patrones pasados importantes que son relevantes para situaciones actuales.

Juntos, estos elementos transforman un modelo de lenguaje en un agente que no s贸lo puede comprender y generar texto, sino tambi茅n actuar sobre esa comprensi贸n en contextos del mundo real. Dichos agentes pueden ejecutar soluciones de forma aut贸noma para los usuarios, pero tambi茅n pueden integrar la intervenci贸n humana, especialmente en escenarios donde existen incertidumbres o excepciones.

驴C贸mo funcionan los agentes?

Se han creado muchos marcos para respaldar el avance de los agentes, siendo algunos de los m谩s populares AutoGPT y LangChain . Generalmente, los agentes siguen un patr贸n similar: el marco ReAct para razonar y actuar en modelos ling眉铆sticos .

Este marco consta de una serie de pasos:

  1. El usuario proporciona informaci贸n.
  2. El agente 鈥減iensa鈥 en la respuesta adecuada
  3. El agente determina la acci贸n, selecciona la herramienta relevante y decide la entrada para esa herramienta.
  4. La herramienta ofrece un resultado.
  5. El proceso recorre los pasos 2 a 4 hasta que el agente determina que la tarea est谩 completa

Este proceso es el que empieza a hacer aut贸nomo al agente. Al confiar en el LLM para pensar en la respuesta y determinar las acciones apropiadas necesarias, act煤a por s铆 solo para crear el resultado deseado.

Usando LangChain como ejemplo, digamos que queremos crear una aplicaci贸n que permita a un cliente gestionar sus pedidos. Primero, podr铆amos darle a la aplicaci贸n acceso a nuestra base de datos de pedidos, base de datos de clientes y API de socios de env铆o. Luego, configurar铆amos una serie de herramientas a las que puede acceder la aplicaci贸n para consultar datos, actualizarlos y utilizar IA generativa para redactar una respuesta.

Este agente de gesti贸n de pedidos dispone de seis herramientas que puede utilizar 鈥渄entro de su dominio de conocimiento鈥:

  1. Query Orders es una herramienta que puede consultar pedidos desde una base de datos a trav茅s de una API conectada a una base de datos PostgreSQL.
  2. Update Order es una herramienta que puede actualizar un 煤nico pedido desde una base de datos a trav茅s de una API conectada a una base de datos PostgreSQL.
  3. Manage Tracking Info es una herramienta que puede gestionar un env铆o a trav茅s de una API proporcionada por una empresa de env铆o
  4. Get Customer es una herramienta que puede consultar datos de clientes desde una API conectada a un sistema CRM
  5. Update Customer es una herramienta que puede actualizar los datos de los clientes a trav茅s de una API conectada a un sistema CRM
  6. Compose Response es una herramienta que puede pasar indicaciones a un LLM y devolver una respuesta.

Veamos ahora c贸mo un agente podr铆a manejar casos de uso relacionados con la gesti贸n de pedidos. Por ejemplo, 驴c贸mo puede el agente ayudar a un usuario a obtener una actualizaci贸n sobre el estado de su pedido?

  1. El usuario solicita la informaci贸n m谩s reciente de su pedido a trav茅s de un chatbot
  2. El agente 鈥減iensa鈥 y determina la acci贸n correcta que debe tomar
    1. El agente primero utiliza la herramienta Consultar cliente para consultar los detalles del cliente.
    2. Luego, el agente utiliza la herramienta Consultar pedidos para consultar pedidos desde una base de datos.
    3. Luego, el agente utiliza la herramienta Administrar informaci贸n de seguimiento para obtener la informaci贸n de env铆o m谩s reciente de su socio de env铆o.
    4. Luego, el agente toma ambos resultados y utiliza la herramienta Redactar respuesta para generar una respuesta.
  3. La respuesta se devuelve al usuario.

En este escenario, el agente pudo tomar las herramientas que le proporcionamos y determinar el pedido y los par谩metros que necesitan para crear el resultado correcto para el usuario, en este caso, toda su informaci贸n de pedido y env铆o. Lo que es importante tener en cuenta aqu铆 es que el usuario puede hacerle al agente cualquier pregunta sobre su pedido y el agente puede usar IA para razonar y usar las herramientas en el orden que necesite.

Como desarrollador, su funci贸n se centra m谩s en crear las herramientas y permitir que el agente administre la orquestaci贸n.

Mantener a un humano informado

El desaf铆o 茅tico con los agentes aut贸nomos es que no hay ning煤n ser humano involucrado cuando se trata de ejecutar las acciones. En Salesforce, estamos comprometidos con el uso 茅tico de la IA y queremos dejarlo claro en nuestras implementaciones de este tipo de tecnolog铆a. Ciertas reglas exigen que una persona sea responsable de tomar la decisi贸n final en asuntos con consecuencias legales o de impacto comparable, incluida la contrataci贸n laboral, la aprobaci贸n de pr茅stamos, las admisiones educativas y las sugerencias en justicia penal. Esta insistencia en la supervisi贸n humana, en lugar de decisiones automatizadas, tiene como objetivo identificar y reducir mejor los posibles sesgos y da帽os.

驴Qu茅 significa esto para el futuro de Salesforce?

En Dreamforce este a帽o, les dimos una idea de c贸mo ser谩 el futuro de Salesforce y la IA aut贸noma en la plataforma Einstein 1. Einstein Copilot es nuestra respuesta a un asistente conversacional de IA generativa basado en agentes que utiliza habilidades y acciones para guiar a los usuarios a trav茅s de la interacci贸n con Salesforce. Esto introduce un paradigma de desarrollo completamente nuevo para Salesforce, uno en el que estamos creando piezas de funcionalidad m谩s peque帽as que pueden ser orquestadas por Einstein Copilot.

驴C贸mo se compara Einstein Copilot con un agente de IA?

Si bien existen varias similitudes entre Copilot y un marco de agente de c贸digo abierto, la verdadera diferencia es el acceso de Copilot a toda la plataforma de metadatos de Salesforce. No s贸lo eso, sino que el alcance es mucho mayor. En lugar de agentes individuales, tienes muchas habilidades , y en lugar de herramientas tienes acciones .

Por ejemplo, si desea actualizar un pedido utilizando Copilot, deber谩 crear una habilidad de gesti贸n de pedidos. Con otros marcos, necesitar铆as crear un agente completo para la gesti贸n de pedidos.

Cuando se trata de acciones, usted tiene el poder de la Plataforma Einstein 1 detr谩s de usted. Podr谩 utilizar Apex, Flow, las numerosas API de plataforma, SOQL y mucho m谩s para brindarle a su habilidad la capacidad de reunir datos desde cualquier lugar. Tambi茅n tiene acceso directo a los datos de toda la plataforma.

Estudio Einstein Copiloto

Estas habilidades y acciones se re煤nen en Einstein Copilot Studio , que le permite ensamblar flujos, indicaciones, Apex y m谩s en colecciones de funcionalidades.

Actualmente existen tres herramientas dentro de Einstein Copilot Studio:

  • Prompt Builder le permite crear plantillas de mensajes utilizando campos de combinaci贸n de registros y datos proporcionados por Flow y Data Cloud.
  • Skills Builder le permite ensamblar acciones, como m茅todos invocables de Apex, flujos y llamadas de API de MuleSoft, y otorg谩rselas a un agente.
  • Model Builder le permite traer sus propios modelos de IA a Salesforce

Juntos, podr谩n crear agentes potentes en Salesforce que puedan usar su c贸digo para responder preguntas y ayudar a los usuarios.

La capa de confianza de Einstein

Una gran ventaja de Einstein Copilot es Einstein Trust Layer. Trust Layer proporciona un entorno seguro para el procesamiento de datos a trav茅s de un modelo de lenguaje grande, lo que garantiza que los datos del usuario permanezcan confidenciales al enmascarar informaci贸n de identificaci贸n personal, verificar la salida en busca de contenido inapropiado y garantizar que no haya persistencia de datos fuera de Salesforce.

Trust Layer se ejecuta a trav茅s de un proceso de varios pasos para garantizar que los datos est茅n fundamentados y enmascarados antes de ser procesados por un proveedor de LLM externo, y proporciona una puerta de enlace segura para interactuar con dichos LLM. Una vez que se ha generado una respuesta, la verifica en busca de contenido t贸xico y desenmascara los datos antes de present谩rselos al usuario. Puede ver m谩s de cerca la capa de confianza en nuestra publicaci贸n de blog Dentro de la capa de confianza de Einstein .

Resumen

La IA aut贸noma se hace realidad mucho m谩s cerca a trav茅s de agentes, lo que marca el comienzo de una nueva era de tecnolog铆a en la que el razonamiento y la toma de decisiones se potencian con herramientas y memoria. Einstein Copilot de Salesforce introduce este enfoque impulsado por agentes en la plataforma, ofreciendo un asistente de IA conversacional que gu铆a a los usuarios, aprovecha los vastos metadatos de Salesforce y garantiza la integridad de los datos a trav茅s de Einstein Trust Layer. Este cambio transformador significa no s贸lo una evoluci贸n en las interacciones de IA, sino tambi茅n una promesa de experiencias seguras, eficientes y fluidas para los usuarios de Salesforce.

Sobre el Autor

Stephan Chandler-Garc铆a es el director de contenido estrat茅gico de Salesforce. Ha estado en el ecosistema de Salesforce durante m谩s de 10 a帽os como cliente, socio e ISV. Puede encontrar a Stephan en persona en un grupo comunitario Trailblazer o en una de nuestras conferencias en todo el mundo. Alternativamente, s铆galo en X (Twitter) o GitHub .

Obtenga las 煤ltimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a trav茅s de Slack o RSS.

A帽adir a holgura Suscr铆bete a RSS

Seguir leyendo

Habilitaci贸n de MFA en MuleSoft para canalizaciones de CI/CD mediante acciones de GitHub 鈽侊笍

Habilitaci贸n de MFA en MuleSoft para canalizaciones de CI/CD mediante acciones de GitHub 鈽侊笍

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.

Habilitaci贸n de MFA en MuleSoft para canalizaciones de CI/CD mediante acciones de GitHub | Blog de desarrolladores de Salesforce

La mayor铆a de las cuentas empresariales de Anypoint Platform requieren que utilice mecanismos de autenticaci贸n multifactor (MFA) para mayor seguridad. Esto significa que, adem谩s de su nombre de usuario y contrase帽a habituales, necesitar谩 un paso adicional para autenticarse (por ejemplo, una aplicaci贸n de autenticaci贸n en su tel茅fono).

Cuando utiliza canalizaciones de CI/CD para sus aplicaciones Mule y MFA est谩 habilitado en su cuenta, la configuraci贸n para autenticarse usando el complemento Mule Maven ser谩 diferente que si solo estuviera usando su nombre de usuario y contrase帽a. Hay m谩s pasos que debe seguir desde su cuenta de Anypoint Platform para habilitar sus canales de CI/CD con este m茅todo de autenticaci贸n.

En esta publicaci贸n, aprender谩 c贸mo configurar una canalizaci贸n de GitHub Actions para que funcione con su cuenta habilitada para MFA desde Anypoint Platform.

Requisitos previos

Crear una aplicaci贸n conectada

Dado que usar el nombre de usuario y la contrase帽a de su plataforma Anypoint no es suficiente para autenticarse en el proceso, debe crear una aplicaci贸n conectada para usar sus credenciales (ID/Secreto). Para crearlo, vaya a su cuenta de Anypoint Platform y navegue hasta Gesti贸n de acceso > Aplicaciones conectadas > Crear aplicaci贸n .

Asigne un nombre a su aplicaci贸n para identificarla de otras que pueda crear. Por ejemplo, github-actions . Seleccione el tipo La aplicaci贸n act煤a por s铆 sola y haga clic en el bot贸n Agregar 谩mbitos .

Seleccione los siguientes 10 谩mbitos.

  • Desarrollador del centro de dise帽o
  • Ver entorno
  • Ver organizaci贸n
  • Perfil
  • Administrador de organizaci贸n de CloudHub
  • Crear aplicaciones
  • Eliminar aplicaciones
  • Descargar aplicaciones
  • Leer aplicaciones
  • Leer servidores

Haga clic en Siguiente . Seleccione su grupo empresarial y haga clic en Siguiente . Seleccione su entorno (por ejemplo, Sandbox) y haga clic en Siguiente . Revise que los alcances sean correctos y haga clic en Agregar alcances . Haga clic en Guardar .

Una vez creada la aplicaci贸n, aseg煤rese de copiar tanto el ID como el Secreto . Los utilizar谩 en la configuraci贸n de la canalizaci贸n como m茅todo de autenticaci贸n.

Configura tus secretos de GitHub Actions

Vaya a su repositorio de GitHub. Haga clic en la pesta帽a Configuraci贸n > Secretos y variables > Acciones > Nuevo secreto del repositorio . En el campo de nombre, agregue CONNECTED_APP_CLIENT_ID . En el campo secreto, agregue la identificaci贸n real que acaba de copiar en el paso anterior. Repita este paso para crear otro secreto con el secreto real que copi贸 en el paso anterior. Utilice el nombre CONNECTED_APP_CLIENT_SECRET .

Crear una canalizaci贸n de CI/CD

De vuelta en el c贸digo de su aplicaci贸n Mule, cree una carpeta .github en el nivel ra铆z. Dentro de esta carpeta, cree otra carpeta llamada workflows . Dentro de esta carpeta, cree un archivo build.yml con el siguiente contenido: mule-mfa-cicd-build.yml . Tenga en cuenta que la sucursal main se utiliza en la l铆nea 5. Si su sucursal tiene un nombre diferente, aseg煤rese de actualizar esta configuraci贸n.

En este archivo, describimos los pasos para generar el archivo JAR de nuestra aplicaci贸n Mule e implementarlo en nuestra cuenta de Anypoint Platform usando GitHub Actions. Observe que estamos usando los secretos creados previamente en el 煤ltimo paso para pasarlos a nuestro proyecto a trav茅s de Maven. Aqu铆 declaramos dos variables de entorno Java ( client.id y client.secret ) para copiar las credenciales de nuestra aplicaci贸n de los secretos de GitHub para que el archivo pom.xml pueda usarse m谩s adelante.

Modifica tu configuraci贸n de Maven

En su proyecto Mule, abra su archivo pom.xml. Localice el complemento org.mule.tools.maven en project/build/plugins . Agregue la siguiente configuraci贸n a este complemento.

<dx-code-block title language="xml" code-block=" org.mule.tools.maven mule-maven-plugin ${mule.maven.plugin.version} true https://anypoint.mulesoft.com 4.4.0 mulesoft-mfa-cicd Sandbox MICRO us-east-2 1 true ${client.id} ${client.secret} client_credentials
芦>

Vuelva a verificar estas configuraciones en caso de que necesite actualizarlas para que coincidan con su caso de uso. Por ejemplo, muleVersion , applicationName , environment o region . Usaremos los campos connectedAppClientId y connectedAppClientSecret para pasar las variables Java que declaramos anteriormente en la configuraci贸n de Maven.

Es importante que no codifique las credenciales de la aplicaci贸n conectada en este archivo por razones de seguridad. Es por eso que mantenemos los valores como secretos de GitHub. Recuerda que puedes acceder a nuestro repositorio de ejemplo si necesitas comparar tu c贸digo con el nuestro.

ejecutar la tuber铆a

Una vez que todas sus configuraciones est茅n listas, confirme y env铆e sus cambios al repositorio remoto. Esto activar谩 la canalizaci贸n en GitHub. Puede ver el proceso haciendo clic en la pesta帽a Acciones de su repositorio de GitHub.

Una vez completado el proceso, su aplicaci贸n Mule se implementar谩 en Runtime Manager. Tenga en cuenta que el archivo JAR contendr谩 el hash de confirmaci贸n en su nombre.

Conclusi贸n

Habilitar canalizaciones de CI/CD es importante para automatizar tareas repetitivas. En lugar de implementar manualmente una aplicaci贸n Mule cada vez que hay un cambio en el c贸digo, podemos crear canalizaciones para que realicen estas tareas por nosotros. Este fue un ejemplo simple que utiliza solo una sucursal y un entorno, pero puede conectar otras sucursales a otros entornos en Anypoint Platform. Por ejemplo, dev , qa , prod , etc.

En esta publicaci贸n, aprendimos c贸mo implementar autom谩ticamente una aplicaci贸n Mule en CloudHub cuando usamos la autenticaci贸n multifactor en nuestra cuenta de Anypoint Platform porque la mayor铆a de las cuentas empresariales tienen esta configuraci贸n habilitada. Sin embargo, cuando solo usa una cuenta de prueba gratuita, no necesita crear una aplicaci贸n conectada si no usa MFA en su cuenta. Puede utilizar su nombre de usuario y contrase帽a de Anypoint Platform para iniciar sesi贸n.

Hay muchas cosas que puede automatizar al utilizar canalizaciones de CI/CD para sus aplicaciones Mule. Puedes ejecutar pruebas automatizadas antes de implementar tu aplicaci贸n Mule, por ejemplo. 驴Se te ocurren otras tareas repetitivas que puedas automatizar en tus canalizaciones?

Nota: Las versiones iniciales de la canalizaci贸n se basan en el siguiente repositorio creado por Archana Patel: arch-jn/github-actions-mule-cicd-demo .

Recursos adicionales

Sobre el Autor

Alex Mart铆nez form贸 parte de la comunidad de MuleSoft antes de unirse a MuleSoft como desarrollador defensor. Fund贸 ProstDev para ayudar a otros profesionales a aprender m谩s sobre la creaci贸n de contenido. En su tiempo libre, encontrar谩s a Alex jugando juegos de Nintendo o Playstation y escribiendo rese帽as sobre ellos. Siga a Alex en LinkedIn o en la comunidad Trailblazer .

Obtenga las 煤ltimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a trav茅s de Slack o RSS.

A帽adir a holgura Suscr铆bete a RSS

Seguir leyendo

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 2 鈽侊笍

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 2 鈽侊笍

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.

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 2 | Blog de desarrolladores de Salesforce

La CLI (interfaz de l铆nea de comandos) de Salesforce es la piedra angular del desarrollo de Salesforce y, como cualquier otra herramienta, evoluciona con el tiempo. Esta publicaci贸n es la segunda de una serie de blogs de dos partes sobre sf (v2), la nueva y mejorada CLI de Salesforce. En la Parte 1 , echamos un vistazo a las novedades de sf (v2) y, en esta parte final, exploraremos los nuevos comandos de estilo sf y patrones de banderas y compartiremos c贸mo puede migrar desde comandos de estilo sfdx y patrones basados en banderas. en nuestra experiencia con aplicaciones de muestra . Si bien la migraci贸n puede parecer intimidante a primera vista, compartiremos algunos consejos sobre c贸mo facilitar la transici贸n.

Conozca los comandos de estilo sf

Si ha estado usando la CLI durante alg煤n tiempo, probablemente comenz贸 a notar una serie de advertencias en los comandos que usa con frecuencia, como este:

sfdx force:source:push
Warning: We plan to deprecate this command in the future. Try using the "project deploy start" command instead.禄>

Estos cambios son el resultado del trabajo continuo en Salesforce CLI Unification que comenz贸 hace varios lanzamientos (m谩s detalles en la primera parte de esta serie).

Desde entonces, cada vez que instala la CLI de Salesforce, obtiene los dos ejecutables ( sfdx y sf ). Puede usar cualquiera de estos ejecutables ya que la mayor铆a de los comandos son interoperables, pero le recomendamos que comience a usar sf en su trabajo diario para prepararse para el futuro.

Debido a que sf cubre m谩s que solo el desarrollo de la plataforma central, ofrece una nueva taxonom铆a de comandos simplificada que refleja el flujo de trabajo de un desarrollador t铆pico en lugar de las marcas, productos o funciones de Salesforce.

Un ejemplo pr谩ctico de esto es el comando sf org create . Con este nuevo comando, la intenci贸n es m谩s clara: llamas a la misma base de comandos con scratch , sandbox , shape , snapshot o user , mientras que en sfdx ten铆as que usar una combinaci贸n de diferentes comandos ( force:org:create , force:user:create ) y flags ( --type=scratch o --type=sandbox ) para obtener el mismo resultado.

Otra caracter铆stica interesante de sf es que incluye m谩s comandos visuales e interactivos, como la creaci贸n de organizaciones con la capacidad de reanudar operaciones de larga duraci贸n en caso de tiempo de espera.

Migrar al ejecutable sf

Adem谩s de simplemente cambiar el nombre del ejecutable de sfdx a sf , hay una serie de cambios que se aplican a los comandos CLI al actualizar sus proyectos. La documentaci贸n de la CLI de Salesforce proporciona una buena descripci贸n general de estos cambios, pero destacaremos los que nos afectaron durante la actualizaci贸n de nuestras aplicaciones de muestra.

Comandos sfdx comunes y sus equivalentes sf

En primer lugar, el tema force se elimin贸 de la mayor铆a de los comandos, lo cual es una buena noticia, ya que acorta los comandos. El otro cambio importante es que los temas, comandos y subcomandos, que antes estaban separados por dos puntos como en sfdx force:org:list , ahora est谩n separados por espacios, como en sf org list .

Mirando m谩s de cerca los comandos que usamos a diario cuando trabajamos en aplicaciones de muestra, aplicamos los siguientes cambios:

Comando sfdx heredado Comando sf equivalente Migraci贸n Comentarios
sfdx force:org:delete -p -u recipes sf org delete scratch -p -o recipes Se debe agregar el subcomando scratch .
El indicador de la organizaci贸n de destino cambia de -u a -o .
sfdx force:org:create -s -f config/project-scratch-def.json -d 30 -a recipes sf org create scratch -d -f config/project-scratch-def.json -y 30 -a recipes Se debe agregar el subcomando scratch .
El indicador "asignar organizaci贸n predeterminada" cambia de -s a -d .
El indicador de duraci贸n de la organizaci贸n borrador cambia de -d a -y .
sfdx force:source:push sf project deploy start Este es un cambio significativo, pero el nuevo comando funciona para todos los formatos de proyecto (fuente o metadatos).
Anteriormente, necesitaba comandos distintos.
sfdx force:user:permset:assign -n recipes sf org assign permset -n recipes El tema cambia de user a org y cambia el orden de los subcomandos.
sfdx force:data:tree:import -p data/data-plan.json sf data import tree -p data/data-plan.json
sfdx force:org:open -p lightning/n/Hello sf org open -p lightning/n/Hello
sfdx force:apex:test:run -c -r human -w 20 sf apex test run -c -r human -w 20

Si est谩 buscando otros comandos, la documentaci贸n de CLI proporciona una lista completa de comandos sfdx con sus equivalentes sf . Cada vez que reemplace un comando, aseg煤rese de revisar sus banderas en busca de cambios, especialmente si usa las banderas de formato corto (un solo car谩cter) ( -o en lugar de --target-org por ejemplo). Puede ejecutar cualquier comando con el indicador -h o --help para obtener su descripci贸n.

Automatice parte de la migraci贸n con expresiones regulares

鈩癸笍 Edici贸n del 27 de julio de 2023: en lugar de expresiones regulares, puede usar un script de migraci贸n como se documenta aqu铆 .

Cuando analizamos la migraci贸n de nuestros proyectos de aplicaciones de muestra , sab铆amos que necesitar铆amos automatizar parte del proceso, ya que hab铆a cerca de 1700 referencias a sfdx en m谩s de 200 archivos. Para obtener los resultados m谩s precisos aqu铆, aseg煤rese de agregar un espacio despu茅s de sfdx en su t茅rmino de b煤squeda y excluya la carpeta node_modules de su b煤squeda, como hicimos aqu铆:

Comenzar con una b煤squeda es un buen primer paso. Le ayuda a darse cuenta de que tendr谩 que migrar sus comandos en un par de lugares, como:

  • Scripts de integraci贸n continua
  • Guiones de desarrollo local
  • Documentaci贸n

Luego puede ir m谩s all谩 experimentando con una b煤squeda y reemplazo de expresiones regulares (RegEx) en VS Code. Este enfoque es una forma r谩pida de iniciar la migraci贸n. Funciona bien para la b煤squeda, pero no es perfecto como reemplazo, ya que algunos comandos requieren actualizaciones manuales. En cualquier caso, siempre pruebe el resultado de sus cambios antes de enviarlos a producci贸n.

Comience ejecutando esta b煤squeda RegEx y reemplace:

Tenga en cuenta el uso de tres grupos de captura encerrados entre par茅ntesis en la expresi贸n de b煤squeda y representados por signos de d贸lar seguidos de un n煤mero en la expresi贸n de reemplazo. Los grupos de captura le permiten retener din谩micamente ciertos valores (palabras como temas, comandos y subcomandos en nuestro caso) mientras realiza cambios en el resto de la l铆nea (reemplazando los separadores de dos puntos con espacios en nuestro caso).

Si desea obtener m谩s informaci贸n sobre este RegEx u otros, le recomiendo que consulte regex101.com , ya que proporciona una explicaci贸n de la sintaxis y un campo de juego para probar expresiones.

Aqu铆 hay un ejemplo de la entrada y salida en VS Code de la expresi贸n anterior (no olvide activar el modo RegEx como lo indica la flecha roja):

Notar谩 que esta primera ronda de b煤squeda y reemplazo no es perfecta ya que obtiene algunos caracteres de espacio adicionales en el texto reemplazado. Puede arreglar esto f谩cilmente ejecutando una segunda operaci贸n RegEx de b煤squeda y reemplazo como esta:

Una vez que ejecute este 煤ltimo RegEx, todav铆a hay un par de cambios manuales que necesitar谩 para operar. Como vimos anteriormente en la tabla de equivalencia de comandos, estas son las cosas clave a tener en cuenta:

  • Algunos comandos usan diferentes temas y subcomandos. Por ejemplo, sf user assign permset es incorrecto: user debe ser reemplazado por org .
  • Algunas banderas necesitan ser cambiadas. Por ejemplo, sf org create scratch -s -f config/project-scratch-def.json -d 30 -a recipes es incorrecto: el indicador -d debe reemplazarse por -y y el indicador -s debe reemplazarse por -d .

Afortunadamente, la mayor铆a de estos cambios no son demasiado dif铆ciles de aplicar y puede migrar con bastante rapidez a los comandos de estilo sf . Lo dejaremos con una vista de diferencias de GitHub que resume todos los cambios que fueron necesarios para migrar una de nuestras aplicaciones de muestra.

palabras de cierre

Eso es un resumen de esta breve descripci贸n general de la migraci贸n de los comandos sfdx -style a los comandos sf -style. Vislumbr贸 el beneficio del ejecutable sf y su nueva sintaxis. Esperamos que se beneficie de nuestra experiencia de migraci贸n y de nuestros consejos al actualizar sus proyectos.

Recursos

Sobre el Autor

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido t茅cnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, rob贸tica y VR. S铆galo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

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

Seguir leyendo

Capture firmas electr贸nicas con componentes web Lightning en dispositivos m贸viles 鈽侊笍

Capture firmas electr贸nicas con componentes web Lightning en dispositivos m贸viles 鈽侊笍

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.

Capture firmas electr贸nicas con componentes web Lightning en dispositivos m贸viles | Blog de desarrolladores de Salesforce

驴Alguna vez ha necesitado recopilar una firma electr贸nica sobre la marcha? Tal vez necesite verificar un pago, asegurarse de que se procesen transacciones exitosas o incluso actualizar los registros despu茅s de que se haya completado un servicio. Una firma electr贸nica es 煤til como paso de verificaci贸n de muchas maneras. Permitir que los trabajadores de campo capturen firmas sobre la marcha es uno de los casos de uso m贸vil m谩s comunes que escuchamos de nuestros clientes. Por lo tanto, me complace compartir que hemos creado un componente web Lightning de muestra que le permite capturar firmas y adjuntarlas a un registro de Salesforce. Si bien creamos esto para casos de uso m贸vil, no hay nada que le impida usarlo tambi茅n en computadoras de escritorio con pantalla t谩ctil. Trabajar con el LWC de captura de firmas Veamos un ejemplo en acci贸n. Dreamhouse es una aplicaci贸n de muestra de bienes ra铆ces ficticia que se puede usar para web y dispositivos m贸viles. Los agentes de bienes ra铆ces, cuando est谩n en el proceso de cerrar un trato, deben poder capturar el nombre y la firma del comprador para asociarlos con la propiedad que se vendi贸. Para hacer esto, los desarrolladores de Dreamhouse pueden utilizar un nuevo componente LWC de muestra que hemos creado. 隆Vamos a sumergirnos en 茅l!

Configuraci贸n de la configuraci贸n de LWC

Para nuestro requisito Dreamhouse anterior, debemos poder recopilar el nombre y la informaci贸n de la firma del LWC. Esto se puede hacer a trav茅s de tres pasos.

  1. Configure su dise帽o HTML LWC
  2. Configura tus estilos LWC
  3. Conecte su interfaz con las API de JavaScript de LWC

隆Vamos a sumergirnos en m谩s detalles sobre los pasos!

1. Configure su dise帽o HTML de LWC

Para comenzar, vaya a la secci贸n NameAndSignatureCapture del directorio de muestra de LWC en GitHub. Luego, copie el componente signaturePad en la carpeta lwc de su proyecto. Despu茅s de copiar el c贸digo del componente de muestra, puede hacer referencia al componente escribiendo <c-signature-pad> y establecer sus atributos para configurarlo.

<dx-code-block title language="html" code-block="

芦>

2. Configura tus estilos LWC

A continuaci贸n, los estilos de la interfaz tambi茅n se pueden ajustar para satisfacer sus necesidades. Para nuestra demostraci贸n de Dreamhouse, importemos una nueva familia de fuentes. Para hacer esto, simplemente configure los estilos para su componente LWC como se ve a continuaci贸n.

Tambi茅n puede personalizar el dise帽o del LWC a su gusto haciendo referencia a la clase adecuada y los atributos HTML.

3. Conecte su interfaz con las API de LWC

Por 煤ltimo, debemos asegurarnos de que la firma sea capturada correctamente por el LWC. A los efectos de nuestro ejemplo Dreamhouse, queremos poder guardar la firma proporcionada por el usuario final.

El SignaturePad LWC que proporcionamos se puede configurar para capturar datos y personalizar la interfaz a trav茅s de las API de JavaScript y sus atributos HTML correspondientes. Para hacer esto, simplemente invoque los m茅todos API y con茅ctelos a sus atributos HTML correspondientes en el <c-signature-pad> . Consulte la lista a continuaci贸n para el atributo HTML y las asignaciones de la API de JavaScript

Funcionalidad Descripci贸n Atributo HTML = "tipo" API de JavaScript (Tipo)
Habilitar firma de nombre Permite a los usuarios finales escribir su nombre y devuelve un texto para firmar generado autom谩ticamente a medida que los usuarios escriben su nombre. enable-name-signing=鈥漛ooleano鈥 enableNameSigning(booleano)
Habilitar dibujo de firma Le permite solicitar a los usuarios finales que dibujen su propia firma personalizada en el panel de firma proporcionado. habilitar-firma-dibujo = "booleano" enableSignatureDrawing (booleano)
Grosor de trazo caracter铆stico Personalice el grosor del trazo del l谩piz en las capturas de firma electr贸nica. trazo-grosor = "entero" grosor del trazo (entero)
Color de la pluma de firma Personalice el color de tinta del bol铆grafo que se proporciona al usuario final. bol铆grafo-color=鈥滳adena鈥 plumaColor(Cadena)
Color de la almohadilla de firma Personalice el color del pad de firma que ve el usuario final. pad-color=鈥滳adena鈥 padColor(Cadena)
Color de fuente de la firma Personaliza la fuente de la firma. fuente-color = "Cadena" font.color=Cadena
Configuraci贸n de una etiqueta de campo de entrada Establezca una etiqueta para el nombre del campo de entrada. nombre-entrada-etiqueta=鈥滳adena鈥 nombreInputLabel=鈥滳adena鈥
Configuraci贸n de una etiqueta de almohadilla Establezca un nombre para la etiqueta sobre el panel de firma. nombre-entrada-etiqueta=鈥滳adena鈥 nombreInputLabel=鈥滳adena鈥
Guardar firma Permite guardar una firma autogenerada y/o personalizada. onclick={guardar firma} pad.getSignature()
Firma clara Permite eliminar la firma anterior si es necesario volver a hacerlo. onclick={clarar Firma} pad.clearSignature()

Tenga en cuenta que tambi茅n agregamos un m茅todo clearSignature y saveSignature para permitir borrar y guardar firmas respectivamente. Puede hacer esto configurando sus propios m茅todos de JavaScript que se conectan a pad.setSignature() y pad.clearSignature() . Estos se pueden conectar a los componentes <lightning-button> . Veamos un ejemplo de esto a continuaci贸n.

Ahora que tenemos los m茅todos de JavaScript identificados, veamos algunos de ellos en acci贸n. Esto se puede hacer usando el siguiente JavaScript.

{ if (font.family === "Great Vibes" && font.status === "unloaded") { // Ensure that the font is loaded so that signature pad could use it. // If you are using a different font in your project, don’t forget // to update the if-condition above to account for it. font.load(); } }); } saveSignature() { const pad = this.template.querySelector("c-signature-pad"); if (pad) { const dataURL = pad.getSignature(); if (dataURL) { // At this point you can consume the signature, for example by saving // it to disk or uploading it to a Salesforce org/record. // Here we just preview it in an image tag. this.imgSrc = dataURL; } } } clearSignature() { const pad = this.template.querySelector("c-signature-pad"); if (pad) { pad.clearSignature(); } this.imgSrc = null; }
} 芦>

Tenga en cuenta que agregamos un m茅todo clearSignature que se invoca cuando se hace clic en el bot贸n Borrar, as铆 como un m茅todo saveSignature que se invoca cuando se hace clic en el bot贸n Guardar.

Algo a destacar sobre el componente es que responde completamente a los cambios de tama帽o y orientaci贸n. Tambi茅n tenga en cuenta que el componente de captura de firmas ha sido dise帽ado para funcionar en la web, el panel t谩ctil o el l谩piz para dispositivos m贸viles o tabletas.

Adem谩s, Signature Capture LWC es compatible con la web y los dispositivos m贸viles y es la solicitud m谩s com煤n utilizada en la aplicaci贸n m贸vil Salesforce , as铆 como en nuestra aplicaci贸n Mobile Test Harness . Eche un vistazo a la demostraci贸n a continuaci贸n para ver c贸mo se ejecuta en acci贸n.

Conclusi贸n

Esperamos que haya disfrutado de esta publicaci贸n de blog y que est茅 ansioso por usar las capacidades de captura de firma en su LWC para dispositivos m贸viles. Para empezar:

  • 隆Buceo en! Consulte nuestro repositorio GitHub de ejemplos m贸viles de LWC para ver y probar los ejemplos de LWC de las capacidades de captura de firmas en acci贸n. Luego, una vez que est茅 familiarizado con los flujos…
  • 隆Personal铆zalo! Tome las muestras de Signature Capture LWC y ampl铆elas para personalizarlas seg煤n las necesidades de su negocio.
  • 隆Alcanzar! Si tiene alguna pregunta, comentario o idea, puede conectarse con nosotros en nuestra comunidad Salesforce Mobile Trailblazer .

Para obtener m谩s informaci贸n sobre nuestras ofertas m贸viles, consulte los siguientes enlaces:

Sobre el Autor


Ashwin Nair es un Product Manager en Salesforce que se enfoca en Salesforce Mobile. Actualmente est谩 trabajando en Mobile Platform Experiences y ha estado en el espacio de desarrollo web y m贸vil durante m谩s de siete a帽os. S铆guelo en LinkedIn .

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

Seguir leyendo

Cargue datos mediante programaci贸n con la API de ingesta 鈽侊笍

Cargue datos mediante programaci贸n con la API de ingesta 鈽侊笍

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.

Cargue datos mediante programaci贸n con la API de ingesta | Blog de desarrolladores de Salesforce

Salesforce Data Cloud ofrece varios conectores predefinidos para la importaci贸n de datos. Estos le permiten conectar otra organizaci贸n de Salesforce, una instancia de Marketing Cloud, almacenamientos de datos como Amazon S3 o cualquier otra fuente admitida por MuleSoft Salesforce Data Cloud Connector . Para conectarse a un sistema de terceros, puede utilizar la API de ingesta .

La API de ingesta es una interfaz RESTful que facilita la carga de datos mediante programaci贸n en Data Cloud. Admite patrones de interacci贸n masiva y de transmisi贸n. El patr贸n de transmisi贸n usa JSON como su formato, cargando datos en micro lotes a trav茅s de la API REST. El patr贸n masivo, por otro lado, emplea el formato CSV y carga datos usando trabajos.

En esta publicaci贸n de blog, analizaremos c贸mo configurar el conector de la API de ingesta y comenzar a cargar datos mediante programaci贸n utilizando los patrones Streaming y Bulk.

Cu谩ndo usar la ingesti贸n Streaming vs Bulk

Ingesti贸n de transmisi贸n Ingesti贸n a granel
Al actualizar peque帽os microlotes de registros casi en tiempo real Al mover grandes vol煤menes de datos en un programa diario, semanal o mensual
Cuando se utilizan sistemas de origen de datos que se basan en arquitecturas de transmisi贸n modernas Al usar sistemas heredados, donde solo puede exportar datos durante las horas de menor actividad
Al crear eventos de captura de datos modificados Al usar una nueva organizaci贸n de Data Cloud que desea rellenar con 30, 60 o m谩s de 90 d铆as de datos
Al consumir datos de webhooks

Para configurar la API de ingesta, deber谩 seguir cuatro pasos de requisitos previos:

  • Crear un conector de API de ingesta
  • Crear e implementar un flujo de datos
  • Crear una aplicaci贸n conectada
  • Solicitar un token de acceso a la nube de datos

Veamos el proceso de creaci贸n y configuraci贸n de un conector de ingesta para comenzar a cargar datos en Data Cloud.

Creaci贸n de un conector de API de ingesta

Supongamos que tiene acceso a Data Cloud. Para conectar una nueva fuente de API de ingesta mediante el conector de API de ingesta, vaya a Configuraci贸n de nube de datos y seleccione API de ingesta .

Aqu铆 encontrar谩 todos los conectores disponibles en su organizaci贸n. Para crear uno nuevo, haga clic en Conectar y proporcione un nombre. Para nuestra aplicaci贸n de muestra, trabajaremos con una empresa de energ铆a solar ficticia. Estamos interesados en recibir eventos de m茅tricas relacionadas con el rendimiento energ茅tico de sus paneles solares.

Una vez que se haya creado el conector, necesitaremos decirle a Data Cloud qu茅 tipo de datos estamos esperando. Para esto, necesitaremos cargar un archivo de esquema utilizando la especificaci贸n OpenAPI. Este archivo de esquema tiene requisitos espec铆ficos, as铆 que aseg煤rese de consultar la documentaci贸n para obtener m谩s informaci贸n.

A continuaci贸n se muestra un ejemplo del archivo de esquema que cargaremos, que representa un solar_panel_event . Los campos clave a tener en cuenta incluyen event_id , que ser谩 煤nico para cada evento y luego se asignar谩 en Data Cloud como clave principal. Otro es customer_id , que nos ser谩 煤til para mapear el evento con un cliente de nuestra organizaci贸n. Finalmente, date_time representa la hora del evento.

panel_solar_event.yaml

Una vez que carguemos el esquema, podremos obtener una vista previa de sus campos y tipos de datos, y luego guardarlo en nuestro conector.

Ahora que nuestro conector tiene un esquema, podemos decir que est谩 creado. Sin embargo, a煤n no est谩 listo para comenzar a recibir datos. Necesitamos crear un flujo de datos para este prop贸sito.

Nota: Dado que los esquemas pueden evolucionar con el tiempo, tambi茅n puede usar la interfaz del conector de la API de ingesta para actualizar el esquema y agregar nuevos campos a su objeto de datos seg煤n sea necesario.

Creaci贸n e implementaci贸n de un flujo de datos

Ya tenemos listo nuestro conector API de ingesta. Ahora es el momento de establecer una conexi贸n para comenzar a importar datos. Para eso, necesitamos crear un flujo de datos . Una vez que el flujo de datos est谩 activo, podemos comenzar a ingerir datos en Data Cloud y almacenarlos como un objeto de Data Lake.

Para crear un nuevo flujo de datos, vaya a su pesta帽a en la aplicaci贸n Data Cloud, haga clic en Nuevo , seleccione Ingestion API y luego haga clic en Siguiente .

Nota: La opci贸n API de ingesta est谩 deshabilitada si no tiene ninguna fuente de ingesta conectada.

A continuaci贸n, ver谩 los diferentes objetos que est谩n asociados con su esquema. En nuestro caso, seleccione el objeto solar_panel_event y haga clic en Siguiente .

Al crear un flujo de datos, deber谩 seleccionar una categor铆a o tipo de datos en ese flujo de datos. Hay tres categor铆as: Compromiso , Perfil y Otro .

Compromiso Un conjunto de datos que representa un compromiso basado en series de tiempo, como un evento, interacci贸n con el cliente, interacci贸n web, etc.

Cuando se selecciona, el men煤 desplegable Campo de hora del evento aparece en la interfaz de usuario.

Perfil Un conjunto de datos que representa:

鈥 Una lista de consumidores con identificadores, como identificaciones de consumidores, direcciones de correo electr贸nico o n煤meros de tel茅fono

鈥 Una lista de empresas o cuentas con ID de cuenta

鈥 Una lista de empleados o cualquier otra poblaci贸n por la que desee segmentar o utilizar como poblaci贸n inicial del segmento

Otro Un conjunto de datos que no es un compromiso o un perfil, como informaci贸n de productos o tiendas.

Para nuestro ejemplo, dado que estamos planeando recibir eventos, seleccionaremos Compromiso . Mapearemos el event_id como la clave principal y la date_time como el campo de hora del evento.

Ahora que nuestros datos est谩n configurados, es hora de implementarlos. Despu茅s de revisar los flujos de datos que se van a crear, hagamos clic en Implementar para activarlos.

Ahora, echemos un vistazo a la p谩gina de detalles del flujo de datos. Aqu铆 podemos ver el objeto Data Lake que se ha creado en Data Cloud. Puede identificar un objeto de Data Lake por su sufijo __dll . Desde esta misma interfaz, puede comenzar a asignar sus datos a los objetos de su organizaci贸n para crear objetos de modelo de datos (parte del proceso de armonizaci贸n de Data Cloud). Sin embargo, no cubriremos ese tema en esta publicaci贸n de blog, pero tenemos un excelente video con Danielle Larregui que le muestra c贸mo hacerlo.

Nuestro conector API de ingesta est谩 listo para comenzar a recibir datos de sistemas de terceros. Para confirmar, regresemos a la interfaz de configuraci贸n de la API de ingesta, donde puede ver que el estado del conector es En uso .

Creaci贸n de una aplicaci贸n conectada

La API de ingesta admite todos los flujos de OAuth 2.0 admitidos por otras API REST de Salesforce. Para cargar datos mediante la API de ingesta, su aplicaci贸n conectada requiere los siguientes 谩mbitos:

脕mbitos de OAuth requeridos

cdp_ingest_api Acceda y administre sus datos de API de ingesta de nube de datos
API Accede y administra tus datos
refresco_token, acceso_sin conexi贸n Realizar solicitudes en su nombre en cualquier momento

Adem谩s, nuestra aplicaci贸n conectada requerir谩 un certificado digital. Para crear uno, puede ejecutar el siguiente comando usando el comando openssl :

Este comando crear谩 dos archivos, salesforce.key , que es la clave privada, y salesforce.crt , que es la clave p煤blica.

Nota : si no tiene instalado el comando openssl , puede instalarlo desde el sitio web de OpenSSL .

Para saber c贸mo crear una aplicaci贸n conectada, consulte la documentaci贸n oficial.

Solicitud de un token de acceso a la nube de datos

Para este ejemplo, usaremos el flujo de soporte JWT de OAuth 2.0 . Primero, necesitaremos crear un JWT (JSON Web Token) para solicitar un token de acceso.

Para crear un JWT, configurar谩 el encabezado para usar el algoritmo RSA256 .

Encabezado JWT

Luego, configure las siguientes notificaciones, teniendo en cuenta algunas notificaciones importantes:

  • iss: la clave de consumidor de OAuth/ID de cliente de su aplicaci贸n conectada
  • sub: el nombre de usuario de su organizaci贸n de Data Cloud
  • exp: el tiempo de vencimiento del token, expresado como una marca de tiempo de 茅poca

reclamos JWT

Nota : La 茅poca de Unix (o la hora de Unix o la hora POSIX o la marca de tiempo de Unix) es la cantidad de segundos que han transcurrido desde el 1 de enero de 1970 (medianoche UTC/GMT).

A continuaci贸n, deber谩 utilizar el algoritmo JWT para obtener el token completo y verificado.

Pero seamos honestos, no queremos crear un JWT manualmente. Para esto, utilizaremos el sitio web JWT.io para simplificar el proceso. Aseg煤rese de que el mensaje Firma verificada aparezca a continuaci贸n, lo que indica que nuestro JWT es v谩lido.

O puede crearlo program谩ticamente usando el lenguaje de programaci贸n de su elecci贸n. M谩s adelante en este art铆culo, compartir茅 un pr谩ctico script de Node.js para generar el token de acceso a la nube de datos.

Antes de que podamos autenticarnos usando el JWT que generamos, debemos aprobar este consumidor. Puede hacerlo abriendo la siguiente URL en su navegador.

<dx-code-block title language code-block="https://login.salesforce.com/services/oauth2/authorize?response_type=token&client_id=&redirect_uri=禄>

Y luego, inicie sesi贸n y permita el acceso:

Ahora que hemos aprobado nuestro JWT, necesitamos autenticarnos. Este es un proceso de dos pasos. Primero, necesitamos obtener un token de acceso usando el JWT. Para hacer esto, realicemos una solicitud POST HTTP con la siguiente informaci贸n.

<dx-code-block title language code-block="POST https://login.salesforce.com/services/oauth2/token
Content-Type : x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&assertion=禄>

Nota: aseg煤rese de reemplazar <JWT> con el token que creamos anteriormente.

Esta solicitud nos dar谩 un token de acceso central y la URL de la instancia de Data Cloud, utilizando nuestra aplicaci贸n conectada. Como se muestra en el alcance , se nos otorgan los alcances cdp_ingest_api y api .

A continuaci贸n, debemos cambiar el token de acceso principal por un token de nube de datos. Para hacer eso, realicemos la siguiente solicitud POST.

<dx-code-block title language code-block="POST /services/a360/token Content-Type : x-www-form-urlencoded grant_type=urn:salesforce:grant-type:external:cdp &subject_token= &subject_token_type=urn:ietf:params:oauth:token-type:access_token禄>

Ahora, estamos autenticados. El token de acceso a la nube de datos resultante es lo que usaremos para realizar solicitudes a la API de ingesta.

Para simplificar el proceso, he creado un script Node.js. Crea el JWT y realiza la autenticaci贸n en dos pasos. Para usarlo, necesitar谩 la clave privada que cre贸 anteriormente, as铆 como un archivo de configuraci贸n similar al siguiente.

config.js

Adem谩s, instale la dependencia jsonwebtoken desde npm ejecutando:

credenciales.js

console.log(auth)) .catch((err) => console.error(err)); 芦>

El m茅todo generateAccessToken devolver谩 el objeto de autenticaci贸n de Data Cloud, incluido el access_token y la instance_url necesarios para comenzar a ingerir datos en Data Cloud.

Ingesta de datos

Tenemos toda la informaci贸n necesaria para comenzar a ingerir datos en la nube de datos. Esto se puede lograr utilizando los patrones Streaming o Bulk.

Transmisi贸n

Para comenzar a transmitir datos en el conector de Ingesti贸n de nube de datos, primero obtenga el nombre del conector y el nombre del objeto de la configuraci贸n del conector de la API de Ingesti贸n. Para hacer esto, puede realizar una solicitud POST como la siguiente.

<dx-code-block title language code-block="POST https:///api/v1/ingest/sources/Solar_Panel_Events/solar_panel_event
Authorization: Bearer
Content-Type: application/json
{ "data": [ {"event_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479","customer_id": "003R00000123456789","battery": 75.2,"dc_current": 9.8,"dc_voltage": 35.6,"mpp_energy": 120.5,"ac_voltage": 220.1,"ac_current": 5.3,"date_time": "2023-07-07T10:15:30.05Z"} ] }禄>

Nota : aseg煤rese de reemplazar <token de acceso a la nube de datos> y <url de instancia> con los valores respectivos que obtuvo del proceso de autenticaci贸n.

Si todo va bien, recibir谩s la siguiente respuesta:

Esto indica que nuestros datos han sido aceptados con 茅xito.

Nota : tambi茅n puede validar los datos con el esquema antes de enviarlos agregando /actions/test al punto final de la API.

A granel

La ingesti贸n masiva implica varios pasos, lo que agrega un nivel de complejidad al proceso:

  • Crear un trabajo: este paso implica crear un trabajo para especificar el tipo de objeto de los datos que se procesan y la operaci贸n que se realizar谩, que puede ser upsert o delete.
  • Cargar los datos en CSV: Despu茅s de crear el trabajo, el siguiente paso es cargar los datos en formato CSV. El archivo CSV debe contener los datos que se procesar谩n, con cada fila representando un registro y las columnas que contienen los valores de campo.
  • Indicar la preparaci贸n de los datos: una vez que se cargan los datos, deber谩 indicar que los datos est谩n listos para ser procesados.
  • Cerrar o cancelar el trabajo: despu茅s de procesar los datos, puede cerrar el trabajo para marcarlo como completado o cancelar el trabajo si es necesario.

Para obtener m谩s informaci贸n sobre c贸mo usar los puntos de conexi贸n masivos, puede consultar la documentaci贸n oficial .

Puede consultar los datos entrantes utilizando el Explorador de datos en Data Cloud. All铆, seleccionar谩 el objeto Data Lake correspondiente al conector de ingesta que cre贸 anteriormente.

Si desea probarlo usted mismo, siempre puede utilizar nuestra colecci贸n Postman de desarrolladores de Salesforce, que incluye las API de Salesforce Data Cloud .

Conclusi贸n

Ahora, est谩 listo para comenzar a cargar datos mediante programaci贸n en Data Cloud mediante la API de ingesta. Siguiendo los pasos anteriores, puede conectarse sin problemas a varias fuentes de datos e importar datos en tiempo real o en masa, y comenzar a aprovechar el poder y la magia de Salesforce Data Cloud.

Adem谩s, si prefiere aprender de un video, mi colega Aditya ha creado un video 煤til que explica lo que hemos cubierto en esta publicaci贸n de blog . Aseg煤rese de ver tambi茅n los otros excelentes videos de la serie Data Cloud Decoded .

Recursos

Sobre los autores

Juli谩n Duque es un defensor principal de desarrolladores en Salesforce, donde se enfoca en Node.js, JavaScript y desarrollo backend. Le apasiona la educaci贸n y el intercambio de conocimientos y ha estado involucrado en la organizaci贸n de comunidades tecnol贸gicas y de desarrolladores desde 2001.

S铆galo @julianduque en Threads, @julian_duque en Twitter, @julianduque.co en Bluesky social o LinkedIn .

Aditya Naag Topalli es una defensora de desarrolladores l铆der certificada 14 veces en Salesforce. Capacita e inspira a los desarrolladores dentro y fuera del ecosistema de Salesforce a trav茅s de sus videos, seminarios web, publicaciones de blog y contribuciones de c贸digo abierto, y tambi茅n habla con frecuencia en conferencias y eventos en todo el mundo. S铆galo en Twitter o LinkedIn y vea sus contribuciones en GitHub .

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

Seguir leyendo

Explore la API de la plataforma de eventos con la colecci贸n de cartero extendida 鈽侊笍

Explore la API de la plataforma de eventos con la colecci贸n de cartero extendida 鈽侊笍

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.

Explore la API de la plataforma de eventos con la colecci贸n extendida de Postman | Blog de desarrolladores de Salesforce

Para una gran cantidad de nuestros clientes, la plataforma Salesforce sirve como la piedra angular de sus sistemas de informaci贸n y, por lo tanto, debe integrarse perfectamente con una amplia gama de sistemas de terceros. Entre las muchas opciones de integraci贸n disponibles se encuentra la plataforma de eventos de Salesforce.

En esta publicaci贸n, repasaremos brevemente la plataforma de eventos y luego exploraremos la nueva plataforma de eventos y las solicitudes de API que se agregaron a la colecci贸n de API de la plataforma de Salesforce en Postman. Tambi茅n aprender谩 c贸mo introdujimos la capacidad de configurar Event Relays y canales personalizados con Postman.

Acerca de la plataforma de eventos de Salesforce

Event Platform consta de diferentes funciones que le permiten crear arquitecturas basadas en eventos gracias a Salesforce Event Bus.

Tipos de eventos

El bus de eventos de Salesforce admite dos tipos principales de eventos casi en tiempo real: eventos de plataforma y eventos de cambio.

Los eventos de la Plataforma permiten la comunicaci贸n dentro de la Plataforma y con sistemas externos. Estos eventos se pueden enviar y recibir con c贸digo personalizado o herramientas declarativas, como Flow. Hay eventos de plataforma est谩ndar con campos predefinidos y eventos personalizados que puede crear con campos personalizados.

Los eventos de cambio son enviados autom谩ticamente por la Plataforma cada vez que se crea, modifica, elimina o recupera un registro. Cada evento de cambio est谩 vinculado a un objeto de Salesforce est谩ndar o personalizado, y los campos de evento coinciden con los de su objeto principal.

Los eventos de plataforma y los eventos de cambio se pueden enviar y recibir gracias a una selecci贸n de dos tecnolog铆as de transmisi贸n: la biblioteca CometD heredada o la API Pub/Sub basada en gRCP m谩s moderna . Independientemente de la tecnolog铆a o el tipo de evento, publica o se suscribe a eventos a trav茅s de canales dedicados.

Canales personalizados

Puede definir un canal personalizado para agrupar mensajes de eventos del mismo tipo (eventos de plataforma o eventos de cambio) en una transmisi贸n. Por ejemplo, puede combinar eventos de cambio de cuenta, contacto y pedido en un solo canal personalizado CustomerUpdates__chn . Despu茅s de suscribirse a este canal, recibir谩 notificaciones sobre cambios en cualquiera de esos tres objetos.

Tenga en cuenta que los canales personalizados son compatibles con eventos de plataforma personalizados, pero no con eventos de plataforma est谩ndar.

Adem谩s de la capacidad de agrupar varios eventos, los canales personalizados desbloquean dos funciones: filtrado de eventos y cambio de enriquecimiento de eventos.

El filtrado de eventos le permite configurar expresiones que filtran los eventos que se env铆an en un canal personalizado. Por ejemplo, podr铆a crear un canal espec铆fico como UkLargeCustomerUpdates__chn que filtra las actualizaciones de la cuenta, donde el pa铆s de facturaci贸n es el Reino Unido y los ingresos anuales superan los 500k. El uso del filtrado de eventos ayuda a simplificar el c贸digo del lado del cliente, pero tambi茅n ayuda a evitar los l铆mites m谩ximos de suscriptores simult谩neos .

Los canales personalizados de Change Data Capture tambi茅n otorgan la capacidad de declarar campos enriquecidos . Cuando se trabaja con eventos de cambio, solo se pasan los valores de campo actualizados en los datos del evento. Esta optimizaci贸n puede ser problem谩tica en ciertas situaciones, por ejemplo, cuando desea sincronizar con un sistema de terceros con una ID externa. En este caso, el ID externo no cambia, por lo que nunca forma parte de los datos del evento de cambio. Afortunadamente, el enriquecimiento de campos le permite declarar un canal personalizado en el que puede especificar campos que siempre se pasar谩n en el contexto de eventos de cambio.

Relevo de eventos

Event Relay le permite integrar perfectamente los eventos en tiempo real de Salesforce con Amazon Web Services (AWS). Gracias a Event Relay, los eventos de la plataforma y los eventos de Change Data Capture se env铆an a Amazon EventBridge a trav茅s de canales y los componentes de AWS pueden consumirlos directamente. Los componentes de AWS tambi茅n pueden publicar eventos de plataforma de forma nativa.

Consulte esta publicaci贸n de Event Relay para obtener m谩s informaci贸n.

Antes del lanzamiento de Summer '23, Event Relay solo se pod铆a configurar a trav茅s de las API. Ahora, hay una interfaz de usuario dedicada en Configuraci贸n. La 煤nica pieza que a煤n necesita crear a trav茅s de la API de herramientas o la API de metadatos son los canales personalizados.

Actualizaciones de Salesforce Event Platform para la colecci贸n Postman

En junio, actualizamos la colecci贸n de API de Salesforce Platform para Postman para incluir solicitudes para interactuar con Event Platform . Si no est谩 familiarizado con Postman o la colecci贸n de API de plataforma, eche un vistazo al proyecto Quick Start: Connect Postman to Salesforce Trailhead para comenzar.

Canales personalizados

Nuestras nuevas solicitudes de Postman son un gran ahorro de tiempo ya que, a partir del lanzamiento de Summer '23, los canales personalizados solo se pueden configurar a trav茅s de metadatos o llamadas a la API de herramientas y no se pueden modificar directamente en la configuraci贸n de Salesforce.

Hemos introducido una serie de solicitudes para realizar operaciones de creaci贸n, lectura, actualizaci贸n y eliminaci贸n (CRUD) en canales personalizados y los dos tipos de metadatos relacionados: PlatformEventChannel (consulte los documentos ) y PlatformEventChannelMember (consulte los documentos ).

A pesar de sus nombres, estos tipos de metadatos funcionan tanto para eventos de plataforma como para canales personalizados de eventos de cambio. Las 煤nicas diferencias son que el valor del atributo ChannelType debe establecerse en event para eventos de plataforma o data para eventos de cambio, y que el atributo EnrichedFields solo est谩 disponible para canales personalizados de eventos de cambio.

Publicar eventos de la plataforma

Hemos agregado una serie de ejemplos para eventos de plataforma de publicaci贸n. Movimos la solicitud de la API REST existente a la nueva subcarpeta Publicar eventos de la plataforma y agregamos dos ejemplos para publicar varios eventos en una sola solicitud con la API compuesta y la API SOAP.

Configuraci贸n de retransmisi贸n de eventos

La carpeta Configuraci贸n de retransmisi贸n de eventos es donde se encuentran la mayor铆a de las solicitudes nuevas. Estas nuevas solicitudes son fundamentales para configurar un relevo de eventos:

  • Operaciones CRUD en Credenciales con nombre que se introdujeron en Summer '23
  • Operaciones CRUD en la configuraci贸n de Event Relay
  • Comentarios de retransmisi贸n de eventos de consultor铆a

esquema de eventos

Agregamos dos nuevas solicitudes para recuperar el esquema de un evento de plataforma, ya sea desde su ID o desde su nombre . Estas solicitudes son 煤tiles para recuperar los campos de los eventos.

Lo que nos depara la colecci贸n Postman

Invertimos continuamente en nuestra colecci贸n de API de plataforma y buscamos agregar soporte para la suscripci贸n a eventos de la API Pub Sub. CometD no ser谩 compatible, ya que es una biblioteca que requiere un servidor de aplicaciones, pero estamos considerando conectarnos con la API Pub/Sub basada en gRPC .

Postman ha lanzado una serie de funciones para interactuar con las API de gRPC desde el a帽o pasado. Gracias a esto, podemos conectarnos a la API de Pub/Sub, suscribirnos a eventos y recibirlos. Sin embargo, lamentablemente no podemos decodificar su carga 煤til, ya que est谩 comprimida por la plataforma de Salesforce por motivos de rendimiento. Estamos esperando una nueva caracter铆stica de Postman que nos permita cargar una biblioteca (Apache Avro) para decodificar las cargas 煤tiles de eventos cuando se reciben.

palabras de cierre

Eso es todo para nuestra breve descripci贸n general de Event Platform y las 煤ltimas incorporaciones a la colecci贸n de API de Salesforce Platform. Gracias al crecimiento de esta caja de herramientas, puede comenzar r谩pidamente a explorar y configurar Event Platform.

Si disfruta de nuestro contenido de Postman, h谩ganoslo saber. Tambi茅n puede echar un vistazo a nuestras otras colecciones de c贸digo abierto y contribuir .

Recursos

Sobre el Autor

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido t茅cnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, rob贸tica y VR. S铆galo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

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

Seguir leyendo

Comenzando con Acciones Externas 鈽侊笍

Comenzando con Acciones Externas 鈽侊笍

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.

Introducci贸n a las acciones externas | Blog de desarrolladores de Salesforce

Tuve excelentes conversaciones con clientes y socios en Connections este a帽o, as铆 como a trav茅s de la comunidad Trailblazer de MC Account Engagement , con respecto a las acciones externas de Account Engagement . Segu铆a surgiendo una pregunta: "驴C贸mo empiezo con las acciones externas?" En esta publicaci贸n, aprender谩 qu茅 son las acciones externas, c贸mo configurarlas y c贸mo probarlas. Adem谩s, sintonice una pr贸xima sesi贸n de codeLive el 20 de julio a las 10 a. m. PT , donde realizar茅 una demostraci贸n de codificaci贸n en vivo para mostrarle c贸mo crear una acci贸n externa y responder sus preguntas.

驴Qu茅 son las Acciones Externas?

Las acciones externas son una parte clave deMarketing App Extensions , ya que proporcionan una forma de desencadenar una acci贸n en un sistema externo. El otro componente es Actividades externas, que proporciona una forma de activar la automatizaci贸n de la participaci贸n de la cuenta en funci贸n de un evento de participaci贸n que ocurre en un sistema externo. Piense en ello como las dos caras de una moneda, las acciones se activan, las actividades se activan. Combinadas, forman una aplicaci贸n de extensibilidad de automatizaci贸n para un servicio, por lo que puede tener una extensi贸n de aplicaci贸n de marketing por SMS, por ejemplo.

Por este motivo, las acciones externas se empaquetan en una extensi贸n de aplicaci贸n de marketing. En el momento de escribir este art铆culo, las actividades externas a煤n no se pueden empaquetar, pero eventualmente tambi茅n se empaquetar谩n en la extensi贸n de la aplicaci贸n de marketing.

Si desea conectar una aplicaci贸n de terceros para automatizar la ejecuci贸n de una acci贸n de prospecto en ese sistema, entonces esta es definitivamente la funci贸n para usted. En esta publicaci贸n, profundizaremos en el lado de la acci贸n externa de las extensiones de aplicaciones de marketing.

驴Cu谩les son algunos buenos casos de uso para las acciones externas?

Bueno, si me preguntan, 隆dir铆a absolutamente todo! Puede que est茅s pensando: 鈥溌laro, todo el mundo dice eso!鈥. Sin embargo, las posibilidades que desbloquean las acciones externas son realmente amplias. Si alguna vez ha dicho: "Me gustar铆a que cuando un prospecto llegue a este paso, yo pudiera <insertar deseo aqu铆>", entonces deseaba una acci贸n externa.

Puede usar una acci贸n externa para registrarse en un seminario web de Zoom desde Account Engagement (consulte el ejemplo en GitHub ). Tambi茅n puede usar una acci贸n externa para enviar un mensaje SMS a trav茅s de Twilio, que presentamos en una publicaci贸n de blog anterior . Incluso puedes usar acciones externas con webhooks; Us茅 la funci贸n de captura de webhook de Zapier para crear una acci贸n externa que usaba un cliente potencial como desencadenante de un Zap.

驴Qu茅 constituye una acci贸n externa?

Una acci贸n externa consta de una acci贸n invocable de Apex, metadatos de la extensi贸n de la aplicaci贸n de marketing, metadatos de una acci贸n externa y una forma de gestionar la autenticaci贸n. Los metadatos para las extensiones de la aplicaci贸n de marketing y las actividades externas conectan la acci贸n invocable con la participaci贸n de la cuenta. Los componentes que se usar谩n para la autenticaci贸n pueden variar seg煤n el tipo de autenticaci贸n que admita el servicio. Como OAUTH 2.0 es bastante com煤n, el componente que uso m谩s es un proveedor de autorizaci贸n y Credenciales con nombre . Las credenciales con nombre tambi茅n facilitan la administraci贸n de la autenticaci贸n en mi c贸digo, y el sistema hace la mayor parte del trabajo.

驴Qu茅 habilidades necesito para trabajar con Acciones Externas?

Con una gran flexibilidad viene la complejidad, por lo que necesitar谩 algunas habilidades en ciertas 谩reas para construir con 茅xito una acci贸n externa. Los siguientes son temas clave de los que necesitar谩 una comprensi贸n b谩sica antes de abordar su propia acci贸n externa.

SLDC de Salesforce

Comprender el ciclo de vida del desarrollo de Salesforce es muy importante para tener 茅xito en general. Recomiendo aprender Visual Studio y el proceso de implementaci贸n de la CLI. No se necesita maestr铆a, solo lo b谩sico para poder empezar. Trailhead ofrece una ruta para ayudarlo a configurar su espacio de trabajo .

Documentaci贸n de la API REST

El patr贸n del que hablamos en este art铆culo se basa en las API REST JSON. Para comprender lo que es posible y recopilar las entradas pertinentes para una acci贸n externa, debe poder leer una especificaci贸n API. Consulte las especificaciones de la API de Account Engagement y Twilio .

Implementaci贸n de Apex y Apex

Apex Invocable Actions es mi forma preferida de codificar mis acciones externas, ya que me permite la mayor flexibilidad y control. Recomendar铆a, como m铆nimo, familiarizarse con la compilaci贸n y la implementaci贸n de c贸digo Apex mediante el proyecto Quick Start: Apex de Trailhead. Para obtener m谩s informaci贸n, encontr茅 煤til el trailmix de Apex Basics . No necesita convertirse en un experto, pero al menos debe estar lo suficientemente informado como para poder leer el c贸digo de la aplicaci贸n de referencia .

Flujo de Salesforce (opcional)

No necesita conocer Salesforce Flow para aprender Acciones externas. Sin embargo, es una herramienta de prueba muy poderosa para sus acciones externas, lo que facilita la creaci贸n de una interfaz de usuario para controlar las entradas durante la prueba. Si est谩 familiarizado con Engagement Studio, Flow ser谩 bastante f谩cil ya que tiene muchos de los mismos conceptos. Utilic茅 la ruta Crear flujos con Flow Builder para ponerme al d铆a. Otro beneficio de aprender Salesforce Flow es que abre la puerta a la creaci贸n de todo tipo de automatizaci贸n de procesos comerciales.

驴C贸mo debo configurar mi entorno de desarrollador?

Es importante configurar sus entornos de desarrollador y contar con las herramientas adecuadas antes de comenzar con las acciones externas. Yo uso las siguientes herramientas.

  • Postman : utilizo Postman para explorar una nueva API, por lo que puedo aprender a realizar una solicitud y responder de forma sencilla. Postman tambi茅n proporciona una manera f谩cil de generar ejemplos.
  • CLI de Visual Studio + Salesforce 鈥 Uso Visual Studio para codificar mi acci贸n invocable y la implemento en mi organizaci贸n de desarrollador. La mayor铆a de las veces, es simplemente copiar y pegar un ejemplo anterior y editarlo para mi nuevo caso de uso.
  • Entorno de desarrollador/sandbox : este es un entorno seguro para construir, desarrollar y empaquetar sus acciones externas. Tenga en cuenta que, en el momento de escribir este art铆culo, solo admitimos paquetes de primera generaci贸n (1GP) , por lo tanto, no configure su organizaci贸n de desarrollador como Dev Hub.
  • Salesforce Flow : personalmente me gusta usar ScreenFlows para probar una acci贸n invocable. Es bueno poder controlar completamente la entrada antes de conectarla a acciones externas y programas ES.
  • Consola de desarrollador de Salesforce : esto le permite ver r谩pidamente el c贸digo o ver los registros de sus pruebas de flujo de pantalla.

Patr贸n b谩sico para llamadas API REST con acciones externas

Si bien puede codificar acciones externas de muchas maneras, existe un patr贸n b谩sico que recomiendo al realizar llamadas a la API REST.

Las dos etiquetas que debe recordar son InvocableVariable , que define las entradas y salidas de la acci贸n invocable, e InvocableMethod , que es el m茅todo a llamar al ejecutar la acci贸n invocable. Puede ver c贸mo se aplican en el siguiente c贸digo de ejemplo.

Normalmente creo dos clases, una para la entrada y otra para la solicitud de API. Separar mi c贸digo en dos clases facilita jsonificar la carga 煤til. Mi clase de entrada contiene todos los campos de variables invocables que la acci贸n invocable necesita en la entrada. Mi solicitud de API contiene los campos de la solicitud JSON.

InvocableMethod construir谩 la carga 煤til a partir de la entrada, la convertir谩 a JSON y luego la agregar谩 a la solicitud HTTP. A continuaci贸n, configura el resto de la solicitud HTTP agregando la URL, los encabezados y el m茅todo. Finalmente, realiza la llamada a la API y comprueba si el resultado es correcto o, de lo contrario, genera un error 煤til para diagnosticar un problema.

Consideraci贸n importante: el marco de acci贸n externa espera que se devuelva un error si hay una falla en lugar de detectar el error y luego devolver el 茅xito. Si se devuelve un error, se informar谩 en la tabla de errores.

Poniendo a prueba tus acciones externas

De vez en cuando, mientras crea una acci贸n externa, encontrar谩 errores. Cuanto m谩s pueda probar sobre la marcha, m谩s f谩cil ser谩 descubrir d贸nde radica el problema. Es por eso que recomiendo agregar un paso de prueba para probar en Salesforce Flow antes de probar en Engagement Studio. Elimina la configuraci贸n de la acci贸n externa de la imagen, por lo que si la verifica aqu铆, pero no funciona en Engagement Studio, sabr谩 que el problema radica en la configuraci贸n de la acci贸n externa.

Las pruebas lo ayudan a identificar errores, pero determinar la causa ra铆z y corregirlos es otra cosa. A continuaci贸n se presentan algunas de las t茅cnicas que utilizo para diagnosticar las causas fundamentales.

  • Consola de desarrollador de Salesforce : utilizo la consola de desarrollo para ejecutar mis casos de prueba y confirmar la cobertura de mi c贸digo. Durante las pruebas exploratorias en Flow, mantengo abierta mi consola de desarrollo, por lo que genera registros para usar en la investigaci贸n de errores.
  • Rastreos de registro de Salesforce : si el error ocurre durante mi prueba de Engagement Studio, coloco un rastreo de usuario en el usuario de integraci贸n B2BMA, para poder ver mis registros de Apex y diagnosticar el problema m谩s a fondo. Tenga cuidado, podr铆a terminar con una gran cantidad de datos. El Usuario de Integraci贸n B2BMA es el usuario que ejecuta acciones externas.
  • Errores de acci贸n externa de compromiso de cuenta : la tabla proporciona cualquier error devuelto por la acci贸n externa que result贸 en una falla. Es 煤til ver lo que sucedi贸 durante una ejecuci贸n de ES.

SUGERENCIA: si tiene una cuenta de Gmail, puede usar un "+" para crear varios registros con su direcci贸n de correo electr贸nico. Por ejemplo, puedo registrar tanto "ejemplo@ejemplo.com" como "ejemplo+usuario2@ejemplo.com" como prospecto, y cualquier correo enviado a esas direcciones ir铆a al buz贸n de correo de ejemplo@ejemplo.com. Por ejemplo, us茅 esto para probar el ejemplo de registro de Zoom porque no quer铆a que el correo electr贸nico registrado rebotara.

Errores comunes

Los errores van a suceder, as铆 es la vida. Me he encontrado con algunos escenarios que me han hecho casi tirarme de los pelos.

El primero es garantizar que la acci贸n exterior sea activa. Si la acci贸n no aparece en Engagement Studio, es probable que esta sea la causa. Recuerde, debe activar tanto la extensi贸n de la aplicaci贸n de marketing como la acci贸n externa, adem谩s de asignarla a esa unidad comercial.

El siguiente es asegurarse de que su clase de Apex est茅 activa. La mayor铆a de las veces ya estar谩 marcado como activo, es el estado predeterminado cuando creas una nueva clase. Es exactamente por eso que es f谩cil pasarlo por alto.

Otro es buscar extensiones de aplicaciones de marketing al empaquetar. No puedo decirte cu谩ntas veces busco acciones externas, solo para tener un momento de confusi贸n antes de recordar.

Finalmente, si su acci贸n externa no funciona, pero no ve errores, verifique que la acci贸n invocable fue dise帽ada para generar un error en caso de falla.

Lo anterior no es de ninguna manera exhaustivo, y es probable que encuentre sus propias alegr铆as. Sin embargo, recomiendo compartirlos con la comunidad si encuentra algunos buenos.

驴Que estas esperando? 隆Empiece hoy!

Ahora sabe casi todo lo que hago sobre las acciones externas, desde c贸mo funciona la funci贸n hasta los errores comunes. Recuerde que Acciones externas es su herramienta siempre que se encuentre diciendo: "Me gustar铆a hacer algo cuando el cliente potencial haga esto", y lo ayudar谩 a automatizar esa acci贸n.

Entonces, configure su entorno de desarrollador, revise la aplicaci贸n de referencia y comience a construir su acci贸n externa hoy. El 20 de julio a las 10 a. m. (hora del Pac铆fico) , realizaremos una sesi贸n de CodeLive en nuestro canal de YouTube para desarrolladores de Salesforce , as铆 que 煤nase y s铆ganos mientras construimos una extensi贸n de la aplicaci贸n de marketing de Twilio.

Recursos

Sobre el Autor

Christopher Cornett es gerente s茅nior de productos en Salesforce, responsable de la experiencia del desarrollador de Account Engagement. Ha trabajado para Salesforce durante m谩s de cuatro a帽os y tiene m谩s de 13 a帽os de experiencia en gesti贸n de productos, trabajando principalmente en plataformas que van desde la atribuci贸n de big data hasta el fraude. Christopher ha ayudado a ofrecer API V5 y extensiones de aplicaciones de marketing, ayudando a los clientes a crear integraciones personalizadas para que su pila de marketing funcione para ellos. Le apasiona la experiencia del desarrollador y le encanta jugar con todas las excelentes funciones para ver qu茅 es posible.

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

Seguir leyendo

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 1 鈽侊笍

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 1 鈽侊笍

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.

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 1 | Blog de desarrolladores de Salesforce

La CLI de Salesforce es una de las herramientas de desarrollo m谩s importantes de nuestro ecosistema. La CLI es el compa帽ero diario de los desarrolladores de Salesforce para crear, probar, implementar y m谩s. Adem谩s, la CLI es fundamental para las pr谩cticas de DevOps, como la integraci贸n continua, donde la automatizaci贸n es clave. Despu茅s de siete a帽os de disponibilidad general, ahora estamos entrando en un nuevo cap铆tulo para la CLI de Salesforce.

Esta publicaci贸n es la primera de una serie de blogs de dos partes sobre sf (v2), la nueva y mejorada CLI de Salesforce. En la Parte 1, veremos las novedades de Salesforce CLI sf (v2). Luego, en la segunda parte de la serie, nos sumergiremos en c贸mo puede migrar de comandos y banderas de estilo sfdx a los nuevos comandos y patrones de bandera de estilo sf .

Anuncio de disponibilidad general (GA) de sf (v2)

Hace aproximadamente dos a帽os, el equipo de CLI de Salesforce se embarc贸 en una iniciativa de unificaci贸n con la visi贸n de unificar las diversas experiencias de CLI en todo el ecosistema de Salesforce. Anunciamos la pr贸xima evoluci贸n de nuestra CLI de Salesforce con un nuevo ejecutable llamado sf . La creaci贸n de sf como una CLI separada nos dio la oportunidad de dise帽ar, probar y lanzar no solo una nueva estructura de comando para un r谩pido desarrollo entre nubes, sino tambi茅n una CLI m谩s intuitiva, eficaz y f谩cil de usar.

Hoy, nos complace anunciar la disponibilidad general (GA) de la segunda versi贸n (v2) de sf . Esta es una versi贸n principal de sf CLI que es lo suficientemente inteligente como para comprender todos sus comandos sfdx , as铆 como los comandos sf , con tiempos de instalaci贸n y actualizaci贸n mucho m谩s r谩pidos. La CLI sf (v2) es todo lo que es sf y sfdx . Despu茅s de instalar sf (v2), tendr谩 acceso a todos los comandos sfdx y sf , y podr谩 continuar ejecutando cualquiera de ellos.

Adopte el futuro del desarrollo de Salesforce

La CLI sf (v2) es nuestro camino a seguir. Le permite experimentar actualizaciones e instalaciones m谩s r谩pidas ya que el tama帽o de instalaci贸n/descarga se ha reducido considerablemente.

Esto significa que todas las capacidades nuevas vendr谩n solo a trav茅s de sf (v2) y dejaremos de publicar actualizaciones en sfdx (excepto las correcciones relacionadas con la seguridad). Adem谩s, todas las nuevas correcciones y caracter铆sticas del complemento CLI solo entrar谩n en sf (v2).

Despu茅s de una importante investigaci贸n de UX, hemos introducido nuevos comandos de estilo sf y patrones de bandera para brindar una mejor experiencia de usuario. Sin embargo, si le preocupan los esfuerzos necesarios para migrar de sfdx a sf , 隆tenemos buenas noticias para usted! Todav铆a puede usar los comandos sfdx y la CLI sf seguir谩 respondiendo de la misma manera. Adem谩s, solo tendr谩 un conjunto de complementos CLI en lugar de uno para sfdx y otro para sf (v1). (Nota: si ha instalado complementos, todos los complementos en sf estar谩n disponibles en sf (v2). Sin embargo, los complementos en sfdx no est谩n disponibles autom谩ticamente en sf (v2). Instale los que necesita usando sf plugins install ) .

Comience con la CLI de Salesforce sf (v2)

Para familiarizarse con sf (v2), siga las instrucciones de instalaci贸n , que le mostrar谩n c贸mo pasar a sf (v2) y c贸mo volver a su instalaci贸n CLI actual si es necesario.

Nota sobre la instalaci贸n de Salesforce CLI sf (v2):

Creamos un alias para sfdx dentro de sf (v2), para que no necesite actualizar sus scripts de sfdx a sf . Dado que sf (v2) utilizar谩 el alias sfdx, deber谩 desinstalar sfdx para que ese nombre est茅 disponible para sf (v2)

La CLI sf (v2) no se puede instalar en una m谩quina que tenga sfdx instalado. Seg煤n las instrucciones de instalaci贸n de sf (v2), primero debe desinstalar sfdx . Si no desinstala primero sfdx y, en su lugar, intenta instalar sf a trav茅s del paquete npm @salesforce/cli , que ahora alberga sf (v2), la instalaci贸n fallar谩. Tenga en cuenta que su CI no debe instalar sfdx , solo sf(v2) .

驴Que sigue?

Est茅n atentos para obtener m谩s informaci贸n sobre c贸mo pasar de los comandos sfdx -style a los comandos sf -style en la parte final de esta serie de blogs.

Mientras explora sf (v2), recuerde informar cualquier error, solicitud de funci贸n o comportamiento sorprendente a trav茅s del repositorio CLI GitHub . 隆Estamos emocionados de saber de usted y, como siempre, le agradecemos su apoyo!

Recursos

Sobre los autores

Pooja Reddivari es gerente s茅nior de gesti贸n de productos en la organizaci贸n Herramientas y experiencia para desarrolladores de plataformas en Salesforce. Le apasiona crear productos escalables y resistentes que deleiten a desarrolladores y clientes. Pooja ha trabajado en las verticales de empresa, educaci贸n y fintech con m谩s de 12 a帽os de experiencia como profesional de ingenier铆a y gesti贸n de productos. S铆gala en Twitter @poojasalesforc1 y en LinkedIn .

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido t茅cnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, rob贸tica y VR. S铆galo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

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

Seguir leyendo

Presentamos HowToDev_ 鈽侊笍

Presentamos HowToDev_ 鈽侊笍

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.

Presentamos HowToDev_ | Blog de desarrolladores de Salesforce

HowToDev_ es una nueva serie sobre Salesforce+ que creamos para ayudar a los desarrolladores a familiarizarse con Salesforce Platform. Si ya tiene habilidades tecnol贸gicas pero es nuevo en el ecosistema de Salesforce, o si desea aprender un poco sobre el desarrollo, 隆HowToDev_ es la serie para usted!

En esta nueva serie, aprender谩 a ampliar la Plataforma de Salesforce y crear aplicaciones personalizadas utilizando potentes funciones de desarrollo de Salesforce l铆deres en la industria. Ser茅 su anfitri贸n y, en cada episodio, lo explicar茅 c贸mo tomar una interfaz de usuario basada en datos que viene lista para usar con Salesforce y crear una experiencia intuitiva e interactiva que facilite la vida de los usuarios.

Descripci贸n general de la plataforma de Salesforce

La plataforma de Salesforce re煤ne una serie de servicios de infraestructura, red, aplicaciones y datos para crear una poderosa herramienta que puede ampliar en un abrir y cerrar de ojos. Esto se debe a muchas de las complejidades que puede haber utilizado en otras plataformas de usuarios y desarrolladores. En el primer episodio de HowToDev_, repasamos una descripci贸n general de Salesforce Platform y c贸mo puede crear objetos personalizados para ampliar el modelo de datos.

Realmente solo necesita preocuparse por la aplicaci贸n y los servicios de datos que se le proporcionan para construir. Desde su front-end hasta sus API, todo sale de la caja listo para que comience a construir.

隆Vamos a codificar!

隆Espera un segundo! Hay algunas cosas que necesita saber aqu铆 antes de abrir ese entorno de desarrollo. Aqu铆 hay un vistazo de lo que cubrimos en el Episodio 1 .

Comprender la importancia de los metadatos en Salesforce: Nosotros explicar la funci贸n de los metadatos, que representan toda la configuraci贸n, la automatizaci贸n y la interfaz de usuario en el entorno de Salesforce.

Definici贸n de qu茅 son una aplicaci贸n y una organizaci贸n en Salesforce: aclaramos los conceptos de una aplicaci贸n y una organizaci贸n en Salesforce, subrayando su distinci贸n con respecto a las aplicaciones y organizaciones tradicionales.

Creaci贸n del objeto de propiedad : demostramos el proceso de creaci贸n de un objeto personalizado (el objeto de propiedad) en Configuraci贸n de Salesforce, que funciona como una tabla de base de datos para administrar y rastrear propiedades.

Agregar nuevos campos al objeto: agregamos dos nuevos campos personalizados al objeto Propiedad (es decir, Fecha de cotizaci贸n y D铆as en el mercado), que resaltan la naturaleza din谩mica de los campos de Salesforce.

Mirando hacia el futuro: Concluimos el episodio con una mirada al futuro de lo que cubrir谩 la serie, prometiendo una futura exploraci贸n de la codificaci贸n y la resoluci贸n de problemas complejos dentro de Salesforce.

Una vez que tenga una mayor comprensi贸n de estos conceptos, 隆podemos abrir la CLI en el Episodio 2 !

D贸nde ver HowToDev_

Todos los episodios se lanzaron a la vez en Salesforce+, 隆as铆 que puede disfrutarlos todos ahora! Esto es lo que se trata en cada episodio:

Episodio 1: Descripci贸n general de la plataforma Salesforce
Episodio 2: Herramientas para desarrolladores de Salesforce
Episodio 3: C贸digo en Salesforce con Apex, SOQL y DML
Episodio 4: compilar componentes web Lightning
Episodio 5: Automatizaci贸n con flujo y disparadores
Episodio 6: Completar y lanzar su aplicaci贸n Salesforce

M谩s recursos

  • HowToDev_ Repositorio de GitHub : este es el lugar donde encontrar谩 todo el c贸digo, las definiciones, los enlaces y los documentos a los que se hace referencia en la serie.
  • Creamos una divertida Trailhead Quest para completar mientras ves HowToDev_. 脷nase a la b煤squeda ahora para poner a prueba sus conocimientos y tener la oportunidad de ganar* uno de los 10 paquetes de premios HowToDev_, que incluyen un par de Apple AirPods y un estuche personalizado de Salesforce Developers. Tambi茅n recibir谩 una insignia exclusiva de la comunidad HowToDev_ en Trailhead. Complete la misi贸n en cualquier momento antes del 31 de julio a las 11:59 p. m. (hora del Pac铆fico) para participar y ganar.

Sobre el Autor

Stephan Chandler-Garcia es promotor de desarrolladores en Salesforce. Ha estado en el ecosistema de Salesforce durante m谩s de 10 a帽os como cliente, socio e ISV. Puede encontrar a Stephan en persona en un grupo comunitario de Trailblazer o en una de nuestras conferencias en todo el mundo. Alternativamente, s铆galo en Twitter @stephanwcg o @schandlergarcia en GitHub, y consulte su repositorio de GitHub para ver c贸digo de muestra y proyectos.

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

Seguir leyendo

Las extensiones Open VSX ahora son compatibles con Code Builder 鈽侊笍

Las extensiones Open VSX ahora son compatibles con Code Builder 鈽侊笍

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.

Las extensiones Open VSX ahora son compatibles con Code Builder | Blog de desarrolladores de Salesforce

Nos complace anunciar que Code Builder ahora le permite agregar extensiones desde Open VSX Registry , que brinda acceso de c贸digo abierto a las extensiones de VS Code. Con esta nueva funcionalidad, puede personalizar Code Builder con extensiones de la comunidad y de terceros para satisfacer sus necesidades m谩s r谩pido y ser m谩s productivo. En esta publicaci贸n de blog, aprender谩 sobre los beneficios que Open VSX aporta a Code Builder, c贸mo usarlo y c贸mo compartir sus comentarios con nosotros.

驴Qu茅 es el generador de c贸digo?

Code Builder es un entorno de desarrollo moderno basado en la web que est谩 optimizado para Salesforce. Actualmente en Beta, Code Builder le permite implementar un entorno de desarrollo integrado (IDE) con todas las funciones en su navegador desde su organizaci贸n de Salesforce, con solo presionar un bot贸n.

Las funciones clave, como la finalizaci贸n y refactorizaci贸n de c贸digo, ayudan a aumentar la productividad del desarrollador, mientras que las herramientas de apuntar y hacer clic dentro de Code Builder, como SOQL Builder, y la compatibilidad con todos los lenguajes y marcos de trabajo de Salesforce, facilitan el desarrollo de cualquier forma que desee. me gusta

Finalmente, con Code Builder, que se basa en AWS, puede acceder a las mismas extensiones de Salesforce y CLI que est谩n disponibles en el escritorio.

Mejor juntos: Code Builder + Open VSX

Cuando inicia Code Builder desde una organizaci贸n, viene precargado con las herramientas de Salesforce que necesita, incluido todo el paquete de extensiones de Salesforce y la CLI de Salesforce. Sin embargo, como parte del proceso de su equipo, es posible que necesite otras herramientas para realizar el trabajo. Ah铆 es donde Open VSX Registry puede ayudar.

Por ejemplo, tomemos el control de fuente. Code Builder ya tiene acceso a Git y GitHub, pero quiz谩s su equipo use algo diferente. Si su equipo trabaja con Jira y BitBucket, puede agregar las extensiones de Jira y Bitbucket en su entorno personal de Code Builder, lo que le permite trabajar con historias y control de fuente sin problemas dentro de Code Builder.

Con casi 3000 extensiones y 1600 editores diferentes en Open VSX, hay muchos otros complementos para elegir para personalizar su entorno Code Builder.

Salesforce y Open VSX

En Salesforce, estamos comprometidos con el c贸digo abierto . Dentro de las organizaciones que fomentan y adoptan el c贸digo abierto, los beneficios para los desarrolladores son claros:

  • C贸digo de mayor calidad: el c贸digo fuente abierto generalmente exhibe las mejores pr谩cticas de dise帽o de software; est谩 escrito de forma modular y limpia, y tambi茅n est谩 bien documentado, ya que los desarrolladores de todo el mundo necesitan entender c贸mo funciona.
  • Mejora de habilidades blandas: trabajar en c贸digo abierto lo lleva a aprender naturalmente c贸mo ser un gran compa帽ero de equipo y colaborador. Tambi茅n aprende de otros desarrolladores expertos siguiendo las pautas de contribuci贸n y revisando el c贸digo.
  • Innovaci贸n: La inteligencia colectiva es extremadamente poderosa. Al tener diferentes cerebros con diferentes antecedentes y mentalidades trabajando juntos, nuevas funciones e ideas innovadoras pueden surgir r谩pidamente.

Open VSX es una gran representaci贸n de la colaboraci贸n de c贸digo abierto. Dado su continuo crecimiento, la Fundaci贸n Eclipse ha formado un grupo de trabajo para guiar la evoluci贸n del Registro Open VSX . Salesforce es patrocinador y miembro del grupo de trabajo para ayudar a garantizar que nuestros usuarios tengan las herramientas y funciones necesarias para construir en nuestra plataforma.

Pr贸ximos pasos

Code Builder se encuentra actualmente en versi贸n beta abierta y est谩 disponible para que cualquiera lo pruebe. Si desea encontrar m谩s recursos, o si tiene preguntas o comentarios, consulte el grupo de la comunidad Code Builder Trailblazer . 隆Esperamos sus comentarios!

Tenga en cuenta que tambi茅n puede acceder a las extensiones de Salesforce en Open VSX, por lo que est谩n disponibles en cualquier lugar donde las necesite.

Sobre los autores

Stephanie Maddox es directora del equipo de gesti贸n de productos de Salesforce. Puedes seguirla en LinkedIn o Twitter .

Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Puedes seguirla en Linkedin , Twitter o GitHub .

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

Seguir leyendo

Presentamos apex-mockery, una biblioteca de simulaci贸n de pruebas unitarias 鈽侊笍

Presentamos apex-mockery, una biblioteca de simulaci贸n de pruebas unitarias 鈽侊笍

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.

Presentamos apex-mockery, una biblioteca de simulaci贸n de pruebas unitarias | Blog de desarrolladores de Salesforce

Escribir pruebas s贸lidas es crucial para crear aplicaciones comerciales confiables y eficientes. En esta publicaci贸n, haremos un repaso de las pruebas unitarias y presentaremos apex-mockery , una biblioteca liviana de pruebas unitarias de Apex que lo ayuda a escribir pruebas unitarias de Apex verdaderamente desacopladas usando simulacros y aserciones. Compartiremos ejemplos de c贸digo para ayudarlo a comprender c贸mo puede usar la biblioteca para crear pruebas unitarias f谩ciles de entender y de ejecuci贸n r谩pida.

Un repaso a las pruebas unitarias

Antes de echar un vistazo a la biblioteca de Apex-Mockery, demos un paso atr谩s y analicemos algunos de los conceptos b谩sicos de las pruebas unitarias desde un punto de vista independiente de la tecnolog铆a. Luego, veremos Apex y discutiremos por qu茅 la mayor铆a de nosotros deber铆a escribir pruebas unitarias en lugar de pruebas de integraci贸n.

Las pruebas unitarias est谩n en la base de la pir谩mide de prueba.

La ingenier铆a de software abarca m煤ltiples tipos de pruebas: unidad, integraci贸n, servicio, interfaz de usuario funcional, de extremo a extremo, aceptaci贸n del usuario y m谩s. Como dice Martin Fowler , podemos representar un buen equilibrio entre estos tipos de pruebas dentro del alcance de un proyecto represent谩ndolos como una pir谩mide.

Las etiquetas (tipos de prueba) pueden cambiar, pero el principio clave aqu铆 es que las pruebas que se ejecutan r谩pido y con frecuencia deben estar en la parte inferior de la pir谩mide. Estos son los m谩s f谩ciles de implementar y mantener (por lo que cuestan menos). Luego, a medida que subimos a la cima, aumentamos la complejidad y el costo: las pruebas se ejecutan m谩s lentamente y se vuelven m谩s dif铆ciles de implementar y mantener.

En el contexto de esta publicaci贸n y en aras de la brevedad, nos centraremos 煤nicamente en las pruebas unitarias. Estos son los primeros que debe implementar en cualquier proyecto, y deben ser una prioridad en su estrategia de prueba.

Por definici贸n, las pruebas unitarias est谩n destinadas a probar la menor cantidad de c贸digo (una unidad) de un proyecto. Las pruebas unitarias solo deben basarse en la l贸gica pura y estar completamente desvinculadas de sus dependencias (otras clases) y l铆mites (otros servicios, como almacenamiento de datos o servicios web). Las pruebas unitarias deben ejecutarse r谩pido; no requieren una configuraci贸n de prueba particular, como la inserci贸n de datos en la base de datos, y requieren que simule las dependencias de la clase bajo prueba.

Escribir pruebas unitarias de Apex en lugar de pruebas de integraci贸n

Apex se beneficia de una estrecha integraci贸n con la Plataforma de Salesforce y, si bien esta caracter铆stica es excelente para cosas como acceder r谩pida y f谩cilmente a la base de datos, difumina las l铆neas de separaci贸n de preocupaciones entre la l贸gica y los servicios. Como consecuencia, es muy f谩cil escribir pruebas de integraci贸n de Apex en lugar de pruebas unitarias. Por ejemplo, el c贸digo de Apex a menudo se prueba junto con la base de datos utilizando declaraciones @TestSetup y DML. Si bien estas pruebas de integraci贸n ayudan a lograr la cobertura, se basan en la base de datos y, por lo tanto, requieren m谩s tiempo para ejecutarse que las pruebas unitarias "puras".

Como comparti贸 Mitch Spano en su presentaci贸n de pruebas unitarias puras de Apex , la mayor铆a de las veces, no es necesario confiar en las pruebas de integraci贸n para probar capas de software de alto nivel, como controladores LWC, servicios y capas de aplicaci贸n. Gracias a la API de Stub de Apex lanzada en Spring '17, los desarrolladores pueden romper con esas dependencias en el contexto de las pruebas mediante la creaci贸n de su propia biblioteca/marco de pruebas unitarias o el uso de uno existente como apex-mockery.

Presentamos la burla del 谩pice

Como parte del trabajo de ingenier铆a de Salesforce, est谩bamos desarrollando un paquete administrado internamente y necesit谩bamos una biblioteca para escribir pruebas unitarias. Quer铆amos escribir pasos simples de "arreglar" (como en el patr贸n Arrange-Act-Assert ), escribir afirmaciones comprensibles y burlarnos de nuestras dependencias. Buscamos en todo el ecosistema una biblioteca f谩cil de leer y bien probada que pudi茅ramos usar para crear nuestro producto, pero no encontramos una combinaci贸n perfecta, por lo que decidimos escribir la nuestra. Est谩bamos tan contentos con la implementaci贸n final de la biblioteca que decidimos lanzarla como c贸digo abierto con el nombre apex-mockery .

La biblioteca apex-mockery proporciona una biblioteca de simulaci贸n simple, liviana y f谩cil de leer para Apex creada con la API Stub. La biblioteca est谩 dise帽ada para que sea f谩cil de usar y brinde la mejor experiencia de desarrollador posible al generar simulacros y ap茅ndices, configurar esp铆as y escribir aserciones.

Lo guiaremos a trav茅s de un escenario de muestra para que pueda comprender el poder de la biblioteca con algunos ejemplos pr谩cticos. Luego, le mostraremos c贸mo puede escribir pruebas para este proyecto de muestra en tres pasos:

  1. Crear simulacros y esp铆as de m茅todos.
  2. M茅todos de espionaje de trozo
  3. escribir afirmaciones

Ejemplo de escenario: pedidos de panader铆a y entrega

Considere el siguiente escenario de ejemplo: una panader铆a toma pedidos de pasteler铆a y planifica las entregas utilizando un servicio dedicado. Los 煤nicos datos que estamos considerando en el contexto de este escenario son los nombres de los pasteles y su fecha de entrega.

A continuaci贸n se muestra la implementaci贸n b谩sica de nuestro escenario de panader铆a (el c贸digo completo est谩 disponible en el repositorio del proyecto ).

Pasteler铆a.cls

DeliveryService.cls

DeliveryServiceImpl.cls

Confirmaci贸n de pedido.cls

Panader铆a.cls

Ahora que hemos echado un vistazo a nuestro proyecto de muestra, echemos un vistazo a c贸mo podr铆amos escribir pruebas para el m茅todo Bakery.order .

Paso 1: crea simulacros y esp铆as de m茅todos

Para funcionar, la clase Bakery necesita que se pase una instancia DeliveryService en su constructor. En un contexto de producci贸n, el servicio se proporciona con una instancia concreta DeliveryServiceImpl de la siguiente manera:

Sin embargo, en el contexto de las pruebas unitarias, no debe usar una instancia de servicio real para garantizar el desacoplamiento. En otras palabras, DelivertServiceImpl se probar谩 unitariamente por s铆 solo, por lo que no es necesario que pruebe las dos clases integradas juntas. Puede reemplazar la dependencia del servicio con un simulacro que implemente la interfaz DeliverService .

As铆 es como puede crear e inyectar f谩cilmente un simulacro de este tipo, gracias a apex-mockery:

Luego, su prueba necesita un esp铆a, para que pueda controlar el comportamiento del m茅todo planDelivery y ejecutar aserciones en sus llamadas.

Ahora que tiene un servicio simulado y un esp铆a en su m茅todo planDelivery , veamos c贸mo puede configurar su esp铆a y ejecutar aserciones en 茅l.

Paso 2: m茅todos de espionaje de trozo

Una vez que tenga una instancia simulada, puede controlar c贸mo se comportan sus m茅todos controlando sus valores de retorno y lanzando excepciones.

Utilice los m茅todos returns y throwsException para especificar un comportamiento predeterminado que se aplica a todas las llamadas a los m茅todos auxiliares. Luego, si es necesario, usa una combinaci贸n de whenCalledWith(<args>).thenReturn y whenCalledWith(<args>).thenThrow para aplicar comportamientos espec铆ficos a las llamadas a m茅todos que coincidan con los argumentos especificados.

Durante la ejecuci贸n de la prueba, apex-mockery comienza buscando una coincidencia en la configuraci贸n proporcionada por whenCalledWith . Si no se encuentra ninguno, vuelve a la configuraci贸n predeterminada ( returns o throwException ).

Veamos algunas situaciones comunes de configuraci贸n de stubs (ver m谩s recetas ).

  • Devolver algo cada vez que se llame planDelivery
  • Lanza una excepci贸n cada vez que se llama planDelivery
  • Devuelve algo cuando se llama con un argumento espec铆fico
  • Lanza una excepci贸n cuando se llama con un argumento espec铆fico

Ahora que sabe c贸mo impulsar el comportamiento de su simulacro, puede agregar aserciones para probar su c贸digo.

Paso 3: Escribe afirmaciones

apex-mockery proporciona una API de afirmaciones fluidas. Tan pronto como comience su expectativa con Expect.that(mySpy) , tendr谩 acceso a varios m茅todos de afirmaci贸n. La biblioteca viene con una serie de afirmaciones de comportamiento f谩ciles de usar, como:

Si los comparadores de argumentos b谩sicos no son suficientes para sus necesidades, tambi茅n puede crear sus propios comparadores de argumentos personalizados .

Uniendo el ejemplo completo

Ahora que vimos los pasos individuales, terminemos y echemos un vistazo a nuestra prueba para el m茅todo Bakery.order . Observe c贸mo puede usar aserciones de burla de Apex, junto con las aserciones est谩ndar de Apex de la clase system.Assert , en sus pruebas.

palabras de cierre

Esto concluye nuestro recorrido por las pruebas unitarias y la biblioteca de Apex-Mockery. Aprendi贸 c贸mo las pruebas unitarias desacopladas son m谩s f谩ciles de escribir y ejecutar mucho m谩s r谩pido. Tener pruebas r谩pidas acorta el ciclo de retroalimentaci贸n del ciclo de vida del desarrollo, reduce la duraci贸n de la ejecuci贸n del flujo de trabajo de CI y acelera las implementaciones. Estos factores permiten a los desarrolladores implementar y ejecutar pruebas con frecuencia, mejorando as铆 la calidad.

apex-mockery lo ayuda a dirigir su proyecto en esta direcci贸n. Consulte el repositorio del proyecto para comenzar. Encontrar谩 la documentaci贸n de la biblioteca con las opciones de instrucciones de instalaci贸n (instalaci贸n de fuente o paquete desbloqueado), algunas recetas de muestra y una gu铆a de migraci贸n. 隆Feliz prueba unitaria!

Sobre los autores

Ludovic Meurillon es ingeniero de software en el equipo de Service Cloud en Grenoble, Francia. Empuj贸 el c贸digo a la producci贸n durante a帽os, disfruta eliminando m谩s l铆neas de c贸digo de las que agrega y prefiere la programaci贸n en pares sobre las revisiones de c贸digo y los productos de trabajo sobre el dise帽o perfecto. S铆galo en Twitter @LudoMeurillon o consulte sus proyectos de GitHub @ludomeurillon .

S茅bastien Colladon es CTA e ingeniero de software en el equipo de Service Cloud en Par铆s, Francia. Le encanta contribuir a hacer del ecosistema de Salesforce un lugar mejor y disfruta aprender y trabajar con otros. Consulte sus proyectos de GitHub @ scolladon .

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido t茅cnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, rob贸tica y VR. S铆galo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

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

Seguir leyendo

Explore el adaptador de cable GraphQL, ahora en versi贸n beta 鈽侊笍

Explore el adaptador de cable GraphQL, ahora en versi贸n beta 鈽侊笍

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.

Explore el adaptador de cable GraphQL, ahora en versi贸n beta | Blog de desarrolladores de Salesforce

隆Atenci贸n, desarrolladores de Salesforce! Hemos estado incursionando en GraphQL durante alg煤n tiempo y estamos llevando las cosas al siguiente nivel. Hace unos meses, anunciamos el lanzamiento piloto del adaptador de cable GraphQL. Mantenga sus soportes porque estamos implementando la versi贸n beta del adaptador de cable GraphQL de Salesforce en nuestro lanzamiento de verano '23. En este blog, exploraremos las novedades de la versi贸n Beta y c贸mo utilizar Recetas de LWC para crear f谩cilmente su aplicaci贸n Salesforce con la tecnolog铆a de GraphQL.

La versi贸n Beta del GraphQL Wire Adapter es un avance significativo en la gesti贸n de datos de Salesforce en LWC. Con la introducci贸n de nuevas funciones, como Recetas LWC, Actualizaci贸n de datos e Integridad referencial, el proceso de desarrollo se ha vuelto m谩s 谩gil y eficiente.

El adaptador de cable GraphQL permite consultar datos de Salesforce mediante consultas expresivas con funcionalidades como filtrado, clasificaci贸n, paginaci贸n y seguimiento de relaciones padre/hijo. Tambi茅n incluye una capa de gesti贸n de datos y almacenamiento en cach茅 del lado del cliente de Lightning Data Service. Estas funciones mejoran la eficiencia y la velocidad del acceso a los datos de Salesforce desde sus aplicaciones web y m贸viles de LWC.

El adaptador de cable GraphQL interact煤a con la API de Salesforce GraphQL, que expone todos los objetos est谩ndar y personalizados disponibles a trav茅s de la API de la interfaz de usuario, junto con los metadatos de los objetos. La API tambi茅n mantiene la seguridad a nivel de objeto y de campo del usuario actual durante la ejecuci贸n de la consulta.

Para familiarizarse con el esquema de la API de GraphQL, sugerimos revisar la documentaci贸n del esquema utilizando el cliente de Altair GraphQL . Las herramientas disponibles en este cliente facilitan la redacci贸n de su consulta GraphQL y su validaci贸n. Luego puede copiar y pegar su consulta directamente en su c贸digo JavaScript en Visual Studio Code.

Novedades en Beta:

  1. Recetas LWC: estos son componentes listos para usar que muestran varios casos de uso de GraphQL
  2. Actualizaci贸n de datos: un mecanismo para actualizar los datos devueltos por su consulta de GraphQL
  3. Integridad referencial: este mecanismo garantiza la coherencia de los datos y las referencias a los recursos de Salesforce, como entidades y campos, son s贸lidas.

Analicemos cada una de estas caracter铆sticas en detalle.

Recetas LWC

LWC Recipes es un repositorio de GitHub con una colecci贸n de ejemplos de c贸digo disponibles p煤blicamente para componentes web Lightning. Incluye tres recetas GraphQL para ayudarlo a comenzar r谩pidamente a crear su aplicaci贸n Salesforce con GraphQL.

El repositorio proporciona instrucciones sobre c贸mo configurar su entorno, crear su organizaci贸n de Salesforce, clonar el repositorio en su m谩quina local e implementar la aplicaci贸n en su organizaci贸n. El c贸digo fuente se puede importar directamente a su Visual Studio Code como un proyecto que puede personalizar seg煤n sus necesidades.

Una vez que implemente la aplicaci贸n Recetas de LWC en su organizaci贸n de Salesforce, es posible que vea los siguientes componentes mediante consultas de GraphQL.

Aqu铆 hay una descripci贸n general de los cuatro componentes de LWC que usan consultas GraphQL:

  • graphqlContacts : obtiene contactos que cumplen ciertos criterios, ordenados por nombre y limitados a los primeros cinco registros
  • graphqlVariables : captura la entrada del usuario en una barra de b煤squeda en una variable y compone una consulta para devolver contactos cuyo nombre coincide parcialmente con la cadena de entrada
  • graphqlRefresh : obtiene una cantidad de empleados en una cuenta y actualiza los datos al hacer clic en el usuario
  • graphqlPagination : Habilita la paginaci贸n a trav茅s de una lista de contactos

Dado que muchos de nuestros clientes preguntan sobre la paginaci贸n, profundicemos un poco m谩s. El adaptador de cable GraphQL es compatible con la paginaci贸n basada en cursores de GraphQL. Puede recorrer las p谩ginas de los resultados de su consulta y controlar la cantidad de resultados que desea obtener cada vez. Para especificar el n煤mero de registros a devolver, utilice el first argumento. El n煤mero predeterminado es 10.

Si hasNextPage es verdadero, puede proporcionar el valor de endCursor al argumento after de una consulta posterior para solicitar la siguiente p谩gina de resultados.

Aqu铆 hay una captura de pantalla de c贸mo podr铆a verse el proyecto Recetas de LWC en Visual Studio Code. Puede ver un c贸digo de ejemplo para la implementaci贸n de la paginaci贸n.

Actualizaci贸n de datos

En el mundo del desarrollo de aplicaciones, mostrar datos actualizados es fundamental para una buena experiencia de usuario y para generar confianza. Por lo tanto, en la versi贸n Beta del GraphQL Wire Adapter, presentamos la funci贸n refreshGraphQL .

Esta funci贸n permite a los desarrolladores activar manualmente una repetici贸n de la consulta. 驴El resultado? Una actualizaci贸n de los datos proporcionados por el adaptador de cable GraphQL, lo que garantiza que los usuarios siempre vean los datos m谩s actualizados.

Esta actualizaci贸n se puede activar a pedido, como un clic de bot贸n de un usuario o un evento de JavaScript espec铆fico. Esto significa que puede optimizar su aplicaci贸n para que se actualice solo cuando sea necesario, lo que proporciona una manera eficiente de mantener los datos actualizados y maximizar el rendimiento de la aplicaci贸n. En pocas palabras, la funci贸n refreshGraphQL ofrece un m茅todo amigable con el rendimiento para mantener los datos actualizados, mejorando la experiencia del usuario y aumentando la confiabilidad de la aplicaci贸n.

Aqu铆 hay un ejemplo de uso:

Consulte el componente graphqlRefresh en las recetas de LWC para ver otro ejemplo del uso de la funci贸n de actualizaci贸n de datos.

Integridad referencial

La versi贸n Beta del adaptador de cable GraphQL presenta integridad referencial. He aqu铆 una breve descripci贸n de sus beneficios e implicaciones.

Lightning Data Service (LDS), la capa de administraci贸n de datos del lado del cliente de Salesforce, mejora la eficiencia de la aplicaci贸n al permitir que los componentes compartan datos, reducir las llamadas al servidor y mantener la coherencia de los datos. Tambi茅n garantiza referencias s贸lidas a los recursos de Salesforce, propagando cambios de nombre y evitando eliminaciones cuando las referencias persisten.

En la versi贸n piloto del adaptador, requerimos el uso de directivas @category para ayudar a LDS a comprender el esquema de datos y normalizar sus datos de GraphQL.

Sin embargo, en la versi贸n Beta, estas directivas ya no se requieren manualmente. Si se usaron anteriormente, ahora se pueden eliminar de sus consultas de GraphQL. El compilador gestiona de forma aut贸noma estas directivas, agilizando su proceso de c贸digo y reduciendo posibles errores manuales.

驴Qu茅 sigue para GraphQL?

Recordatorio: Salesforce es una empresa que cotiza en bolsa y los clientes deben basar sus decisiones de compra en los productos y servicios que est谩n disponibles actualmente.

Estamos comprometidos a continuar invirtiendo en GraphQL. Esto es lo que puede esperar en los pr贸ximos lanzamientos (se aplica la declaraci贸n prospectiva):

Invierno '24:

  • Adaptador de cable GraphQL (GA)
  • Compatibilidad con mutaciones en la API de GraphQL
  • Compatibilidad con consultas agregadas en GraphQL Adapter
  • Capacidad de consulta de tareas y eventos en GraphQL API (Beta)

Primavera 24 y m谩s all谩:

  • Compatibilidad con mutaciones en GraphQL Adapter
  • Funciones avanzadas de paginaci贸n
  • Soporte de campos opcionales

Recursos para desarrolladores

Sobre el Autor

Suvda Myagmar es directora de gesti贸n de productos en Salesforce y le apasionan las plataformas de datos e IA. Le encantan las carreras largas mientras escucha audiolibros.

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

Seguir leyendo

Herramientas para desarrolladores desde cero (Parte 1 de 2) 鈽侊笍

Herramientas para desarrolladores desde cero (Parte 1 de 2) 鈽侊笍

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.

Herramientas para desarrolladores desde cero (Parte 1 de 2) | Blog de desarrolladores de Salesforce

Tanto si es un nuevo desarrollador que acaba de empezar su carrera en el ecosistema de Salesforce como si es un desarrollador experimentado de Salesforce que a煤n no se ha cambiado a nuestras nuevas herramientas para desarrolladores, esta serie de publicaciones de blog es para usted. Le mostraremos c贸mo configurar y utilizar las herramientas que pueden ayudar a todos los desarrolladores de Salesforce a ser mucho m谩s productivos y felices.

Antes de que empieces

Si es nuevo en Salesforce y no tiene una organizaci贸n (instancia de Salesforce) disponible para practicar, reg铆strese en una organizaci贸n Developer Edition . Es completamente gratis y tiene la mayor铆a de las funciones de Salesforce preinstaladas para que pruebe y aprenda. Deber谩 proporcionar un nombre de usuario en forma de direcci贸n de correo electr贸nico, pero no es necesario que sea uno real. Es solo un nombre de usuario que debe ser 煤nico en todos los productos de Salesforce. Despu茅s de solicitar una organizaci贸n, recibir谩 un correo electr贸nico con los pasos para iniciar sesi贸n. Tome nota del nombre de usuario de la organizaci贸n que proporcion贸, ya que tendr谩 que usarlo m谩s adelante.

Si es un desarrollador de Salesforce establecido y un usuario de Developer Console, este es el momento adecuado para adoptar las nuevas herramientas de desarrollador. Si bien Developer Console puede ser una forma r谩pida de cambiar algunas l铆neas de c贸digo, usar las herramientas m谩s modernas cambiar谩 las reglas del juego, ya que incluyen un mont贸n de capacidades que simplificar谩n su trabajo. Usar las nuevas herramientas requiere un cambio de h谩bitos al principio, pero te prometo que muy pronto entender谩s sus beneficios. Adem谩s, tenga en cuenta que ya no estamos invirtiendo en Developer Console, y problemas como la falta de soporte para Lightning Web Components son algo que no abordaremos.

Instalaci贸n de las herramientas de desarrollador

Los metadatos de su organizaci贸n est谩n en la nube, pero para desarrollarse de una manera m谩s productiva, desarrollar谩 localmente. El modus operandi ser谩 trabajar con los metadatos en su m谩quina local y sincronizarlos con su organizaci贸n, lo que significa recuperarlos o implementarlos cuando sea necesario.

Una alternativa al desarrollo local es usar Code Builder (Beta) , un IDE basado en web que puede iniciar desde su organizaci贸n y que tiene las herramientas de desarrollador instaladas. Sin embargo, en este blog, nos centraremos en el flujo de trabajo de desarrollo local.

El primer paso es instalar las siguientes herramientas en su m谩quina:

  • CLI de Salesforce : esta es la herramienta de interfaz de l铆nea de comandos que utilizar谩 para escribir comandos para mover su c贸digo entre su entorno local y su organizaci贸n, ejecutar pruebas, implementar datos de muestra y mucho m谩s. Si no le gusta escribir comandos en una terminal, no tema, ya que tenemos opciones alternativas como se describe en esta publicaci贸n de blog.
  • C贸digo VS : este es el IDE que usar谩 para desarrollar en su m谩quina local.
  • Java : algunas funciones en las extensiones de Salesforce para VS Code dependen de la plataforma Java, kit de desarrollo de edici贸n est谩ndar (JDK). Inst谩lelo siguiendo las instrucciones vinculadas.
  • Extensiones de Salesforce para VS Code : Este es un grupo de extensiones de VS Code que aumentan las capacidades de VSCode, exponiendo la mayor铆a de los comandos de la CLI de Salesforce en la interfaz de usuario de VS Code, para que pueda ejecutarlos con clics. Las extensiones tambi茅n agregan funciones para habilitar la depuraci贸n, facilitar las pruebas, permitirle explorar los metadatos en su organizaci贸n y m谩s.

Creaci贸n de un proyecto de Salesforce DX

Cuando trabaja con los metadatos de una organizaci贸n localmente, los archivos de metadatos deben almacenarse en una carpeta de proyecto, siguiendo una estructura determinada. Eso es lo que llamamos un proyecto de Salesforce DX.

Una vez instaladas las herramientas para desarrolladores, puede continuar y crear un proyecto de Salesforce DX que luego conectar谩 a su organizaci贸n. Una forma de hacerlo es escribir un comando que utilice la CLI de Salesforce para crear el proyecto. Puede escribir ese comando en una terminal normal.

sf project generate -n myProject

Nota: la CLI de Salesforce contiene dos ejecutables, sfdx y sf . En este blog, escribiremos los comandos utilizando el ejecutable y la sintaxis m谩s modernos, que es sf .

El indicador -n indica el nombre del proyecto. La CLI de Salesforce aplicar谩 scaffolding a un proyecto en una carpeta con ese nombre. Una vez que se crea el proyecto, puede abrirlo en VS Code, con File 鈫 Open Folder .

Gracias a las extensiones de Salesforce para VS Code, existe una forma sin escribir para ejecutar los comandos de la CLI de Salesforce. Simplemente abra la paleta de comandos de VS Code con View 鈫 Command Palette y escriba SFDX para ver todos los comandos disponibles. Tambi茅n podr铆amos haber creado el proyecto con SFDX: Create Project en lugar de escribir el comando.

Autorizar y establecer una organizaci贸n como predeterminada

Una vez que su proyecto est茅 configurado, el siguiente paso es autorizar la CLI de Salesforce para que funcione con su organizaci贸n. Comencemos esta vez con la forma de hacerlo sin escribir. Cuando abra el proyecto por primera vez, simplemente haga clic en el bot贸n Sin conjunto de organizaciones predeterminado y aparecer谩 la paleta de comandos, sugiriendo que autorice una organizaci贸n. Proceda siguiendo las instrucciones del comando.

Otra forma de hacerlo es ejecutar un comando CLI de Salesforce. Esta vez, y de ahora en adelante, le recomiendo que use el terminal integrado de VS Code para ejecutar comandos, ya que tener todas las herramientas en la misma pantalla reduce el cambio de contexto. Puede abrirlo en Terminal 鈫 New Terminal .

El comando CLI de Salesforce utilizado para autorizar una organizaci贸n es:

sf org login web -s

Luego, siga las instrucciones dadas por el comando. El indicador -s configurar谩 esa organizaci贸n como su organizaci贸n predeterminada para este proyecto. Puede ver la organizaci贸n predeterminada de su proyecto en la barra inferior de VS Code.

Todos los comandos de la CLI de Salesforce tienen varios indicadores disponibles. Por ejemplo, si desea conectarse a una zona de pruebas, puede pasar la URL de la instancia de la zona de pruebas a sf org login web usando -r . Para ver la ayuda del comando y todos sus indicadores disponibles, ejecute el comando agregando --help al final.

Cuando trabaja con varias organizaciones, ser谩 com煤n autorizar la CLI de Salesforce con varias organizaciones. Puede ver las organizaciones a las que la CLI de Salesforce tiene autorizaci贸n para acceder ejecutando sf org list . Puede cambiar la organizaci贸n predeterminada de un proyecto haciendo clic en el nombre de la organizaci贸n en la barra inferior de VS Code, como hicimos para autorizar por primera vez, o ejecutando:

sf config set target-org=your-org-username@sf.com

Perm铆tanme compartir con ustedes un 煤ltimo consejo. Las organizaciones pueden tener alias. Esto es 煤til cuando no desea recordar nombres de usuario largos o complejos. Para establecer un alias, escriba el siguiente comando.

sf alias set myalias=your-org-username@sf.com

Cuando se establece un alias, puede utilizar el alias en lugar del nombre de usuario de la organizaci贸n en cualquiera de los comandos de la CLI de Salesforce.

Implementaci贸n de metadatos en la organizaci贸n

Una vez que la CLI de Salesforce y su IDE est茅n autorizados con su organizaci贸n, y la organizaci贸n est茅 configurada como la organizaci贸n predeterminada para su proyecto, puede comenzar a desarrollar e implementar cambios. Por ejemplo, digamos que queremos crear una clase de Apex. Puede crear el archivo de metadatos que representa la clase de Apex manualmente en la carpeta classes . Sin embargo, es mucho m谩s efectivo crear la clase desde la paleta de comandos.

Tambi茅n puede crear una clase escribiendo el siguiente comando de la CLI de Salesforce:

sf apex generate class -n myClass -d force-app/main/default/classes

Una vez que su clase est茅 lista para implementarse en su organizaci贸n, hay varias formas de hacerlo. Una forma es especificar los metadatos en el comando.

sf project deploy start -m ApexClass

Una segunda forma es especificar una carpeta para implementar.

sf project deploy start -p force-app/main/default/classes

Y una tercera forma, disponible gracias a Salesforce Extensions for VS Code, es hacer clic con el bot贸n derecho en el archivo y hacer clic en Deploy This Source to Org .

Todas esas opciones le permiten ejecutar las implementaciones usted mismo. Si desea automatizar este paso e implementar un archivo cada vez que se guarda, puede establecer la configuraci贸n Implementar al guardar VS Code en "Verdadero" y ahorrar algo de tiempo.

Cuando se implementan sus metadatos, normalmente querr谩 abrir su organizaci贸n para realizar pruebas. Puede iniciar sesi贸n utilizando su navegador como de costumbre. Pero para los desarrolladores, es m谩s eficiente hacer clic en el bot贸n de abrir organizaci贸n en la barra inferior de VS Code.

Conclusi贸n

En esta publicaci贸n de blog, aprendi贸 c贸mo obtener una organizaci贸n gratuita para el desarrollo y c贸mo instalar las herramientas de desarrollo que todo desarrollador de Salesforce deber铆a usar hoy. Ha entendido c贸mo crear un proyecto y autorizarlo con su organizaci贸n y, por 煤ltimo, c贸mo implementar metadatos mediante la CLI de Salesforce o VS Code. En la Parte 2 de esta serie, aprender谩 c贸mo recuperar metadatos, trabajar con organizaciones con seguimiento de origen y usar bibliotecas de Node para cuidar la calidad de su c贸digo. Adem谩s, compartiremos otras gemas ocultas de las extensiones de Salesforce para VS Code. Si te gusta un formato de video, mira nuestro episodio de codeLive . Y si tiene preguntas, no dude en hacerlas en Salesforce Developers Trailblazer Community . 隆Est茅n atentos para la segunda publicaci贸n de blog de esta serie ma帽ana!

Sobre el Autor

Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Puedes seguirla en Linkedin , Twitter o GitHub .

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

Seguir leyendo