Skip to content

Categoría: Salesforce

Sube de nivel como socio de Salesforce ☁️

Sube de nivel como socio de Salesforce ☁️

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

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

Cuando nuestros socios tienen éxito, tenemos éxito. Como socio de confianza, tiene la oportunidad de desbloquear los activos de ventas, la propiedad intelectual, las mejores prácticas, las historias de los clientes, el asesoramiento personalizado y nuestra metodología de lanzamiento de Salesforce. Esto es todo lo que brindamos a nuestros equipos de ventas internos de Salesforce, entregado en un formato interactivo y atractivo.

“Nuestros socios juegan un papel fundamental para ayudar a nuestros clientes a escalar capacidades, innovar y tener éxito con Salesforce”, dice Steve Corfield, vicepresidente ejecutivo de alianzas globales, canales y productos emergentes de Salesforce.

Comience a aprender con Partner Learning Camp

Explore el principal destino de aprendizaje y amplíe sus capacidades técnicas y de ventas para satisfacer las necesidades de los clientes ahora y en el futuro.

Aumentar la oportunidad de servicios para socios

Salesforce realizó algunos cambios importantes este año para optimizar las soluciones de lanzamiento al mercado. El primer gran cambio es la tecnología y la innovación de productos. Atrás quedaron los días de almacenamiento en silos en la nube y la venta de miles de SKU. Ahora estamos vendiendo conjuntos de productos que están diseñados para satisfacer las necesidades de audiencias específicas. El enfoque en las personas de la audiencia nos permite producir ofertas más integradas y brindarles a los clientes oportunidades para desbloquear el Salesforce Customer 360 completo.

Ahora, es más fácil que nunca vender a través de Customer 360. Eso significa mayores ingresos y menor pérdida de clientes para los socios. Hay un efecto multiplicador significativo cuando un cliente tiene más de una nube. A medida que aumenta su participación en Salesforce, también puede ver una marcada disminución en el desgaste.

Los socios son clave para el éxito del cliente. Cuando nuestros socios participan estratégicamente en el ciclo de ventas:

  • Las tasas de ganancias son 36 veces más altas
  • El precio de venta promedio se incrementa 2x
  • Los socios implementan en promedio 4,5 veces los ingresos por licencias a través de sus servicios con nuestros clientes

“Los socios que brindan valor, innovación y crecimiento más rápido desbloquean el tipo de confianza de nuestros clientes que conduce a relaciones más profundas”, dice Corfield.

Haga crecer sus capacidades de ventas de Salesforce para impulsar su éxito

El verdadero éxito de ventas no se trata solo de cumplir con las cuotas o realizar transacciones rápidas. Se trata de construir relaciones sólidas y duraderas con los clientes. Esto significa comprender sus necesidades únicas y brindar soluciones personalizadas que agreguen valor y resuelvan los desafíos comerciales.

Salesforce tiene una gran cantidad de recursos para ayudarlo sin importar su rol de vendedor. Elija entre seminarios web interactivos breves y cursos a pedido en Partner Learning Camp (PLC). Disponibles para todos los socios de Salesforce, estos recursos están diseñados para ayudarlo a impulsar el éxito de las ventas a lo largo del ciclo de vida del cliente.

Generación de demanda: aprenda el valor de Salesforce y obtenga información sobre compradores únicos con los seminarios web Sales Messaging 101 . Luego, amplíe sus conocimientos en el seminario web Creación de proyectos y calificación de clientes potenciales . Aprenderá cómo comprender los puntos débiles de su cliente, involucrar a sus tomadores de decisiones y hacer avanzar la oportunidad.

Progresión del trato: una vez que tenga una cartera saludable de clientes potenciales, es hora de sobresalir en el lanzamiento. Sales Kickstart ofrece una clase magistral completa para ayudarlo a perfeccionar su presentación. Durante tres medios días, Kickstart ofrece capacitación personalizada para dar forma a su marco de presentación, ayudarlo a contar historias de clientes y vender en Customer 360. Esta capacitación también está disponible a pedido en PLC.

Entrada al mercado repetible: las personas que demuestren liderazgo en ventas en el ecosistema de socios pueden ser invitadas a convertirse en campeones de ventas de Salesforce . Es una oportunidad para obtener acceso a asesoramiento personalizado, preparación de lanzamientos y comentarios. En su tercer año, Salesforce ha ayudado a su grupo élite de campeones a obtener millones de dólares en proyectos. Los campeones guían a los clientes sobre las opciones tecnológicas correctas para el éxito y los ayudan a superar los desafíos comerciales y del mercado.

Reciba recompensas por enviar clientes potenciales

Cierre tratos más rápido y a una tasa más alta, desbloquee los beneficios de los socios, gane tarifas de referencia y desarrolle una asociación sólida con Salesforce.

Complemente sus capacidades con recursos técnicos y de marketing  

Amplíe el impacto de sus capacidades de ventas de Salesforce aprovechando los siguientes recursos. Al hacerlo, desarrollará sus capacidades técnicas, accederá a recursos de marketing y capacitación, y aprenderá cómo llegar a sus clientes en el momento y lugar correctos.

Desarrolle experiencia técnica: acceda a cursos y planes de estudios para mejorar sus capacidades técnicas . Sumérjase en la capacitación disponible a través de Trailhead, Trailhead Academy, credenciales de Salesforce y Partner Learning Camp. Acceda a cursos específicos de funciones, como talleres impartidos por ingenieros de soluciones, para ingenieros de soluciones.

Llegue a sus clientes en el momento y el lugar correctos: el Centro de marketing para socios es una biblioteca de materiales gratuitos de marketing y ventas para ayudarlo a impulsar la demanda. Acceda a contenido gratuito, preconstruido y personalizable basado en la personalidad del comprador. Encontrará recursos como libros de jugadas de campaña, copia de correo electrónico, mazos de ventas, guiones de llamadas y más.

El programa de marketing de AppExchange puede ayudarlo a generar demanda, impulsar el éxito de los clientes y mejorar la visibilidad. Además, obtendrá oportunidades de marketing conjunto llave en mano con Salesforce.

Accelerate Grow puede ofrecerle más entrenamiento práctico. Este programa acelerador virtual de 9 semanas puede ayudarlo a salir al mercado más rápido y escalar el éxito de su empresa. Tendrá acceso a revisiones de listados personalizados, sesiones interactivas dirigidas por expertos y aprendizajes a pedido.

Amplíe sus operaciones de reventa: los revendedores pueden obtener una vista tras bambalinas sobre pronósticos, informes y el lado operativo de la gestión del negocio. Esto está disponible como un Bootcamp de reventa (que incluye Sales Kickstart) o como un taller de operaciones de reventa independiente.

Como socio de Salesforce, su excelencia en ventas impulsa la excelencia de la empresa. Puede maximizar el valor de su asociación desbloqueando un mundo de recursos para impulsar el éxito de ventas, expandir su base de clientes y prosperar en un mercado competitivo.

Salesforce está abriendo camino hacia los 50.000 millones de dólares en ingresos para 2026. Somos la empresa de software empresarial de más rápido crecimiento entre las cinco principales, y nuestros socios son fundamentales para ese crecimiento. Extienden la funcionalidad de la plataforma con aplicaciones personalizadas y ayudan a los clientes a implementar la tecnología. Junto con nuestros socios, crecemos, innovamos e invertimos en formas que ayudan a los clientes a transformar sus negocios.

Seguir leyendo

Desatando los superpoderes de administración de Salesforce: ¡Impulse la colaboración en equipo, sobrecargue la eficiencia, gestión de datos maestros!

Desatando los superpoderes de administración de Salesforce: ¡Impulse la colaboración en equipo, sobrecargue la eficiencia, gestión de datos maestros!

Última actualización el 31 de julio de 2023 por Rakesh Gupta

Durante la última década, el papel de un administrador de Salesforce ha evolucionado drásticamente, manteniendo el ritmo del panorama dinámico de las ventas y la gestión de las relaciones con los clientes. Lo que alguna vez fue principalmente una posición de entrada de datos se ha convertido en un rol multifacético que abarca la planificación estratégica, el análisis y la optimización de procesos. A medida que las empresas reconozcan la importancia de Salesforce para impulsar el crecimiento y mejorar las experiencias de los clientes, los administradores proporcionarán un puente fundamental entre la tecnología y el éxito comercial.

Este artículo explorará cómo los administradores pueden aprovechar la automatización de procesos junto con el ecosistema de Salesforce para fomentar la colaboración en equipo, mejorar la eficiencia organizacional y mejorar la gestión de datos.

Uso de la automatización de correo electrónico de Salesforce para la programación

La automatización del correo electrónico se utiliza para optimizar varios aspectos de la comunicación por correo electrónico con clientes potenciales y clientes dentro de la plataforma de Salesforce para garantizar una programación de citas rápida y eficiente. Permite a las empresas administrar de manera eficiente sus campañas de marketing y ventas por correo electrónico, la participación del cliente y las reservas.

En los últimos años, la automatización revolucionó los procesos de ventas y soporte al agilizar la reserva de citas, reducir la carga de trabajo manual y brindar a los clientes opciones convenientes de autoservicio. Actualmente, los administradores de Salesforce pueden aprovechar herramientas como SUMO Scheduler junto con flujos nativos y alertas por correo electrónico para enviar automáticamente invitaciones a citas. Al crear disparadores que monitorean campos de datos específicos asociados con registros de contactos y lanzar flujos personalizados, los administradores pueden asegurarse de que los clientes potenciales siempre puedan programar citas, independientemente de la hora del día o la ubicación.

Actualizaciones automáticas de temas: haga que sus citas se destaquen

Las reuniones de cara al cliente son vitales para los equipos de ventas y soporte, y las citas perdidas o canceladas pueden afectar negativamente los objetivos estratégicos y el resultado final. Los administradores de Salesforce pueden aprovechar las actualizaciones automáticas de temas dentro de la programación de citas para reducir las cancelaciones de manera efectiva y aumentar la participación en las citas. Al implementar esta funcionalidad, los administradores pueden mejorar la comunicación, brindar claridad e infundir confianza en el proceso de citas para los clientes y la organización.

Se puede activar una actualización automática del tema para incluir detalles esenciales como la fecha, la hora, la ubicación y el propósito de la cita al programarla. Este mensaje de confirmación sirve como recordatorio para el cliente y reduce las posibilidades de cancelaciones involuntarias o de no presentarse.

Las actualizaciones automáticas de temas también se pueden personalizar para atender a clientes individuales. Los administradores pueden incluir detalles personalizados, como el nombre del cliente o referencias de citas específicas, para captar su atención y crear una sensación de personalización. Esto ayuda a fomentar una conexión con el cliente y refuerza su compromiso con la cita.

Finalmente, en caso de cambios o actualizaciones en la cita, los administradores pueden usar actualizaciones automáticas de temas para comunicar la información revisada. Esto asegura que los clientes estén informados sobre cualquier modificación en tiempo real, minimizando la confusión o la necesidad de cancelar debido a detalles desactualizados o inexactos.

Al permitir la flexibilidad en la programación y el mantenimiento de registros precisos dentro de Salesforce con la ayuda de líneas de asunto automatizadas, los administradores pueden optimizar de manera efectiva su proceso de ventas, mejorar la experiencia del usuario y fortalecer las relaciones con los clientes.

Uso de campos de correo electrónico flexibles para una mayor precisión

La flexibilidad es clave para satisfacer las necesidades únicas de los clientes, y los administradores de Salesforce pueden aprovechar el poder de los campos de correo electrónico para notificaciones personalizadas, sin importar cuán complejas sean. Esta personalización permite una experiencia más personalizada que cumple con requisitos específicos, como el cumplimiento normativo o las políticas internas.

En el contexto de Salesforce, los campos de correo electrónico se utilizan para recopilar y almacenar las direcciones de correo electrónico de los clientes. Estos campos aseguran que los datos ingresados sigan el formato adecuado, evitando entradas incorrectas o no válidas. Las direcciones de correo electrónico recopiladas a través de estos campos se pueden usar para enviar recordatorios, actualizaciones, mensajes de seguimiento y otras notificaciones relacionadas con citas. Cada campo de correo electrónico actúa como una medida confiable de capturar y utilizar información de contacto para mejorar el compromiso y mantener canales de comunicación efectivos.

Los campos de correo electrónico de Salesforce pueden mejorar la precisión al garantizar que la información de contacto almacenada en CRM esté actualizada y sea confiable. Al utilizar campos de correo electrónico dedicados dentro de Salesforce, los representantes de ventas pueden capturar y almacenar direcciones de correo electrónico específicas de personas o entidades con precisión. Esto ayuda a eliminar el riesgo de usar direcciones de correo electrónico desactualizadas o incorrectas asociadas con otros campos, como información de contacto personal o comercial, lo que da como resultado comunicaciones por correo electrónico más confiables, tasas de rebote reducidas y precisión de datos mejorada.

Automatice la creación de clientes potenciales en Salesforce en el momento de la reserva

Las herramientas de programación nativas de Salesforce permiten a los equipos de ventas automatizar la creación de clientes potenciales, lo que garantiza una captura precisa de la información y los datos demográficos de los clientes potenciales en el CRM. Al automatizar el proceso de creación de clientes potenciales tan pronto como se programa una cita, los administradores pueden ahorrar tiempo, mantener la integridad de los datos y evitar la redundancia. Los flujos automatizados agilizan el proceso y eliminan los errores de entrada manual. La precisión mejorada y la colaboración entre las partes interesadas mejoran las tasas de conversión de clientes potenciales y proporcionan datos confiables para informes y análisis.

Para automatizar rápidamente la creación de clientes potenciales en Salesforce en el momento de la reserva, puede seguir estos pasos:

  1. Identifique el evento desencadenante : determine el evento o la acción específicos que deben desencadenar la creación de clientes potenciales. En este caso, sería la reserva de una cita.
  2. Configure un flujo de Salesforce : utilice el flujo de Salesforce para crear una regla que active el proceso de creación de clientes potenciales. Especifique los criterios para cuándo debe activarse el flujo, como cuando se reserva una nueva cita.
  3. Definir asignación de campos : configure la asignación de campos para asegurarse de que la información relevante de la cita se transfiera correctamente al registro de clientes potenciales. Puede asignar campos como el nombre del participante, la información de contacto, los detalles de la cita y otros puntos de datos relevantes.
  4. Crear el registro de prospecto : configure Salesforce Flow para crear un nuevo registro de prospecto con los datos asignados. Asegúrese de que todos los campos obligatorios estén completos y que el registro de cliente potencial esté asociado con la campaña o la fuente adecuada.
  5. Probar y validar : pruebe el proceso automatizado de creación de clientes potenciales reservando una cita de muestra y verificando que el registro de clientes potenciales se cree con los datos esperados. Valide que el registro de prospectos aparezca en la cola de prospectos designada o en las reglas de asignación.
  6. Supervisar y perfeccionar : Supervise continuamente el proceso de automatización de creación de clientes potenciales para garantizar su eficacia y precisión. Realice los ajustes o mejoras necesarios en función de los comentarios, los cambios en los requisitos comerciales o los problemas de calidad de los datos.

Al automatizar la creación de clientes potenciales en Salesforce en el momento de la reserva, los representantes de ventas y los administradores pueden ahorrar tiempo, garantizar la precisión de los datos y mantener un proceso de gestión de clientes potenciales optimizado. Esta automatización facilita la captura eficiente de clientes potenciales, reduce el esfuerzo manual y mejora la productividad del equipo de ventas.

Conclusión:

Los flujos de programación automatizados, junto con las poderosas capacidades de SUMO Scheduler, simplifican y mejoran los procesos de trabajo, ahorran tiempo, reducen errores y mejoran la satisfacción del cliente. Al adoptar la automatización, los administradores de Salesforce pueden impulsar mejoras significativas en la eficiencia, la productividad y el rendimiento comercial general. La optimización de los procesos de programación y el aprovechamiento de los flujos de automatización en Salesforce con SUMO Scheduler es una combinación ganadora para las empresas que buscan optimizar sus operaciones. ¡Adopte la revolución de la automatización hoy e impulse a su equipo de ventas a nuevos niveles de éxito!

Haga clic aquí para visitar SUMO Scheduler en Salesforce AppExchange y obtener más información sobre el poder de la programación automática de autoservicio .

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

¡Ya está aquí la CLI sf (v2) de Salesforce! — Parte 2 ☁️

¡Ya está aquí la CLI sf (v2) de Salesforce! — Parte 2 ☁️

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

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

¡Ya está aquí la CLI sf (v2) de Salesforce! — Parte 2 | Blog de desarrolladores de Salesforce

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

Conozca los comandos de estilo sf

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

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

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

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

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

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

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

Migrar al ejecutable sf

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

Comandos sfdx comunes y sus equivalentes sf

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

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

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

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

Automatice parte de la migración con expresiones regulares

ℹ️ Edición del 27 de julio de 2023: en lugar de expresiones regulares, puede usar un script de migración como se documenta aquí .

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

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

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

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

Comience ejecutando esta búsqueda RegEx y reemplace:

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

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

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

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

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

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

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

palabras de cierre

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

Recursos

Sobre el Autor

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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Divulgación y cumplimiento en Net Zero Cloud

Divulgación y cumplimiento en Net Zero Cloud

Cubrimos brevemente Net Zero Cloud en el pasado, de hecho, no es una sola nube sino una gran cosa de múltiples industrias si me preguntan.

Como parte de la explicación de esto: https://developer.salesforce.com/docs/atlas.en-us.netzero_cloud_dev_guide.meta/netzero_cloud_dev_guide/netzero_cloud_data_model.htm

:O

Lo que me gustaría cubrir hoy es Disclosure and Compliance Hub. Que es un módulo dentro de Net Zero Cloud para que pueda hacer exactamente eso: esencialmente, esto le permite extraer datos, responder preguntas, colaborar con los usuarios y generar divulgaciones.

Esto es importante ya que cada vez más claridad y transparencia sobre el impacto ambiental y social se está volviendo esencial. Y bueno, la legislación está sucediendo y, potencialmente, los impuestos y las sanciones pueden venir en el futuro (¡la línea es corta por cierto!)

Entonces, lo que este módulo le permite hacer es simplemente generar "divulgaciones formateadas" que luego puede informar y publicar.

Lo primero que debe hacer es habilitarlo en Net Zero > Disclosure and Compliance Hub Settings > Luego active Manage Disclosure and Compliance Hub. Para que pueda acceder a la aplicación, que es bastante sencilla:

Con NZC Disclosure and Compliance Hub, Salesforce tiene un paquete que incluye 3 informes iniciales:

CDP : en el año 2000, el 'Carbon Disclosure Project' proporcionó una estructura clara para que las organizaciones informaran externamente sobre su huella. https://www.cdp.net/es/info/sobre-nosotros

GRI : otro marco de estándares de informes sobre el cumplimiento ambiental, esto también incluye una amplia gama de biodiversidad a impuestos, residuos a emisiones. https://www.globalreporting.org/

SASB – Sustainability Accounting Standards Board se enfoca en un subconjunto de temas de sustentabilidad más relevantes para el desempeño financiero en cada una de las 77 industrias. https://sasb.org/

El proceso guiado y la variación de la estructura de estándares en las opciones anteriores, creo que esta es la razón por la que en la edición Growth de Net Zero Cloud tiene licencias de OmniStudio. Con el paquete de estos 3 informes estructurados, omniscript y dataraptors ya están agrupados y listos para usar.

Debajo de una muestra de pasos para crear una Divulgación en el tipo SASB:

Entonces, OmniStudio utiliza un proceso guiado para extraer datos de las respuestas cualitativas y cuantitativas a los cuestionarios.

Los cuestionarios están ahí para recopilar información específica, como el uso del presupuesto para una subvención, o informes de emisiones de carbono y energía, o para información genérica, como informes ambientales, sociales y de gobernanza.

También puede colaborar en las respuestas con los usuarios y crear una colección de respuestas reutilizables aprobadas.

Puede utilizar las respuestas para producir documentos formateados. Dentro del registro de Divulgación tiene una acción 'Generar documento':

¡Tada!

Eso es usar la plantilla estándar que viene del paquete en la versión SASB.

Tan simple como eso, lo que se vuelve más complicado es si desea utilizar otro tipo de Divulgación, por lo que tendría que crear los componentes relacionados de OmniStudio, etc. ¡Aunque sugeriría utilizar uno de estos 3 estándares disponibles que son ampliamente adoptados!

¿Cómo está reportando su organización hoy en Gobernanza Social Ambiental?

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=”booleano” 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=”Cadena” plumaColor(Cadena)
Color de la almohadilla de firma Personalice el color del pad de firma que ve el usuario final. pad-color=”Cadena” 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=”Cadena” nombreInputLabel=”Cadena”
Configuración de una etiqueta de almohadilla Establezca un nombre para la etiqueta sobre el panel de firma. nombre-entrada-etiqueta=”Cadena” nombreInputLabel=”Cadena”
Guardar firma Permite guardar una firma autogenerada y/o personalizada. onclick={guardar firma} pad.getSignature()
Firma clara Permite eliminar la firma anterior si es necesario volver a hacerlo. onclick={clarar Firma} pad.clearSignature()

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

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

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

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

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

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

Conclusión

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

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

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

Sobre el Autor


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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Cargue datos mediante programación con la API de ingesta ☁️

Cargue datos mediante programación con la API de ingesta ☁️

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

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

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

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

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

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

Cuándo usar la ingestión Streaming vs Bulk

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

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

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

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

Creación de un conector de API de ingesta

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

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

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

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

panel_solar_event.yaml

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

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

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

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

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

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

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

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

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

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

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

Perfil Un conjunto de datos que representa:

– Una lista de consumidores con identificadores, como identificaciones de consumidores, direcciones de correo electrónico o números de teléfono

– Una lista de empresas o cuentas con ID de cuenta

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

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

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

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

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

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

Creación de una aplicación conectada

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

Ámbitos de OAuth requeridos

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

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

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

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

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

Solicitud de un token de acceso a la nube de datos

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

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

Encabezado JWT

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

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

reclamos JWT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

config.js

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

credenciales.js

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

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

Ingesta de datos

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

Transmisión

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

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

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

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

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

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

A granel

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

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

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

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

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

Conclusión

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

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

Recursos

Sobre los autores

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

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

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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Aprenda Salesforce Like I Am 10 Producto, libro de precios, entrada de libro de precios, activo

Aprenda Salesforce Like I Am 10 Producto, libro de precios, entrada de libro de precios, activo

Un rectángulo amarillo y azul con texto negro Descripción generada automáticamente

¡Bienvenidos a la heladería Emma's Flavourland, un lugar de pura magia deliciosa del helado! Imagínese entrando en un país de las maravillas de sabores y diversión, donde cada primicia es pura delicia.

Nosotros aprenderemos:

Pero todo divertido, como aprender ABC. woo-hoo!

Para realizar un seguimiento de todos sus deliciosos helados, Emma utiliza Salesforce. Puedes pensar en él como un libro mágico que la ayuda a organizar sus sabores de la manera más sorprendente. Con Salesforce, anota los nombres y las descripciones de los tipos, e incluso agrega imágenes coloridas a un objeto de Salesforce. Piense en ello como una tabla llamada 'Producto'.

Una captura de pantalla de una computadora Descripción generada automáticamente

Libro de precios

Para administrar sus estrategias de precios, utilizó la función "Libros de precios" de Salesforce, que le permitió crear diferentes tipos de listas de precios.

En su “Libro de precios estándar”, Emma enumeró los precios regulares de sus sabores de helado. Estos fueron los precios que la mayoría de los clientes pagaron cuando visitaron su tienda.

En la tabla Libro de precios, encontrará el Nombre del libro de precios, como el Libro de precios estándar y el Libro de precios especial para niños y la Descripción del Libro de precios.

Emma también quería que su helado fuera más asequible y emocionante para los niños. Entonces, creó un libro de precios especiales llamado "Libro de precios especiales para niños". En este libro de precios, agregó precios con descuento exclusivamente para niños.

Un cuadro rectangular amarillo y azul con líneas blancas Descripción generada automáticamente

Una captura de pantalla de una computadora Descripción generada automáticamente

Tenga en cuenta que Pricebook en sí no tiene los precios indicados para el helado, para esto tenemos Price Book Entry.

Entrada de la lista de precios

Para conectar los sabores de helado, es decir, los productos con sus respectivos libros de precios, es decir, el libro de precios estándar y el libro de precios especial para niños, Emma crea entradas en el libro de precios. Puede pensar que PriceBook Entry es el amigo común que conecta Product y Pricebook entre sí.

Aquí el Producto es Súper Fresa y está conectado a PriceBook Estándar y Especial para Niños con la ayuda de PriceBook Entry.

Personajes de dibujos tomados de la mano Descripción generada automáticamente

Venta basada en productos

En la heladería Flavourland de Emma, ofrece sabores de helado individuales y paquetes de helados especiales para sus clientes. Esto se llama Venta basada en productos.

Un póster de heladería Descripción generada automáticamente

Venta basada en servicios

A medida que la marca de helados de Emma se expande, ella presenta el "Catering de helados" como un servicio exclusivo. La belleza de este servicio es que no tiene que preocuparse por la logística. El equipo de Emma se encarga de instalar, servir y limpiar después. Todo lo que necesitas hacer es sentarte y disfrutar de la celebración.

Caricatura de una persona sosteniendo un cono de helado Descripción generada automáticamente

Activo

Un producto, en este caso, se refiere a los deliciosos sabores de los helados y un Activo es la Heladería y el Carrito de Helados que ayuda a Emma a vender su Helado sin problemas.

Una tienda rosa con un letrero Descripción generada automáticamente

Yay… Aprendemos producto, libro de precios, entrada de libro de precios, venta basada en productos, venta basada en servicios y activos de la manera más dulce posible.

Un grupo de niños bailando Descripción generada automáticamente

Si te gusta el contenido, suscríbete a mi canal de Youtube sfdcamplified para obtener más temas como este.

Aprenda Salesforce como si tuviera 10 años: producto, libro de precios, entrada del libro de precios, activo

50% Me gusta VS
50% No me gusta

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=”UTF-8″?>
<LightningComponentBundle xmlns=”http://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

Salesforce Scale Center está generalmente disponible ☁️

Salesforce Scale Center está generalmente disponible ☁️

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.

Salesforce Scale Center está generalmente disponible | 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.

Estamos encantados de anunciar la disponibilidad general de Scale Center , una potente aplicación diseñada para ayudar a nuestros clientes a optimizar sus implementaciones de Salesforce con información mejorada sobre rendimiento y escalabilidad. Scale Center revoluciona la forma en que los equipos abordan el desarrollo, las pruebas y el monitoreo al proporcionar acceso de autoservicio y casi en tiempo real a las métricas de rendimiento de la organización y a los conocimientos prácticos.

En esta publicación, escuchará cómo Salesforce Scale Center ayuda a los ingenieros, arquitectos, desarrolladores y administradores de rendimiento a evaluar y resolver de manera proactiva los problemas de rendimiento en sus implementaciones de Salesforce, lo que permite a las empresas escalar con confianza.

La importancia de construir a escala

Escalar de manera eficiente es un aspecto crítico del diseño e implementación de aplicaciones en la plataforma Salesforce. Muchos clientes solo se dan cuenta de los problemas de escalabilidad una vez que los usuarios finales comienzan a informar un rendimiento y usabilidad degradados; en este punto, estos problemas ya han afectado el negocio. Diseñar para el futuro y predecir y simular el tráfico comercial futuro puede ser un desafío. Si bien algunos errores pueden detectarse durante la fase de diseño, la mayoría de los errores ocurren solo durante el tiempo de ejecución en producción y, a veces, se manifiestan durante las cargas máximas.

Salesforce Scale Center proporciona la visibilidad necesaria de las métricas de rendimiento necesarias para aislar los puntos críticos y la capacidad de profundizar en estos puntos críticos para el análisis de la causa raíz y la guía de remediación. Con Salesforce Scale Center, ahora puede abordar la escalabilidad de la aplicación de manera proactiva en lugar de reactivamente, asegurando soluciones más disponibles, receptivas y de rendimiento para su usuario final.

Obtenga una visión completa de sus métricas de rendimiento

Salesforce Scale Center permite a los clientes ver una instantánea de las métricas de rendimiento de su organización durante un intervalo de tiempo definido. A los clientes se les proporciona un panel único de visualización de errores comunes, incluidos inicios de sesión fallidos, errores de Apex simultáneos y errores de Rowlock. Además, los clientes pueden ver las métricas clave visualizadas en un gráfico durante la duración del intervalo de tiempo, incluido el tiempo de solicitud promedio, el tiempo de CPU de la base de datos y los errores totales. Con esta vista, los clientes pueden identificar rápidamente puntos críticos de rendimiento y escala.

Llevar a cabo un análisis profundo de un problema de rendimiento

Caso de uso: optimización del rendimiento de la base de datos

Salesforce Scale Center no se detiene simplemente en la visibilidad. Una vez que se observan puntos críticos, problemas y picos dentro de las métricas de rendimiento, los clientes pueden investigar los componentes y sistemas que están causando el problema.

Echemos un vistazo a nuestro primer caso de uso: optimizar el rendimiento de la base de datos. Imagine un escenario en el que los usuarios finales informen que el proceso de registro de su aplicación lleva mucho tiempo y falla con frecuencia. A continuación, explicaremos cómo puede abordar este problema utilizando Salesforce Scale Center.

  1. Navegue hasta el gráfico de CPU de la base de datos .

2. En el gráfico, haga clic y arrastre para resaltar los picos en las métricas de rendimiento.

3. Seleccione el tipo de informe e inicie un análisis de la base de datos.

4. Cambie a la pestaña Análisis de rendimiento para ver el informe generado.

5. Dentro del informe, puede identificar las principales consultas SOQL por tiempo de CPU de base de datos y procesos DML para solucionar qué acciones específicas están provocando una mala experiencia del usuario final.

Los tipos de informes disponibles en Salesforce Scale Center incluyen: Resumen de Apex, Apex concurrente, Rendimiento de base de datos, Rendimiento de flujo, Límites reguladores, Vistas de lista e informes, Rendimiento de integraciones y Bloqueo de fila. Adicionalmente, existe un informe consolidado que engloba todos los análisis.

Al seguir estos pasos y aprovechar el poder de Salesforce Scale Center, los desarrolladores pueden abordar los cuellos de botella en el rendimiento y optimizar los procesos para mejorar la eficiencia.

Comparar el rendimiento en diferentes períodos de tiempo

Salesforce Scale Center permite a los clientes comparar las métricas de rendimiento de la organización en diferentes períodos de tiempo. Los casos de uso clave incluyen:

  • Preparación para la implementación de producción:
    • Realice pruebas de rendimiento en un entorno de espacio aislado
    • Analice los resultados de las pruebas en Scale Center para identificar cuellos de botella o problemas de rendimiento antes de implementarlos en producción
  • Evaluación del impacto posterior a la implementación:
    • Después de un lanzamiento importante o una implementación de funciones en producción, aproveche Scale Center para comparar las métricas de la organización antes y después de la implementación.
    • Determinar si la implementación ha tenido algún impacto negativo en el desempeño general de la organización.
  • Análisis del rendimiento durante los días pico:
    • Utilice la función de comparación de Scale Center para evaluar el impacto en el rendimiento de la organización durante los días pico.
    • Compare las métricas de tráfico y rendimiento con el comportamiento de referencia, lo que ayuda a identificar cualquier cambio o problema potencial.

Cómo comparar períodos de tiempo en Salesforce Scale Center

  1. Proporcione un rango de tiempo base y un rango de tiempo de comparación.

2. Compare las métricas de primera línea.

3. Compare los gráficos de rendimiento de la organización.

Al aprovechar la función de comparación de Scale Center, los desarrolladores pueden obtener información valiosa sobre el rendimiento de la organización, identificar áreas de optimización y garantizar un proceso de implementación fluido y eficiente.

Comience con Salesforce Scale Center

Scale Center es de uso gratuito y está disponible en todas las organizaciones de sandbox de copia completa y de producción de UE.

Consideraciones del producto:

  • Scale Center no tiene impacto en el rendimiento de la organización y no accede a los datos de su organización
  • Tenga en cuenta que Scale Center no es compatible con Government Cloud Plus
  • Si desea que Scale Center esté habilitado en una organización fuera de UE, comuníquese con su representante de cuenta

Para acceder al Centro de escala:

  1. Navegue a Configuración.
  2. Ingrese "Centro de escala" en el cuadro Búsqueda rápida y haga clic en la pestaña Rendimiento de la organización en la hoja Rendimiento.
  3. Habilite Scale Center para su organización activando la opción Habilitar Scale Center .

Tenga en cuenta que las métricas de rendimiento pueden tardar hasta dos horas en aparecer después de habilitar Scale Center.

Más recursos

Sobre el Autor

Justin Saintil es Gerente de Producto Asociado en Salesforce y trabaja en la Cartera de Productos de Escalabilidad.

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

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).
  • [“latitud”, “longitud”].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

Explore la API de la plataforma de eventos con la colección de cartero extendida ☁️

Explore la API de la plataforma de eventos con la colección de cartero extendida ☁️

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

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

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

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

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

Acerca de la plataforma de eventos de Salesforce

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

Tipos de eventos

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

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

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

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

Canales personalizados

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

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

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

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

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

Relevo de eventos

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

Consulte esta publicación de Event Relay para obtener más información.

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

Actualizaciones de Salesforce Event Platform para la colección Postman

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

Canales personalizados

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

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

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

Publicar eventos de la plataforma

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

Configuración de retransmisión de eventos

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

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

esquema de eventos

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

Lo que nos depara la colección Postman

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

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

palabras de cierre

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

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

Recursos

Sobre el Autor

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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Comenzando con Acciones Externas ☁️

Comenzando con Acciones Externas ☁️

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

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

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

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

¿Qué son las Acciones Externas?

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

Por este motivo, las acciones externas se empaquetan en una extensión de aplicación de marketing. En el momento de escribir este artículo, las actividades externas aún no se pueden empaquetar, pero eventualmente también se empaquetarán en la extensión de la aplicación de marketing.

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

¿Cuáles son algunos buenos casos de uso para las acciones externas?

Bueno, si me preguntan, ¡diría absolutamente todo! Puede que estés pensando: “¡Claro, todo el mundo dice eso!”. Sin embargo, las posibilidades que desbloquean las acciones externas son realmente amplias. Si alguna vez ha dicho: "Me gustaría que cuando un prospecto llegue a este paso, yo pudiera <insertar deseo aquí>", entonces deseaba una acción externa.

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

¿Qué constituye una acción externa?

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

¿Qué habilidades necesito para trabajar con Acciones Externas?

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

SLDC de Salesforce

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

Documentación de la API REST

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

Implementación de Apex y Apex

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

Flujo de Salesforce (opcional)

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

¿Cómo debo configurar mi entorno de desarrollador?

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

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

Patrón básico para llamadas API REST con acciones externas

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

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

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

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

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

Poniendo a prueba tus acciones externas

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

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

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

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

Errores comunes

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

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

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

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

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

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

¿Que estas esperando? ¡Empiece hoy!

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

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

Recursos

Sobre el Autor

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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

¡Ya está aquí la CLI sf (v2) de Salesforce! — Parte 1 ☁️

¡Ya está aquí la CLI sf (v2) de Salesforce! — Parte 1 ☁️

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

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

¡Ya está aquí la CLI sf (v2) de Salesforce! — Parte 1 | Blog de desarrolladores de Salesforce

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

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

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

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

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

Adopte el futuro del desarrollo de Salesforce

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

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

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

Comience con la CLI de Salesforce sf (v2)

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

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

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

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

¿Que sigue?

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

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

Recursos

Sobre los autores

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

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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Sugar Rush of Salesforce CPQ Pricing: ¡Revelación de condiciones de precio y acciones en el país de las maravillas de las tiendas de golosinas!

Sugar Rush of Salesforce CPQ Pricing: ¡Revelación de condiciones de precio y acciones en el país de las maravillas de las tiendas de golosinas!

¡Bienvenido al encantador Candy Store Wonderland, donde nos sumergiremos en la encantadora aventura de la magia de fijación de precios de Salesforce CPQ! Desenvolveremos la condición del precio y la acción del precio con los escenarios de la tienda de golosinas.

Exploraremos ejemplos de condiciones de precios cubiertas de dulces como "Obtenga una bolsa de regalo con la compra de deliciosos dulces de chocolate", acciones de precios dulces como "Compre uno, obtenga un dulce gratis para duplicar la dulzura" que lo dejarán con ganas de más. Descubriremos cómo se pueden personalizar las condiciones de precio y las acciones para crear promociones, descuentos y ofertas únicos que hagan que los clientes regresen para disfrutar de más aventuras llenas de dulces.

¡Despleguemos juntos la magia de los precios!

Precio Condición

Exploremos el uso del objeto Condición de precio con la ayuda de casos de uso.

1. Descuento por tipo de caramelo:

– Condición: establezca el campo en "Tipo de caramelo" y el operador en "Iguales". Especifique el valor como "Ositos de gominola".

– Resultado: cuando un cliente agrega dulces de ositos de goma a su cotización, la Condición de precio evaluará el tipo de dulce y aplicará la acción de fijación de precios definida, como un descuento o un precio ajustado.

2. Umbral de cantidad:

– Condición: Defina el Campo como “Cantidad” y el Operador como “Mayor que” o “Igual”. Establezca el Valor como un umbral de cantidad específico, como 10.

– Resultado: cuando un cliente agrega dulces a su cotización y la cantidad supera el umbral especificado, la condición de precio activará una acción de fijación de precios, como un descuento por volumen o un nivel de precios diferente.

3. Condición de atributo personalizado:

– Condición: defina un campo personalizado en la sección Campo, como “Dulces orgánicos”. Establezca el Operador en "Equals" y el Valor en "True".

– Resultado: cuando un cliente agrega dulces orgánicos a su cotización, la Condición de precio verificará el atributo personalizado y aplicará una acción de precio específica, como un precio premium o un descuento para productos orgánicos.

4. Promoción basada en fechas:

– Condición: Especifique el campo como “Fecha de cotización” Establezca el Operador en “Dentro del rango” y proporcione el rango de fechas deseado para la promoción.

– Resultado: cuando la cotización o el artículo de línea se encuentran dentro del rango de fechas especificado, la Condición de precio activará una acción de fijación de precios, como un descuento por tiempo limitado o una oferta especial.

El objeto Regla de precio y Condición de precio tienen una relación maestro-detalle.

Una captura de pantalla de una computadora Descripción generada automáticamente

Descripción de los campos en el objeto de condición de precio

Una captura de pantalla de una computadora Descripción generada automáticamente

¿Cuál es el uso del campo de regla de precio en el objeto de condición de precio?

Conecta la condición de precio con la regla de precio principal. Significa a qué regla de precio está asociada la condición de precio y determina bajo qué regla se debe evaluar la condición.

¿Cuál es el significado de Objeto y Campo en la Condición de Precio?

Fondo con rayas amarillas y blancas Descripción generada automáticamente

Al crear una Condición de precio, selecciona el objeto apropiado de las opciones disponibles en el campo "Objeto". Esto especifica el objeto relacionado al que desea hacer referencia en la condición. Una vez que seleccione el objeto, puede elegir el campo específico de ese objeto en el campo "Campo de objeto".

Por ejemplo, supongamos que tiene una Condición de precio que verifica si el campo "Sabor a caramelo" en el objeto Línea de cotización relacionado es igual a "Limón". En este caso, seleccionaría el objeto "Línea de cotización" en el campo "Objeto" y luego elegiría el campo "Sabor a caramelo".

Escenario: configure una condición de precio para verificar si el campo "Tipo" del caramelo asociado con la línea de cotización es igual a "Gummy Bear".

Así es como funciona:

1. En el registro de Condición de precio, seleccionaría el objeto "Línea de cotización" en el campo "Objeto". Esto indica que desea evaluar un campo del objeto Línea de cotización.

2. A continuación, en el campo "Object Field", elegiría el campo "Candy.Type". Esto especifica que desea hacer referencia al campo "Tipo" del objeto Candy relacionado asociado con la línea de cotización.

3. Para completar la condición, establecería el operador como "Equals" y proporcionaría el valor "Gummy Bear". Esta condición verificará si el tipo de Caramelo para la línea de cotización asociada es "Gummy Bear".

Una captura de pantalla de una computadora Descripción generada automáticamente

¿Qué es el campo variable probado en la condición de precio?

El campo "Variables probadas" en el objeto Condición de precio le permite almacenar y hacer referencia a valores intermedios durante la evaluación de la condición. Entendamos su uso con un ejemplo de caramelo.

Escenario: Desea aplicar un descuento en un tipo específico de golosina, pero solo si la cantidad total de todos los artículos de golosina en la cotización supera un límite determinado.

1. Precio Condición:

– Objeto: Línea de cotización

– Campo de objeto: Producto.Tipo (para verificar el tipo de dulce)

– Condición: Tipo de Caramelo es igual a “Barra de Chocolate”

2. Variables probadas:

– Cree una variable probada llamada "TotalCandyQty" para almacenar la cantidad total de todos los artículos de dulces en la cotización.

3. Acción del precio:

– Objeto: Cita

– Campo de objeto: Porcentaje de descuento

– Acción: Actualizar Campo

– Valor: si TotalCandyQty es mayor que 10, establezca el Porcentaje de descuento en 10 %; de lo contrario, ajústelo al 5%.

Solución

En este ejemplo, la Condición de precio verifica si el tipo de dulce es "Barra de chocolate" para cada línea de cotización. Si coincide, puede utilizar el campo "Variables probadas" para almacenar la cantidad total de todos los dulces en la cotización.

La Acción del precio luego actualiza el campo Porcentaje de descuento en la Cotización en función del valor de la variable probada "TotalCandyQty". Si la cantidad total de artículos de dulces en la cotización supera los 10, se aplica un descuento del 10%. En caso contrario, se aplica un descuento del 5%.

Al usar el campo "Variables probadas", puede calcular y almacenar la cantidad total de dulces en la cotización y usarla en acciones posteriores para determinar el porcentaje de descuento apropiado. Esto le permite aplicar diferentes descuentos en función de la cantidad total de dulces en la cotización.

¿Cuál es el uso del campo de fórmula probado en la condición de precio?

Un objeto rectangular blanco con un borde negro Descripción generada automáticamente

El campo "Fórmula probada" en una Condición de precio le permite definir una expresión de fórmula que se evalúa para determinar si la condición se cumple o no. Le permite crear condiciones dinámicas que consideran diferentes factores.

Escenario: desea aplicar un descuento en un producto solo si se cumplen las siguientes condiciones:

– El producto es una “Barra de Chocolate” o un “Osito de Gominola”.

– La cantidad del producto es mayor o igual a 10.

– El precio total del producto supera los $50.

Para configurar esta condición usando una fórmula probada:

1. Cree una Condición de Precio con los siguientes detalles:

– Objeto: Línea de cotización

– Fórmula probada: ingrese la expresión de la fórmula que combina las condiciones:

`(Tipo de producto = "Barra de chocolate" || Tipo de producto = "Osito de goma") && Cantidad >= 10 && Precio total > 50`

En este ejemplo, la fórmula probada combina múltiples condiciones usando operadores lógicos (|| para OR, && para AND). Comprueba si el tipo de producto es "Barra de chocolate" o "Gummy Bear", la cantidad es mayor o igual a 10 y el precio total es mayor a $50. Solo si todas estas condiciones son ciertas, se cumplirá la Condición de Precio.

¿Cuál es la diferencia entre la “Fórmula Probada” en una Condición de Precio y la “Condición Avanzada” en una Regla de Precio?

La "Fórmula Probada" en una Condición de Precio y la "Condición Avanzada" en una Regla de Precio le permiten definir condiciones complejas para determinar cuándo se debe aplicar una acción o ajuste específico. Sin embargo, hay algunas diferencias clave entre ellos:

Fórmula probada en condición de precio:

– Se utiliza dentro de una Condición de precio para evaluar si la condición se cumple o no para elementos de línea de cotización individuales.

– Se evalúa a nivel de línea de pedido, considerando los valores específicos de los campos en la línea de cotización.

– La fórmula puede incluir referencias de campo, operadores lógicos, comparaciones y funciones para realizar cálculos y comparaciones en función de los valores de los campos en la partida de presupuesto.

– El resultado de la fórmula determina si se cumple la condición y, de ser así, las acciones de precio asociadas se aplicarán a la línea de cotización.

Condición avanzada en la regla de precio:

– Se usa dentro de una regla de precio para definir condiciones más complejas que pueden involucrar múltiples elementos de línea de cotización u objetos relacionados.

– Se evalúa a nivel de regla, teniendo en cuenta los valores en varias partidas de cotización u objetos relacionados.

– La condición avanzada generalmente se escribe utilizando Apex o SOQL (lenguaje de consulta de objetos de Salesforce) y puede incluir lógica personalizada, consultas y cálculos.

– El resultado de la condición avanzada determina si se aplica toda la regla o se omite por completo para una cotización en particular.

En resumen, la fórmula probada en una Condición de precio se usa para evaluar las condiciones en el nivel de partida de cotización individual , mientras que la condición avanzada en una Regla de precio permite condiciones más avanzadas que involucran múltiples partidas de cotización u objetos relacionados.

Comprendamos la diferencia entre la fórmula probada en una Condición de precio y la condición avanzada en una Regla de precio con la ayuda de un ejemplo:

Guión:

Dispones de una Regla de Precio para aplicar un descuento en productos en base a las siguientes condiciones:

– Condición 1: Aplicar un 10% de descuento si la cantidad de productos es mayor o igual a 10.

– Condición 2: Aplicar un 5% de descuento si el producto pertenece a una categoría específica, “Categoría Especial”.

Fórmula probada en condición de precio:

En este enfoque, utilizará una fórmula probada dentro de cada condición de precio para evaluar la condición en el nivel de artículo de línea de cotización individual.

Precio Condición 1:

– Objeto: Línea de cotización

– Fórmula probada: `Cantidad >= 10`

Precio Condición 2:

– Objeto: Línea de cotización

– Fórmula probada: `Producto.Categoría = “Categoría especial”`

En este ejemplo, la fórmula probada se usa para verificar si cada elemento de línea de cotización cumple con la condición específica. Si la fórmula se evalúa como verdadera para un artículo de línea de cotización, la acción de precio asociada se aplicará a ese artículo.

Condición avanzada en la regla de precios:

En este enfoque, utilizará una condición avanzada dentro de la regla de precio para evaluar las condiciones a nivel de regla, considerando varios elementos de línea de cotización.

Regla de precio:

– Condición avanzada: `SUM(QuoteLine.Quantity) >= 10 && MAX(QuoteLine.Product.Category) = “Special Category”`

En este ejemplo, la condición avanzada se usa para evaluar las condiciones en todos los elementos de línea de cotización en la cotización. Si la condición avanzada se evalúa como verdadera, las acciones de precio asociadas dentro de la regla de precio se aplicarán a todos los elementos de línea de cotización elegibles.

¿Para qué sirve el campo “Operador” en una Condición de Precio?

Una captura de pantalla de una computadora Descripción generada automáticamente

Este campo determina la comparación u operación lógica a realizar al evaluar la condición.

Los operadores disponibles en el campo "Operador" pueden variar según el tipo de datos del campo que se compara. Aquí hay algunos operadores comunes que puede encontrar:

– Igual a (=): Comprueba si el valor del campo es igual al valor especificado.

– No es igual a (!=): Comprueba si el valor del campo no es igual al valor especificado.

– Mayor que (>): Comprueba si el valor del campo es mayor que el valor especificado.

– Menor que (<): Comprueba si el valor del campo es menor que el valor especificado.

– Mayor o igual que (>=): Comprueba si el valor del campo es mayor o igual que el valor especificado.

– Menor o igual que (<=): Comprueba si el valor del campo es menor o igual que el valor especificado.

– Contiene: comprueba si el valor del campo contiene una subcadena o valor específico.

Por ejemplo, si tiene una Condición de precio para aplicar un descuento cuando la cantidad de un producto es mayor a 10, utilizará el operador "Mayor que" (>) y especificará el valor 10 en la condición.

¿Qué es el campo Uso del tipo de filtro en el objeto de condición de precio?

Una captura de pantalla de una computadora Descripción generada automáticamente

1. Variable: Le permite seleccionar una variable de resumen que contiene un valor específico. Las variables de resumen se utilizan para almacenar y hacer referencia a valores calculados basados en agregaciones o lógica de fórmula.

2. Fórmula: Le permite especificar una fórmula o expresión que determina la condición para que se aplique la Regla de Precio. Puede utilizar funciones de fórmula, operadores y referencias de campo para crear condiciones complejas basadas en los valores de la partida de presupuesto u otros objetos relacionados.

3. Valor: especifica un valor específico con el que se comparará el campo de la partida de cotización. Por lo general, se usa junto con los campos "Campo" y "Operador" para definir la condición.

Juntos, la "Variable", la "Fórmula" y el "Valor" le permiten definir las condiciones que determinan cuándo se debe aplicar la regla de precio a una partida de cotización específica.

¿Qué es el campo de valor de filtro en la condición de precio?

Un rectángulo azul y blanco Descripción generada automáticamente

El valor del filtro representa el valor esperado o el umbral con el que se compara el campo de la partida de presupuesto o grupo de partidas de presupuesto. El valor del filtro puede ser un valor numérico, un valor de texto, una fecha o cualquier otro tipo de datos adecuado según el campo que se utilice en la condición.

Escenario: regla de precio que ofrece un descuento en los dulces de ositos de goma si la cantidad supera un cierto umbral. Desea solicitar un 10% de descuento cuando la cantidad es superior a 10.

Solución

En este escenario, la Condición de Precio tendrá la siguiente configuración:

– Tipo de filtro: Campo de línea de cotización

– Campo: Cantidad

– Operador: Mayor que

– Valor del filtro: 10

Aquí, el valor del filtro se establece en 10, lo que indica que la condición busca una cantidad superior a 10. Al evaluar las líneas de cotización, si la cantidad de dulces de ositos de goma supera los 10, la condición se considera verdadera y la regla de precio con se aplicará la acción asociada, como aplicar el 10% de descuento.

¿Cuál es el uso del campo variable de filtro en la condición de precio?

El campo Filtrar variable en la condición de precio le permite hacer referencia a una variable personalizada específica de una línea de cotización o un grupo de líneas de cotización y utilizarla en la evaluación de la condición.

Consideremos un ejemplo de caramelo para comprender el uso del campo de variable de filtro en la condición de precio.

Guión

Supongamos que tiene una variable personalizada llamada "MinOrderQuantity". El objetivo es aplicar un descuento cuando la cantidad supera el valor de MinOrderQuantity de 10.

Solución:

1. Defina una variable personalizada:

– Cree una variable personalizada llamada "MinOrderQuantity" para representar la cantidad mínima de dulces necesaria para calificar para un descuento.

– Establezca el valor de “MinOrderQuantity” en 10.

2. Crear una condición de precio:

– Tipo de filtro: Campo de línea de cotización

– Campo: Cantidad

– Operador: Mayor que o Igual a

– Campo de variable de filtro: MinOrderQuantity

Esta condición de precio verifica si la cantidad de artículos de dulces en la línea de cotización es mayor o igual que el valor almacenado en la variable "MinOrderQuantity".

3. Cree una acción de precio:

– Especificar la acción a realizar cuando se cumpla la Condición de Precio. Por ejemplo, puedes aplicar un descuento del 10% al Precio Unitario de los artículos de golosinas.

4. Aplicar la regla del precio:

– Conecte la Condición de precio y la Acción de precio a la Regla de precio.

– Asegúrese de que la regla de precios esté activa y configurada para activarse correctamente en su configuración de precios.

Ahora, veamos cómo funciona este ejemplo:

– Escenario 1: la cantidad es inferior a 10

– Si la cantidad de artículos de dulces en la línea de cotización es inferior a 10, la condición de precio se evalúa como falsa.

– La regla de precio no se activa y no se aplica ningún descuento.

– Escenario 2: la cantidad es 10 o más

– Si la Cantidad de artículos de dulces en la línea de cotización es igual o superior a 10, la Condición de precio se evalúa como verdadera.

– Se activa la regla de precio y se ejecuta la acción especificada, como aplicar un descuento del 10 % al precio unitario, en esos artículos de dulces.

¿Cuál es la diferencia entre el campo Variable de filtro y Variable probada en Condición de precio?

La principal diferencia entre una variable de filtro y una variable probada en Salesforce CPQ es el contexto en el que se utilizan.

Variable de filtro:

– Se utiliza una variable de filtro en la Condición de precio para definir una condición dinámica basada en un valor específico almacenado en una variable personalizada.

– Le permite hacer referencia a una variable personalizada definida dentro del contexto de la partida de cotización o grupo de partidas de cotización.

– La variable de filtro se utiliza como parte de la evaluación de la condición para compararla con otros campos o valores.

– Ayuda a determinar si se cumplen o no las condiciones especificadas en la Condición de Precio.

Variable probada:

– Una variable probada se usa en la condición avanzada de una regla de precio para evaluar una fórmula o lógica basada en valores específicos almacenados en variables personalizadas.

– Te permite crear condiciones o cálculos complejos basados en los valores de las variables personalizadas.

– La variable probada se usa en combinación con otras variables, campos o fórmulas para determinar el resultado de la condición avanzada.

Diferenciemos entre el campo Variable de filtro y Variable probada en el contexto de un ejemplo de caramelo:

Ejemplo: descuento de temporada en la tienda de golosinas

Escenario: Filtrar uso de variables

Si el cliente pide 25 dulces, la Condición de precio con la variable de filtro "MinOrderQuantity" evaluará si la cantidad es mayor o igual a 20. Si se cumple la condición, se activará la acción especificada, como aplicar un descuento. .

Solución

1. Cree una variable personalizada llamada "MinOrderQuantity"

2. Establezca el valor de "MinOrderQuantity" en 20, lo que indica que los clientes deben pedir al menos 20 dulces para ser elegibles para el descuento.

Precio Condición:

3. Cree una condición de precio en la regla de precio.

4. Seleccione el campo "Cantidad" como campo de filtro.

5. Elija el operador "Mayor o igual que".

6. Ingrese el valor del filtro como la variable "MinOrderQuantity".

7. Especifique la acción que desea realizar, como aplicar un porcentaje de descuento, cuando se cumpla la condición.

Escenario Probado Uso de variables

Ejemplo: Si el cliente tiene un nivel de lealtad de "Oro" y la variable probada "Porcentaje de descuento" se establece en 15%, la Condición avanzada evaluará si el nivel de lealtad del cliente es "Oro". Si la condición es verdadera, el porcentaje de descuento será ser ejecutado.

Solución

1. Cree una variable personalizada denominada "Porcentaje de descuento" en Salesforce CPQ.

2. Establezca el valor de "Porcentaje de descuento" en 15, lo que indica un 15% de descuento para clientes leales.

Condición avanzada:

3. Cree una Condición Avanzada en la Regla de Precio.

4. Defina la lógica utilizando variables probadas, como "Porcentaje de descuento", nivel de lealtad del cliente y otros criterios.

5. Especifique la acción que desea realizar, como aplicar el porcentaje de descuento, cuando la Condición avanzada se evalúe como verdadera.

En resumen, las variables de filtro se utilizan en Condiciones de precio para verificar si se cumplen ciertos criterios o umbrales, en función de variables, campos o valores personalizados. Las variables probadas, por otro lado, se utilizan en Condiciones Avanzadas para realizar cálculos o lógica basada en variables personalizadas , atributos del cliente u otros factores para determinar el resultado de la Regla de Precio.

¿Cómo usamos el campo Fórmula de filtro en la condición de precio?

El campo de fórmula de filtro en Condición de precio le permite definir una condición basada en fórmula para determinar si se debe aplicar la regla. Consideremos un ejemplo en el contexto de una tienda de golosinas:

Escenario: Compre uno, llévese otro gratis Promoción

Si el cliente está comprando al menos dos artículos de dulces, aplique un descuento para que uno de los artículos sea gratis como parte de la promoción "Compre uno, llévese otro gratis".

Solución

Este es un ejemplo paso a paso del uso del campo de fórmula de filtro en la Condición de precio para implementar una promoción de "Compre uno, llévese otro gratis" en el escenario de una tienda de golosinas:

1. Configure la Condición de Precio:

– Establezca el tipo de filtro en "Fórmula" en el registro de Condición de precio.

– Introduzca una fórmula en el campo de fórmula de filtro para comprobar si se cumple la condición. Cantidad >= 1.

– Esta fórmula verifica si la cantidad del artículo de dulces en la línea de cotización es mayor o igual a 1, lo que indica que el cliente está comprando al menos dos artículos.

2. Especifique la acción deseada:

– Determine la acción que desea realizar cuando la fórmula del filtro se evalúe como verdadera. En este caso, se trata de una promoción de “Compre uno, llévese otro gratis”.

¿Cuál es el uso del campo de índice en la condición de precio?

El campo "Índice" en el objeto Condición de precio se puede utilizar para definir el orden en el que se evalúan las condiciones para aplicar las reglas de precios. Consideremos un ejemplo para entender su uso:

Escenario: Descuento para barras de chocolate

1. Cree una regla de precio para aplicar un descuento a las barras de chocolate.

2. Agregue múltiples condiciones de precio dentro de la regla de precio para definir diferentes condiciones bajo las cuales se debe aplicar el descuento. Por ejemplo:

– Condición de Precio 1: Comprobar si el tipo de caramelo es “Barra de Chocolate”.

– Condición de Precio 2: Comprobar si la cantidad de barras de chocolate es mayor o igual a 10.

– Condición de precio 3: Comprobar si el cliente tiene un nivel de membresía específico.

3. Establezca los valores del índice para cada condición de precio:

– Condición de precio 1: establezca el valor del índice en 1.

– Condición de precio 2: establezca el valor del índice en 2.

– Condición de precio 3: establezca el valor del índice en 3.

Al asignar valores de índice a las condiciones de precio, está definiendo el orden en el que deben evaluarse. En este ejemplo, se evaluará primero la condición de precio 1 con un valor de índice de 1, seguida de la condición de precio 2 con un valor de índice de 2 y finalmente la condición de precio 3 con un valor de índice de 3.

————

Acción del precio

Exploremos el uso del objeto Price Action con varios ejemplos.

1. Aplicar un descuento:

– Acción de precio: establezca un objeto de acción de precio con el objeto de destino como "Línea de cotización"

– Acción: especifique un porcentaje de descuento, como un 20 % de descuento, en la Acción de precio.

– Resultado: Cuando un cliente agrega un dulce específico a su cotización, Price Action automáticamente aplicará el descuento al Precio Unitario de ese dulce, resultando en un precio reducido.

2. Precios por volumen:

– Acción de precio: Cree un objeto de Acción de precio con el Objeto de destino establecido como “Línea de cotización”.

– Acción: defina una estructura de nivel de precio en la Acción de precio basada en rangos de cantidad. Por ejemplo:

– 1-10 dulces: $1 por dulce

– 11-20 dulces: $0.90 por dulce

– 21+ dulces: $0.80 por dulce

– Resultado: cuando un cliente agrega dulces a su cotización, Price Action ajustará el precio unitario en función de la cantidad, proporcionando descuentos de precios basados en el volumen.

3. Regalo con Compra:

– Acción de precio: establezca el objeto de destino como "Cotización" para aplicar la acción en el nivel de cotización.

– Acción: Especifique una condición de que si el cliente compra una cierta cantidad de un dulce específico, recibirá un regalo.

– Resultado: cuando se cumple la condición especificada, Price Action agregará automáticamente el obsequio a la cotización, mejorando la experiencia del cliente.

4. Precios especiales para clientes VIP:

– Acción de precio: cree un objeto de acción de precio con el objeto de destino como "Cotización" o "Línea de cotización" según sus requisitos.

– Acción: defina un campo personalizado que identifique a los clientes VIP. Establezca la Acción de precio para aplicar un descuento específico para esos clientes.

– Resultado: Cuando un cliente VIP agregue dulces a su cotización, Price Action reconocerá su estado y aplicará el descuento exclusivo automáticamente.

Estos ejemplos demuestran cómo el objeto Price Action le permite definir acciones específicas, como aplicar descuentos, ajustar precios en función de la cantidad, ofrecer obsequios o proporcionar precios especiales para segmentos de clientes específicos. El objeto Price Action le permite automatizar estas acciones.

La regla de precio y el objeto de acción de precio tienen una relación maestro-detalle.

Una captura de pantalla de una computadora Descripción generada automáticamente

Comprensión de los campos en el objeto de acción del precio

Una captura de pantalla de una computadora Descripción generada automáticamente

¿Cuál es el uso del campo de regla de precio en el objeto de acción de precio?

Conecta la acción del precio con la regla de precio principal. Indica a qué regla de precio está asociada la acción de precio y determina bajo qué regla debe evaluarse la condición.

¿Cuál es la importancia del objeto objetivo en la acción del precio?

Una captura de pantalla de una computadora Descripción generada automáticamente

El objeto de destino en la acción del precio determina dónde se aplicarán los cambios de precios especificados en la acción del precio.

Suponga que tiene una acción de precio que aplica un descuento del 10 % al precio unitario de los dulces de ositos de goma cuando la cantidad supera los 100. El campo Objeto de destino en la acción de precio determina qué registros recibirán este descuento.

En este caso, seleccionaría el objeto "Línea de cotización" como el Objeto de destino en la Acción del precio. Esto significa que el descuento se aplicará a los registros de línea de cotización que representan los dulces de ositos de goma en la cotización.

¿Importancia del campo Valor en Price Action?

El campo Valor en el objeto Acción del precio se usa para especificar el valor específico o los datos que deben establecerse en el campo del objeto de destino. Define el resultado de la acción del precio, indicando el resultado deseado o el cambio que debe ocurrir.

Escenario: cuando un cliente agrega un osito de gominola con sabor a fresa a su cotización, Price Action actualizará el campo Precio de ese dulce al valor especificado de $2.50.

Solución:

– Acción de precio: Cree un objeto de Acción de precio con el Objeto de destino establecido como “Línea de cotización”.

– Campo: elija el campo “Precio” en el objeto de destino que desea actualizar con un nuevo valor

– Valor: Especifique el precio deseado para el sabor del caramelo en el campo Valor. Si el dulce es un osito de goma con sabor a fresa, establezca el campo Valor en $2,50.

¿Cuál es el uso del campo Fórmula en el objeto Acción de precio y el campo Fórmula en el objeto Condición de precio?

Comprendamos cuándo usar el campo Fórmula en cada objeto.

  • El campo Fórmula en la Acción del precio se usa para calcular y aplicar directamente el monto del descuento o el valor del campo según ciertos criterios.
  • El campo Fórmula en la Condición de precio establece condiciones o calcula valores que determinan cuándo debe ejecutarse la Acción de precio.

Suponga que desea ofrecer un 10 % de descuento en un dulce de sabor a “chocolate”, pero el monto del descuento varía según la cantidad pedida del sabor de dulce de chocolate en la cotización.

Uso de la fórmula en la acción del precio:

En este escenario, puede agregar un campo Fórmula directamente al objeto Acción del precio. La fórmula calcularía el monto del descuento en función de la cantidad del sabor del caramelo "chocolate".

Uso de fórmula en condición de precio:

En algunos casos, es posible que desee aplicar el descuento solo si la cantidad del sabor de caramelo específico supera cierto umbral.

“SI (Cantidad > 10, 0,2, 0,1)” que establece el porcentaje de descuento en un 20% si la cantidad es superior a 10 y en un 10% en caso contrario. La condición de precio comprueba esta fórmula y evalúa si se cumple la condición. Si se cumple la condición, activa la Price Action asociada con el porcentaje de descuento definido.

Razones para usar fórmulas en condiciones de precio:

1. Lógica condicional: el campo Fórmula en la Condición de precio le permite definir la lógica condicional en función de criterios específicos. Puede configurar condiciones complejas que involucren múltiples campos o cálculos para determinar si se debe activar la acción del precio.

2. Filtrado avanzado: la condición de precio puede evaluar varios factores, como cantidad, precio, rango de fechas o cualquier otro campo relevante antes de decidir aplicar la acción de precio.

Razones para usar fórmulas en la acción del precio:

1. Actualizaciones directas de campo: si el cálculo del descuento es sencillo y no requiere condiciones complejas o filtrado, puede calcular y actualizar directamente el valor del campo en la acción del precio.

¿Cuál es la importancia del campo fuente en la acción del precio?

El "Campo de origen" en Price Action especifica el campo desde el cual se obtendrá el valor y se utilizará en Price Action.

Guión:

Para un producto de golosina en particular, el campo "Precio original" en el objeto Producto es $10.

Cuando se activa la Acción de precio, obtendrá el valor de $10 del campo "Precio original" en el objeto Producto.

La acción del precio luego actualizará el campo "Precio con descuento" en la línea de cotización con el valor obtenido. Digamos que tienes un porcentaje de descuento del 20%. En este caso, el cálculo sería:

Precio con descuento = Precio original – (Precio original * Porcentaje de descuento)

= $10 – ($10 * 0.20)

= $10 – $2

= $8

Después de ejecutar la acción de precio, el campo "Precio con descuento" en la línea de cotización se actualizará con el valor calculado de $8.

Solución:

Los siguientes detalles se completarán en el objeto de acción del precio:

– Objeto de origen: Producto

– Campo de origen: precio original

– Objeto de destino: línea de cotización

– Campo objetivo: Precio con descuento

¿Diferencia entre el campo de origen y el campo de búsqueda de origen en la acción del precio?

Objeto rectangular blanco con fondo blanco Descripción generada automáticamente

Campo de origen:

– El campo de origen hace referencia a un campo específico en el objeto de origen del que se obtienen los datos y se utilizan en la acción del precio.

Campo de búsqueda de fuente:

– El campo de búsqueda de origen, por otro lado, se usa cuando desea obtener el valor de campo de un registro relacionado a través de una relación de búsqueda. Le permite atravesar un campo de búsqueda para acceder a campos en el objeto relacionado y usarlos en la acción del precio.

Para entender la diferencia, consideremos un ejemplo con una tienda de golosinas:

Suponga que tiene un campo personalizado denominado "Precio original" en el objeto Producto y una relación de búsqueda entre los objetos Producto y Fabricante. El objeto Fabricante tiene un campo llamado "Nombre del fabricante".

Si desea buscar y usar el valor del campo "Precio original" directamente, usaría el Campo de origen. Sin embargo, si desea acceder al valor del campo "Nombre del fabricante" a través de la relación de búsqueda, debe utilizar el Campo de búsqueda de origen.

Aquí hay una comparación entre los dos:

Campo de origen:

– Ejemplo: Producto.Precio_Original__c

– Hace referencia directa al campo en el objeto de origen.

– Obtiene y utiliza el valor del campo especificado tal cual.

Campo de búsqueda de fuente:

– Ejemplo: Producto.Fabricante__r.Nombre_Fabricante__c

– Recorre una relación de búsqueda para acceder al valor de campo del objeto relacionado.

– Obtiene y usa el valor del campo especificado en el objeto relacionado.

En resumen, el campo de origen se usa para hacer referencia directamente a un campo en el objeto de origen, mientras que el campo de búsqueda de origen se usa para obtener el valor de campo de un registro relacionado a través de una relación de búsqueda. La elección depende de los datos específicos que desea recuperar y utilizar en la acción del precio.

¿Cuál es el uso del campo Variable de origen en la regla de precio?

Continuemos con nuestro ejemplo de la tienda de golosinas para ilustrar el uso del campo variable de origen en una acción de precio.

El campo Variable de origen en la Acción de precio le permite obtener el valor de la variable personalizada, digamos "Porcentaje de descuento" de la Regla de precio asociada. Esto permite que Price Action aplique dinámicamente el porcentaje de descuento correcto al campo "Precio con descuento".

1. Configure los siguientes detalles para la acción del precio:

– Objeto de origen: línea de cotización

– Objeto de destino: línea de cotización

– Campo objetivo: Precio con descuento

– Campo de variable de origen: Porcentaje de descuento

3. Digamos que la regla de precio determinó que el porcentaje de descuento aplicable es del 15 % en función de la cantidad de dulces en la cotización.

4. La acción del precio usará el valor obtenido del 15 % y lo aplicará al campo "Precio con descuento" en la línea de cotización. Supongamos que el precio original de los dulces es de $10.

Precio con descuento = Precio original – (Precio original * Porcentaje de descuento)

= $10 – ($10 * 0,15)

= $10 – $1.50

= $8.50

5. Después de ejecutar la acción de precio, el campo "Precio con descuento" en la línea de cotización se actualizará con el valor calculado de $8,50.

50% Me gusta VS
50% No me gusta

Seguir leyendo

Salesforce CPQ cubierto de azúcar: ¡Desentrañando las reglas de precios en el mundo de las tiendas de golosinas!

Salesforce CPQ cubierto de azúcar: ¡Desentrañando las reglas de precios en el mundo de las tiendas de golosinas!

Imagine que está creando un sistema Salesforce CPQ para una tienda de golosinas. Vaya, será muy divertido. ¿Cómo usaría las reglas de precios para manejar promociones especiales, como una oferta de "Compre uno, llévese otro gratis" para un dulce específico? En el escenario de la tienda de golosinas, ¿cómo crearía una regla de precio para aplicar un descuento del 20 % a todos los chocolates durante el Día de San Valentín?

Entonces, ¡saltemos y exploremos las reglas de precios en el universo de Salesforce CPQ cubierto de azúcar! Yay 😊

¿Regla de precios en Salesforce CPQ?

Imagina que tienes una tienda de dulces con diferentes tipos de dulces como piruletas, ositos de goma y barras de chocolate. Cada caramelo tiene un precio diferente. Ahora, hablemos de la regla del precio:

La regla del precio es como una regla especial que creas para tu tienda de golosinas. Te ayuda a decidir cómo fijar los precios o aplicar descuentos a diferentes dulces en función de determinadas condiciones.

Por ejemplo, supongamos que desea tener una oferta de "Compre uno, llévese otro gratis" para dulces de ositos de goma. Puede crear una regla de precios que diga que cada vez que alguien compra un paquete de ositos de goma, obtiene otro paquete gratis. ¡Es como una oferta especial solo para los amantes de los ositos de goma!

O tal vez quieras tener un descuento en piruletas por tiempo limitado. Puede crear una regla de precio llamada "Venta de piruletas" que reduce el precio de las piruletas en un 20 % durante una semana. Esto hace que las piruletas sean más asequibles y anima a más personas a comprarlas.

La regla de precios le permite establecer diferentes acciones y condiciones de precios para cada tipo de dulce. Puede definir descuentos, ofertas especiales o incluso ajustar los precios en función de condiciones específicas, como la cantidad comprada o el estado de membresía del cliente.

Al crear Reglas de precios, puede hacer que su tienda de golosinas sea más emocionante y atraer a más clientes. Te ayuda a establecer precios y aplicar descuentos de una manera que hace felices a las personas y las alienta a comprar sus dulces favoritos.

Imagen

¿Cuál es la estructura de la Regla de Precios?

La regla de precios incluía tres registros relacionados:

  1. Regla de precio
  2. Precio Condición
  3. Acción del precio

La Regla de precio tiene una relación Maestro-Detalle con la Condición de precio y la Acción de precio.

Al conectar la regla de precios con las condiciones de precios secundarias relevantes, el sistema de precios garantiza que se apliquen las reglas apropiadas en función de condiciones específicas. Price Action define las acciones que se deben tomar cuando se cumplen las condiciones de precio asociadas. Especifica cómo se deben modificar los precios u otros valores de campo en función de los criterios de la regla.

1. Regla de precio: La regla de precio contiene todas las reglas específicas para la fijación de precios en la tienda de golosinas. Le dice a la tienda cómo manejar diferentes situaciones al establecer los precios de los dulces.

2. Condición de precio: Hay alguien en la tienda que verifica el tipo de dulces que desea comprar. Se aseguran de que cumpla ciertas condiciones, como ser un “Gummy Bear” o tener un sabor específico.

3. Acción del precio: una vez que el dulce pasa la inspección, hay alguien que ajusta el precio según las reglas de precios. Pueden ofrecer un descuento, cambiar la cantidad o hacer algo especial para que el precio sea más atractivo.

Importancia de los campos en la regla de precios

Los campos juegan un papel importante en las reglas de precios dentro de Salesforce CPQ. Las reglas de precios usan campos para definir condiciones, acciones y criterios que determinan cómo se aplican los cálculos de precios y los descuentos. Por lo tanto, comprenderemos cada campo en el objeto Regla de precio y su importancia con la ayuda del Ejemplo de tienda de golosinas.

Una captura de pantalla de una computadora Descripción generada automáticamente

¿Diferencia entre Calculator y Configurator Evaluation Scope en la regla de precio en Salesforce CPQ?

Un rectángulo blanco y azul con una línea azul Descripción generada automáticamente

El campo Alcance de la evaluación es como usar esa calculadora mágica. Cuando tiene reglas de precios con el Ámbito de evaluación de la calculadora, la calculadora las utiliza para decidir cuánto debería costar algo. Tiene dos valores de lista de selección:

  • Ámbito de evaluación de la calculadora: el ámbito se trata de usar reglas especiales para calcular precios.
  • Ámbito de evaluación del configurador: seguir las reglas cuando elige diferentes opciones.

Expliquemos la diferencia entre los ámbitos de evaluación de Calculadora y Configurador en Salesforce CPQ con un ejemplo en tiempo real:

Imagina que vas a una tienda de dulces a comprar unos deliciosos dulces. Tienes un presupuesto de $10 y quieres comprar diferentes tipos de dulces según sus sabores.

Exploremos cómo entran en juego los ámbitos de evaluación de la calculadora y el configurador:

1. Ámbito de evaluación de la calculadora:

– Imagina que hay una oferta especial en la que si compras más de 5 caramelos, obtienes un 20% de descuento sobre el precio total.

– Esta oferta es un ejemplo de una regla de precio con el Ámbito de evaluación de la calculadora. La regla calcula el precio con descuento en función de la cantidad de dulces que está comprando.

– Entonces, si agrega 7 dulces a su carrito, la Calculadora evalúa la regla del precio y aplica el descuento, reduciendo el costo total.

2. Alcance de la evaluación del configurador:

– Ahora, consideremos los sabores de dulces disponibles en la tienda: fresa, chocolate y limón.

– Existe una regla que dice que si elige dulces con sabor a fresa, no puede elegir dulces con sabor a limón porque no combinan bien.

– Esta regla es un ejemplo de una regla de precio con el alcance de evaluación del configurador. Controla la disponibilidad de ciertas opciones en función de sus elecciones anteriores.

– Si ya tienes caramelos de fresa en tu carrito, el Configurador evalúa la regla y evita que selecciones caramelos de limón, asegurando que no termines con una combinación incompatible.

En este ejemplo anterior

El Ámbito de evaluación de la calculadora ayuda a calcular el precio total de sus dulces en función de ofertas especiales, descuentos y cantidad.

El Ámbito de evaluación del configurador garantiza que siga ciertas reglas al seleccionar diferentes opciones, como sabores, para evitar opciones incompatibles.

¿Explicar el evento de evaluación de la calculadora?

Una captura de pantalla de una computadora Descripción generada automáticamente

Expliquemos los eventos de evaluación de la calculadora de "Al iniciar", "Al calcular", "Antes de calcular" y "Después de calcular" con un ejemplo en tiempo real utilizando el escenario de la tienda de golosinas:

En breve:

“On Initiate” marca el comienzo del proceso de cálculo de caramelos.

“On Calculate” realiza el cálculo del precio real de los dulces.

"Antes de calcular" aplica cualquier verificación o regla final justo antes del cálculo.

"Después de calcular" permite acciones adicionales o sorpresas después de que se hayan determinado los precios.

Entendamos con más detalle:

1. Al iniciar:

– Suponga que tiene una regla de precio que establece que si el cliente es un miembro leal, obtiene un 5 % de descuento en todas las compras de golosinas.

– Esta regla de precio tendría el evento de evaluación establecido en "Al iniciar".

– Cuando el cliente inicia el proceso de cálculo del precio, como por ejemplo al comenzar una nueva cotización, el sistema verifica si es un miembro fiel y aplica el 5% de descuento a todos los dulces en su carrito desde el principio.

2. En Calcular:

– Imagine que tiene una regla de precio que ofrece un descuento por volumen si el cliente compra más de 10 dulces de cualquier sabor.

– Esta regla de precio tendría el evento de evaluación establecido en "Al calcular".

– A medida que el cliente agrega dulces a su carrito, el sistema calcula continuamente la cantidad total de dulces. Cuando alcanza o supera los 10, se activa la regla de precio y se aplica un descuento por volumen a todos los dulces del carrito.

3. Antes de calcular:

– Supongamos que tiene una regla de precio que establece que si el cliente ha seleccionado dulces con un precio total superior a $30, recibe una bolsa de dulces de cortesía.

– Esta regla de precio tendría el evento de evaluación establecido en "Antes de calcular".

– Justo antes de realizar el cálculo final, el sistema verifica si el precio total de los dulces supera los $30. Si es así, se activa la regla de precio y se agrega una bolsa de dulces de cortesía al carrito.

4. Después de calcular:

– Suponga que tiene una regla de precio que ofrece una oferta promocional especial de "Compre 2, obtenga 1 gratis" para un sabor de dulce específico.

– Esta regla de precio tendría el evento de evaluación establecido en "Después de calcular".

– Una vez que se completa el cálculo final, el sistema revisa los dulces seleccionados por el cliente e identifica si califican para la oferta "Compre 2, obtenga 1 gratis". Si lo hacen, se activa la regla de precio y el sistema agrega los dulces gratis al carrito.

Mediante el uso de estos diferentes eventos de evaluación de la calculadora, puede aplicar descuentos, ofertas o modificaciones específicas en diferentes etapas del proceso de cálculo en Salesforce CPQ.

¿Cuál es el significado del campo "Condición cumplida" en una regla de precios?

Una captura de pantalla de una computadora Descripción generada automáticamente

Expliquemos los conceptos de "Condición cumplida – Todas" y "Condición cumplida – Cualquiera" usando nuestro ejemplo de tienda de golosinas:

1. Condición cumplida – Todas:

– Imagina que tienes una tienda de golosinas con una promoción especial: si un cliente compra al menos 5 golosinas y el precio total supera los $10, recibe una bolsa de golosinas gratis.

– Esta regla de precio tendría la condición cumplida establecida en “Todos”.

– Cuando un cliente agrega 5 o más dulces a su carrito y el precio total de esos dulces supera los $10, ¡se cumplen todas las condiciones!

– Como resultado, el sistema reconoce que el cliente califica para la promoción y se agrega automáticamente una bolsa de dulces gratis a su pedido al finalizar la compra.

2. Condición cumplida – Cualquiera:

– Ahora, considere una regla de precio diferente: si un cliente compra cualquier dulce con un sabor específico (por ejemplo, “Cereza”), o si compra más de 10 dulces en total, recibe un descuento del 20%.

– Esta regla de precio tendría la condición cumplida establecida en "Cualquiera".

– Cuando un cliente selecciona un dulce con sabor a “Cereza” o agrega más de 10 dulces a su carrito, ¡cualquiera de las condiciones se cumple!

– Como resultado, el sistema aplica el 20% de descuento a los dulces que califican, independientemente de la condición que activó el descuento.

En ambos escenarios, la "Condición cumplida: todas" requiere que se cumplan todas las condiciones especificadas, mientras que la "Condición cumplida: cualquiera" solo requiere que se cumpla al menos una condición. Estos diferentes enfoques le permiten crear estrategias de precios personalizadas basadas en combinaciones específicas o criterios individuales.

¿Puede explicar el campo de objeto de búsqueda en una regla de precio con la ayuda del escenario?

Un rectángulo negro con borde azul Descripción generada automáticamente

En tu tienda de golosinas tienes diferentes tipos de golosinas con características únicas. El campo Objeto de búsqueda en el objeto Regla de precio es como una conexión especial que lo ayuda a aplicar reglas específicas a ciertos tipos de dulces.

Imagina que tienes un caramelo llamado "Rainbow Lollipop" y quieres crear una regla de precio especial para él. Así es como funciona:

1. Relación de objetos de búsqueda:

– El campo Objeto de búsqueda es como un puente que conecta la regla de precio con el caramelo “Rainbow Lollipop”.

– Te ayuda a establecer una relación especial entre la Regla de Precio y este tipo de dulce específico.

2. Acceder a la información de dulces:

– Una vez que se establece la relación de búsqueda, puede acceder a la información sobre el caramelo “Rainbow Lollipop” dentro de la regla de precio.

– Podrás conocer detalles sobre el dulce, como su sabor, color

3. Aplicación de reglas especiales:

– Al usar el campo Objeto de búsqueda, puede crear reglas especiales que solo se aplican al caramelo “Rainbow Lollipop”.

– Por ejemplo, puede crear una regla que ofrezca un descuento del 20% por cada “Rainbow Lollipop” comprado.

Al tener esta conexión especial entre la Regla de precio y el caramelo “Rainbow Lollipop” a través del campo Objeto de búsqueda, puede crear reglas únicas y personalizadas solo para ese tipo de caramelo. Te permite aplicar ofertas especiales, descuentos u otras acciones específicas al “Rainbow Lollipop” que lo hacen destacar entre otros dulces en tu tienda.

Vamos a entender con más profundidad:

El campo Objeto de búsqueda en el objeto Regla de precios es una función que le permite establecer una relación entre la Regla de precios y otro objeto en su organización de Salesforce.

1. Establecimiento de la relación de búsqueda:

– Al crear una regla de precios, puede seleccionar un objeto relacionado en el campo Objeto de búsqueda.

– Esto establece una relación de búsqueda entre la regla de precio y el objeto elegido.

– El objeto relacionado puede ser un objeto de Salesforce estándar (como Producto o Cuenta) o un objeto personalizado específico para sus necesidades comerciales.

2. Acceso a datos relacionados:

– Una vez que se establece la relación de búsqueda, puede acceder a los datos relacionados del objeto elegido dentro de la regla de precio.

– Esto significa que puede recuperar información de campos específicos en el objeto relacionado y usarla en su lógica de reglas de precios.

– Por ejemplo, si el objeto de búsqueda se establece en "Producto", puede acceder a los campos del objeto Producto, como Nombre del producto, Precio o cualquier campo personalizado relacionado con el producto.

3. Utilización del objeto de búsqueda en la lógica de la regla de precios:

– Con el campo Objeto de búsqueda, puede aprovechar los datos relacionados del objeto elegido para impulsar las condiciones y acciones de la regla de precios.

– Por ejemplo, puede crear una regla de precio que aplique un descuento basado en el valor de un campo en el objeto relacionado.

– Al hacer referencia a los campos en el objeto relacionado, puede definir condiciones y acciones que son dinámicas y adaptables en función de los valores almacenados en el objeto relacionado.

En resumen, el campo Objeto de búsqueda en la Regla de precios le permite establecer una relación con otro objeto, recuperar datos de ese objeto y usarlos en la lógica de su regla de precios.

Si no ponemos ningún nombre de objeto en el campo de objeto de búsqueda, ¿significa que no obtendrá datos de ese objeto y no podemos establecer una condición basada en un registro en particular?

Eso es correcto. Si no especifica un nombre de objeto en el campo Objeto de búsqueda de la Regla de precio, significa que la regla de precio no obtendrá datos de ningún objeto específico . Sin un objeto de búsqueda especificado, no podrá establecer condiciones ni realizar acciones basadas en un registro particular o datos de otro objeto.

El campo Objeto de búsqueda es fundamental para establecer una relación entre la regla de precios y un objeto específico. Le permite acceder y aprovechar los datos de ese objeto en la lógica de su regla de precios. Si deja el campo Objeto de búsqueda en blanco, la regla de precio no tendrá una conexión con ningún objeto, lo que limitará su capacidad para hacer referencia a datos de otros registros o aplicar condiciones basadas en valores específicos .

¿Cuál es el significado de la casilla de verificación Activa en la regla de precios?

Una captura de pantalla de una computadora Descripción generada automáticamente

Cuando la casilla de verificación "Activo" está marcada, indica que la regla de precios está activa y solo entonces se evaluará durante el proceso de cálculo de precios. Las reglas de precio inactivas no se evalúan y sus condiciones y acciones se ignoran.

¿Cómo afecta el campo Orden de evaluación a la aplicación de las Reglas de precios?

Un rectángulo blanco con líneas negras Descripción generada automáticamente

El “Orden de Evaluación” en una Regla de Precios es fundamental para definir la secuencia en la que se evalúan las reglas durante el proceso de cálculo de precios. Ayuda a establecer la prioridad y la jerarquía de las reglas cuando se aplican varias reglas. Las reglas con valores de orden de evaluación más bajos se evalúan primero.

Ejemplo de Orden de Evaluación:

Regla 1: Descuento para barras de chocolate

Orden de evaluación: 1

Condición: Tipo de Caramelo es igual a “Barra de Chocolate”

Acción: Aplicar un 10% de descuento sobre el precio de la barra de chocolate.

Regla 2: compre uno, llévese otro gratis

Orden de evaluación: 2

Condición: la cantidad es mayor o igual a 2

Acción: Proporcionar un dulce gratis por cada dos dulces comprados.

En este ejemplo, la regla 1 tiene un orden de evaluación de 1, mientras que la regla 2 tiene un orden de evaluación de 2.

La regla 1 se evaluará primero, seguida de la regla 2.

Ahora, veamos cómo la Orden de Evaluación impacta el cálculo de precios:

Supongamos que un cliente agrega dos barras de chocolate a su carrito. La Orden de Evaluación dicta la secuencia de ejecución de la regla. La regla 1, con un Orden de Evaluación inferior a 1, se evaluará primero.

Regla 1 (Orden de evaluación 1):

Dado que el tipo de caramelo es una “Barra de Chocolate” (condición cumplida), se aplica un descuento del 10% sobre el precio de cada barra de chocolate.

Regla 2 (Orden de Evaluación 2):

La cantidad es 2 (condición cumplida), pero la regla 2 no se evaluará porque la regla 1 ya se aplicó.

Como resultado, el cliente recibe un 10% de descuento en cada barra de chocolate y no hay cambios debido a la Regla 2.

Nota: La regla 1 se evalúa primero y la regla 2 se omite porque la regla 1 ya se ha aplicado. Sólo se aplicará la primera regla. Esto se debe a que el Orden de evaluación determina la secuencia en la que se evalúan las reglas y, una vez que se aplica una regla, se omiten las reglas posteriores con valores de Orden de evaluación más altos.

¿Qué sucede si queremos que se apliquen las reglas de precios y que no se omita ninguna según el Orden de evaluación?

Si desea que se apliquen ambas reglas sin omitir ninguna de ellas, deberá asegurarse de que ambas reglas tengan el mismo valor de Orden de evaluación. Al asignar el mismo Orden de Evaluación a ambas reglas, indica que tienen la misma prioridad, y ambas serán evaluadas y aplicadas si se cumplen sus respectivas condiciones.

Modifiquemos el ejemplo para ilustrar esto:

1. Regla 1: Descuento para barras de chocolate

– Orden de Evaluación: 1

– Condición: Tipo de Caramelo es igual a “Barra de Chocolate”

– Acción: Aplicar un 10% de descuento sobre el precio de la tableta de chocolate.

2. Regla 2: compre uno, llévese otro gratis

– Orden de Evaluación: 1

– Condición: La cantidad es mayor o igual a 2

– Acción: Proporcionar un caramelo gratis por cada dos caramelos comprados.

Con esta modificación, ambas reglas tienen un Orden de Evaluación de 1, lo que indica que tienen la misma prioridad.

Supongamos que un cliente agrega dos barras de chocolate a su carrito: la regla 1 y la regla 2, ambas con el orden de evaluación 1, se evaluarán en el orden en que aparecen.

– Regla 1 (Orden de Evaluación 1):

– Dado que el tipo de caramelo es una “Barra de Chocolate” (condición cumplida), se aplica un 10% de descuento sobre el precio de cada barra de chocolate.

– Regla 2 (Orden de Evaluación 1):

– La cantidad es 2 (condición cumplida), y como ambas reglas tienen el mismo Orden de Evaluación, también se evalúa la Regla 2.

– Se ejecuta la acción de la Regla 2, entregando un caramelo gratis por cada dos caramelos comprados.

En este escenario, dado que ambas reglas tienen el mismo Orden de Evaluación, se evalúan en el orden en que aparecen y ambas reglas se aplican si se cumplen sus condiciones. El cliente recibe un 10% de descuento en cada barra de chocolate y recibe un dulce gratis debido a la Regla 2.

¿Cómo puede definir condiciones complejas usando la función de Condición avanzada en una regla de precio?

Una captura de pantalla de una computadora Descripción generada automáticamente

Expliquemos la Condición Avanzada en una Regla de Precio usando un ejemplo de caramelo:

Escenario de regla:

– Desea crear una regla de precio para los dulces que son del tipo “Gummy Bear”, tienen un sabor a “Fresa” o se encuentran dentro de un rango de precios de $1 a $5.

Creando la Condición Avanzada:

– Con la función Condición avanzada, puede definir una condición compleja que involucre múltiples campos y valores de comparación.

– En este caso, configuraría la Condición de precio asociada con la regla de precio con los siguientes componentes:

– Condición 1: Tipo de Caramelo es igual a “Osito de Gominola”

– Condición 2: Sabor igual a “Fresa”

– Condición 3: El precio está entre $1 y $5

(Candy_Type__c = 'Gummy Bear' && Flavor__c = 'Fresa') || (Precio__c >= 1 && Precio__c <= 5)

Tal como es (1 Y 2) O 3, implementaremos esta lógica utilizando la condición avanzada

¿Qué es el campo Producto en la regla de precio?

Un rectángulo blanco con líneas negras Descripción generada automáticamente

Expliquemos el campo “Producto” en una Regla de Precio usando un ejemplo de dulces de una manera simple y fácil de entender:

Imagina que tienes una tienda de dulces con una variedad de dulces, como piruletas, barras de chocolate y ositos de goma. Cada caramelo tiene su propio precio. Ahora, hablemos del campo “Producto” en una regla de precio:

1. Selección de un producto de caramelo:

– El campo “Producto” en una regla de precio le permite elegir un dulce específico del inventario de su tienda.

– Por ejemplo, puede seleccionar el caramelo “Gummy Bears” como el producto de destino para la regla de precio.

2. Aplicar acciones de fijación de precios a los dulces seleccionados:

– Una vez que haya seleccionado el caramelo "Gummy Bears" en el campo "Producto", puede definir las acciones de fijación de precios que se aplicarán específicamente a ese caramelo.

– Las acciones de fijación de precios pueden incluir cosas como descuentos u ofertas especiales.

– Por ejemplo, puede crear una regla de precio que proporcione un 10 % de descuento en el precio de los dulces “Gummy Bears”.

3. Creación de condiciones divertidas (opcional):

También puede establecer condiciones divertidas en función de las características de los dulces seleccionados.

Por ejemplo, puede crear una condición que aplique la regla del precio solo si el caramelo "Gummy Bears" es de color rojo.

Podemos agregar el producto en el campo de objeto de búsqueda en lugar del campo de producto en Salesforce, ¿cuál es la diferencia?

¡Estás en lo correcto! Además de seleccionar el producto directamente en el campo "Producto" de una regla de precios, también tiene la opción de hacer referencia al producto a través de un campo de relación de búsqueda utilizando un objeto de búsqueda. Exploremos la diferencia entre los dos enfoques:

1. Campo de producto:

– Cuando selecciona el producto directamente en el campo “Producto” de la Regla de precio, está asociando la regla de precio directamente con un producto específico.

– Este enfoque es útil cuando desea definir acciones o condiciones de fijación de precios que se aplican a un producto o grupo de productos en particular.

– Es una forma sencilla de orientar productos específicos dentro de su catálogo y definir reglas exclusivamente para esos productos.

2. Objeto de búsqueda:

– Con un objeto de búsqueda, puede establecer una relación entre la Regla de precio y otro objeto en Salesforce, como un objeto personalizado o un objeto estándar como una Cuenta u Oportunidad.

– Esto le permite hacer referencia al producto indirectamente a través del objeto relacionado.

– Mediante el uso de una relación de búsqueda, puede definir acciones o condiciones de fijación de precios en función de los datos tanto del objeto relacionado como del producto asociado.

– Este enfoque proporciona más flexibilidad en la creación de reglas que dependen de la información de otros objetos además del propio producto.

La elección entre usar el campo directo "Producto" o un objeto de búsqueda depende de su caso de uso y requisitos específicos. Si solo necesita segmentar y definir reglas para productos específicos, el uso del campo "Producto" suele ser suficiente. Sin embargo, si su lógica de precios involucra datos de objetos relacionados o requiere relaciones más complejas, puede ser beneficioso utilizar un objeto de búsqueda.

¿Cómo se especifican los grupos de productos a los que se aplica la regla de precios?

Expliquemos la implementación de grupos de productos en Reglas de precios usando un ejemplo de dulces:

1. Definir grupos de productos:

-Cree un campo personalizado de "Grupo de productos" en el objeto del producto. Establecer el valor del campo con

  • Caramelos Gomosos
  • Caramelos De Chocolate

2. Asignar atributos del producto:

– Establezca el campo "Grupo de productos" en el objeto del producto en "Caramelos de goma" para los productos de ositos de goma y gusanos de goma.

– Establezca el campo "Grupo de productos" en el objeto de producto en "Caramelos de chocolate" para barras de chocolate y productos de frutos secos cubiertos de chocolate.

3. Cree o edite una regla de precios:

– Cree una nueva regla de precios o edite una existente haciendo clic en el botón "Nuevo" o seleccionando la regla de precios deseada.

4. Asociar con el Objeto Producto:

– En el registro de Regla de precio, localice el campo de búsqueda o el campo de producto que le permite asociar la Regla de precio con el objeto que contiene el campo “Grupo de productos” (en este caso, el objeto Producto).

5. Definir condiciones:

– Dentro de la Regla de Precio, defina las condiciones de precio que especifican los grupos de productos.

– Elija el campo que representa el grupo de productos, como el campo “Grupo de productos” en el objeto asociado (objeto Producto).

– Configure el operador adecuado (p. ej., “Es igual a”) y el valor deseado para el grupo de productos (p. ej., “Caramelos de goma”).

Ejemplo: Condición 1

– Campo: Producto: Grupo de productos

– Operador: Igual

– Valor: “Caramelos de goma”

Ejemplo: Condición 2

– Campo: Producto: Grupo de productos

– Operador: Igual

– Valor: “Caramelos de Chocolate”

6. Especificar acciones de fijación de precios:

– Una vez que se cumplan las condiciones, defina las acciones de fijación de precios que desea aplicar a los productos en los grupos de productos específicos.

– Configure las acciones de fijación de precios en función de sus requisitos, como establecer descuentos, ajustar precios o aplicar cualquier otra lógica de fijación de precios que desee.

Ejemplo: Precio Acción 1

– Si se cumple la Condición 1 (Grupo de productos es igual a “Caramelos de gominola”), establezca un 10% de descuento en los productos afectados.

Ejemplo: Precio Acción 2

– Si se cumple la Condición 2 (Grupo de Producto es igual a “Dulces de Chocolate”), establecer un precio especial en los productos afectados.

¿Cuáles son algunas de las mejores prácticas para diseñar y configurar reglas de precios en Salesforce CPQ?

1. Definir requisitos claros de fijación de precios:

– Defina claramente sus requisitos de precios y comprenda el comportamiento de precios deseado.

– Identificar las estrategias de precios, las reglas de descuento y los cálculos personalizados necesarios.

2. Estructura de las reglas de precios del plan:

– Planifica la estructura de tus Reglas de Precios de forma lógica y organizada.

– Dividir escenarios de precios complejos en reglas de precios más pequeñas y manejables.

– Esto mejora la capacidad de mantenimiento y facilita la resolución de problemas y las modificaciones.

3. Use nombres de reglas descriptivos:

– Asigne nombres significativos y descriptivos a sus Reglas de precios.

– Esto ayuda a identificar y comprender el propósito de cada regla, especialmente cuando se trata de muchas reglas de precios.

4. Establecer orden de evaluación lógica:

– Establezca el campo Orden de evaluación en el objeto Regla de precio de forma adecuada.

– Controlar la secuencia en la que se evalúan y aplican las Reglas de Precios.

– Asegúrese de que el orden de evaluación se alinee con la lógica y los requisitos de precios previstos.

5. Probar y validar reglas de precios:

– Pruebe y valide exhaustivamente sus reglas de precios con varios escenarios de prueba.

– Verificar que los resultados de la fijación de precios se alineen con los resultados esperados.

– Probar diferentes combinaciones de condiciones, configuraciones de productos y escenarios de precios.

6. Aproveche las condiciones avanzadas:

– Utilice la función Condiciones avanzadas para implementar criterios de reglas complejos.

– Combinar múltiples condiciones utilizando operadores lógicos (AND, OR) y funciones.

– Esto permite una lógica de reglas más compleja y un control más detallado.

7. Reglas de revisión y actualización periódicas:

– Revise periódicamente sus reglas de precios para asegurarse de que se mantengan alineadas con las estrategias de precios en evolución y los requisitos comerciales.

– Actualice las reglas según sea necesario para reflejar los cambios en los productos, los modelos de precios o las estrategias de descuento.

8. Lógica de la regla de precio del documento:

– Documente la lógica y el razonamiento detrás de sus Reglas de precios.

– Esto sirve como referencia para futuras modificaciones y ayuda con la transferencia de conocimiento dentro del equipo.

¿Se pueden usar reglas de precios para actualizar valores de campo en un registro? Explicar.

No, las reglas de precios en Salesforce CPQ se utilizan principalmente para los cálculos y ajustes de precios en lugar de actualizar directamente los valores de los campos en un registro.

Si bien las reglas de precios pueden afectar los resultados y resultados de la fijación de precios, no están diseñadas para actualizar directamente los valores de campo en un registro fuera del contexto de fijación de precios.

¿Cuál es la diferencia entre una regla de precio y un programa de descuento?

Las reglas de precios se utilizan para definir una lógica de precios dinámica y condicional, lo que permite cálculos y acciones complejos basados en condiciones específicas. Por otro lado, los Programas de descuento proporcionan un enfoque estandarizado para aplicar descuentos predefinidos de manera uniforme en múltiples productos o escenarios de precios. Las reglas de precios ofrecen más flexibilidad y opciones de personalización, mientras que los calendarios de descuentos ofrecen una forma coherente y optimizada de gestionar los descuentos.

Expliquemos la diferencia entre una regla de precio y un programa de descuento usando un ejemplo de dulces:

Regla de precio:

– Una regla de precios le permite definir acciones o ajustes de precios específicos basados en ciertas condiciones para dulces individuales o grupos de dulces.

– Por ejemplo, puede crear una regla de precios que aplique un descuento del 10 % a todos los dulces de ositos de goma durante un período promocional.

– Las reglas de precios brindan flexibilidad para aplicar diferentes lógicas de precios, descuentos o ajustes basados en diversas condiciones para dulces o grupos de dulces específicos.

Horario de descuento:

– En el mismo escenario de la tienda de golosinas, se usaría un programa de descuentos para administrar los descuentos estandarizados que se aplican a varios dulces.

– Un calendario de descuentos proporciona un enfoque consistente para aplicar descuentos predefinidos de manera uniforme.

– Por ejemplo, puede crear un programa de descuento llamado "10 % de descuento" que ofrece un 10 % de descuento en todos los dulces en toda la tienda.

– Los Programas de descuento ayudan a mantener precios consistentes en diferentes dulces o niveles de precios, lo que garantiza que se aplique el mismo descuento a varios productos sin necesidad de Reglas de precios individuales.

50% Me gusta VS
50% No me gusta

Seguir leyendo

Anypoint MQ ya está disponible en MuleSoft Government Cloud ☁️

Anypoint MQ ya está disponible en MuleSoft Government Cloud ☁️

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.

Anypoint MQ ya está disponible en MuleSoft Government Cloud | Blog de desarrolladores de Salesforce

Anypoint MQ es un servicio de mensajería en la nube empresarial y multiusuario que proporciona una solución de mensajería asincrónica avanzada para aplicaciones.

Los clientes utilizan Anypoint MQ en los entornos MuleSoft US Cloud y EU Cloud para ejecutar aplicaciones de misión crítica, como el procesamiento de pedidos, la gestión de atención al cliente y la gestión de quioscos de aerolíneas. Un proveedor de comercio electrónico que recibe pedidos a través de varios canales, como web, dispositivos móviles y socios, puede procesar los pedidos en el pedido recibido y, al mismo tiempo, escalar a varias unidades de procesamiento.

Nuestros clientes del sector público han solicitado un servicio de mensajería basado en la nube que pueda integrar tanto sus aplicaciones locales como las basadas en la nube, lo que les permite ofrecer servicios automatizados para los ciudadanos. Con el lanzamiento de Anypoint MQ en MuleSoft Government Cloud, nos complace ayudar a nuestros clientes a lograr su visión.

Funciones de Anypoint MQ

Anypoint MQ admite una amplia gama de casos de uso de mensajería, como patrones de mensajería empresarial, comunicaciones asincrónicas entre microservicios e IoT. Anypoint MQ también proporciona una API REST para publicar o consumir mensajes utilizando marcos, como scripts bash de Node.js, Java, Go y DevOps.

Anypoint MQ incluye las siguientes funciones:

Colas e intercambios de mensajes

Las colas de mensajes proporcionan almacenamiento temporal que permite que las aplicaciones se comuniquen de manera escalable y confiable. Los editores pueden publicar mensajes en las colas y los suscriptores pueden recibir mensajes de las colas. Los intercambios de mensajes le permiten distribuir un solo mensaje a múltiples consumidores. Todas las colas y los intercambios de mensajes están cifrados de forma predeterminada.

Colas de retraso

Las colas de retraso le permiten posponer la entrega de nuevos mensajes a una cola durante un período específico. Los consumidores no pueden ver los mensajes enviados a una cola de demora durante el período de demora. El retraso máximo de una cola es de 15 minutos.

Consola de administración

Con la consola de administración, puede monitorear las estadísticas de las colas, purgarlas y ver cuántos mensajes están en tránsito.

Conector MQ de cualquier punto

Anypoint Connector para Anypoint MQ (Anypoint MQ Connector) proporciona mensajes de publicación y suscripción a aplicaciones Mule. Tenga en cuenta que solo Anypoint MQ Connector 4.x y versiones posteriores son compatibles con el entorno MuleSoft Government Cloud.

API REST

Puede usar la API REST para comunicarse fácilmente con aplicaciones que no son Mule.

Entornos y control de acceso basado en roles

Anypoint MQ está completamente integrado con Anypoint Access Management, lo que le permite especificar diferentes entornos para sus colas, quién puede acceder a cada entorno y qué pueden hacer dentro de cada entorno.

Grandes cargas útiles

Anypoint MQ admite cargas útiles de hasta 10 MB.

Recuperación de desastres

Los servicios de Anypoint MQ se implementan en varias zonas de disponibilidad (AZ) dentro de una región para proporcionar alta disponibilidad (HA). Si el servicio en una zona de disponibilidad deja de funcionar, el servicio Anypoint MQ funciona normalmente en esa región. Si todas las zonas de disponibilidad se desactivan en una región, el servicio Anypoint MQ no estará disponible en esa región hasta que al menos una de las zonas de disponibilidad vuelva a funcionar. Debido a que la solución de almacenamiento para Anypoint MQ es duradera, se retienen los mensajes que ya estaban en el sistema Anypoint MQ antes de que se interrumpiera el servicio.

Conclusión

¡Esperamos que esté tan entusiasmado como nosotros con estas características! Para comenzar a acceder a Anypoint MQ en Government Cloud, visite nuestro tutorial .

Más recursos

Sobre el Autor

Gouthami Kondakindi es un ingeniero líder en Salesforce que trabaja en la creación de servicios que potencian la plataforma MuleSoft Anypoint.

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

El poder de las métricas de uso mejoradas para optimizar la asignación de eventos de la plataforma

El poder de las métricas de uso mejoradas para optimizar la asignación de eventos de la plataforma

Última actualización el 6 de julio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • Cómo monitorear el consumo de eventos de la plataforma según el nombre del evento, el ID del cliente, el tipo de evento y el tipo de uso

Objetivos:

Después de leer este blog, podrá:

  • Obtenga una comprensión integral de los eventos de la plataforma
  • Descubra las ventajas de monitorear los patrones de consumo para la optimización del rendimiento del sistema y la identificación de tendencias de uso
  • Implemente métricas de uso mejoradas para eventos de plataforma a través de una guía paso a paso
  • Explore los beneficios de monitorear patrones de consumo para optimizar el rendimiento del sistema e identificar tendencias de uso
  • y mucho más

Jestilla Zetkin trabaja como arquitecta de Salesforce en Gurukul On Cloud (GoC), recientemente se encontró con una publicación de blog titulada Monitoreo de publicación de eventos y uso de entrega de la plataforma . Esta publicación proporcionó información sobre cómo varias formas de monitorear el uso de la publicación y entrega de eventos de la plataforma.

A medida que se expande el negocio de GoC, la afluencia de datos ha llevado a casos frecuentes de alcanzar los límites diarios para los eventos de la plataforma. En consecuencia, Jestilla está buscando una solución para monitorear el consumo de eventos de la plataforma según el nombre del evento, la identificación del cliente o el tipo. Esta capacidad de monitoreo le permitirá analizar qué evento está consumiendo una parte significativa de la asignación, lo que le permitirá tomar las medidas adecuadas en consecuencia.

¿Qué es Plataforma de Eventos?

Las arquitecturas basadas en eventos se han vuelto muy populares en los últimos años y por una buena razón. Se basa en el patrón de fuego y olvido . Activar un evento y dejar que cada sistema maneje la lógica empresarial le permite mantener los sistemas no relacionados desacoplados y puede ayudar a simplificar la arquitectura.

Los eventos de la plataforma le permiten entregar notificaciones de eventos seguras, escalables y personalizables dentro de Salesforce o desde fuentes externas. Las aplicaciones pueden publicar y suscribirse a eventos de plataforma en la plataforma de Salesforce mediante Apex, Flow o en un sistema externo mediante CometD. Si desea obtener más información sobre el evento de plataforma, consulte el módulo de Trailhead .

Comprender el objeto PlatformEventUsageMetric

Hagamos una pausa aquí y familiarícese con el objeto PlatformEventUsageMetric en Salesforce.

Contiene datos de uso para la publicación y entrega de eventos a clientes CometD y Pub/Sub API, componentes empApi Lightning y retransmisiones de eventos. Si las métricas de uso mejoradas están habilitadas, los datos de uso están disponibles para las últimas 24 horas, hasta la última hora y para el uso diario histórico.

En API 58.0 y versiones posteriores, puede habilitar Métricas de uso mejoradas para obtener datos de uso por nombre de evento y cliente para intervalos de tiempo granulares. PlatformEventUsageMetric contiene métricas de uso separadas para eventos de plataforma y eventos de captura de datos modificados.

Nombre del campo
Detalles
Tipo de evento El tipo de evento para el que le gustaría consultar las métricas de uso, como un evento de cambio o un evento de plataforma personalizado. Este campo está disponible cuando las métricas de uso mejoradas están habilitadas.
Segmento de tiempo El intervalo de tiempo utilizado para agregar los datos de uso devueltos en los resultados de la consulta. Este campo está disponible cuando las métricas de uso mejoradas están habilitadas.
Tipo de uso Este campo está disponible cuando las métricas de uso mejoradas están habilitadas. El tipo de métricas de uso de eventos para consultar, como publicación de eventos o entrega de eventos. Utilice este campo con los campos EventName o EventType. Los valores posibles son:

  • PUBLISH —Métricas de uso para eventos publicados.
  • ENTREGA —Métricas de uso para eventos que se entregaron a los suscriptores.
Valor El valor de uso para la métrica y el intervalo de fechas especificados.

Para obtener datos de uso completos para cada evento, aprovecharemos las métricas de uso de eventos mejoradas. Esta función nos permitirá recopilar información agregada e identificar los eventos específicos que consumen una parte importante de la asignación.

Mientras que PlatformEventSettings representa configuraciones para eventos de plataforma y eventos de captura de datos modificados.

Nombre del campo
Detalles
enableEnhancedUsageMetrics Habilita métricas de uso mejoradas para consultas ejecutadas en PlatformEventUsageMetric. Las métricas de uso mejoradas proporcionan campos adicionales para las consultas y segmentos de tiempo granulares. Para obtener más información, consulte Métricas de uso mejoradas en la Guía para desarrolladores de eventos de plataforma. El valor predeterminado es falso.

Práctica guiada (nosotros hacemos):

Antes de que pueda obtener más métricas de uso, debe habilitar las Métricas de uso mejoradas en la API de metadatos . Para hacer esto, establezca el valor del campo enableEnhancedUsageMetrics en verdadero en PlatformEventSettings . Una vez hecho esto, podrá obtener métricas de uso detalladas para el consumo de eventos de la plataforma.

Paso 1: habilite las métricas de uso mejoradas

  1. Asegúrese de que Visual Studio Code esté correctamente configurado y que su organización de Salesforce esté conectada a él.
  2. Modifique el paquete.xml para recuperar los metadatos relacionados con los eventos de la plataforma.
    1. Ejemplo de paquete.xml para recuperar la configuración de PlatformEvent.
      
      
      <tipos> <miembros>PlataformaEvento</miembros> <nombre>Configuración</nombre>
      </tipos>

  3. El siguiente paso es modificar PlatformEventSettings .
    1. Proceda a modificar PlatformEventSettings, cuyos valores se almacenan en el archivo PlatformEvent.settings en la carpeta de configuración .
    2. En PlatformEventSettings, establezca el campo enableEnhancedUsageMetrics en true .
    3. Guarde los cambios en el archivo PlatformEvent.settings-meta.xml .
  4. Finalmente, haga clic con el botón derecho en el archivo de su paquete en el Explorador y seleccione SFDX: Implementar origen en el manifiesto en la organización .

Paso 2.1: obtenga métricas de uso diario agregadas por nombre de evento

  1. Haga clic en Configuración | Consola de desarrollador .
  2. En el Editor de consultas, ejecute la siguiente consulta SOQL
     SELECCIONE EventName, EventType, UsageType, Value, StartDate, EndDate FROM PlatformEventUsageMetric WHERE TimeSegment='Diario'
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

Las extensiones Open VSX ahora son compatibles con Code Builder ☁️

Las extensiones Open VSX ahora son compatibles con Code Builder ☁️

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

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

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

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

¿Qué es el generador de código?

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

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

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

Mejor juntos: Code Builder + Open VSX

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

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

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

Salesforce y Open VSX

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

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

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

Próximos pasos

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

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

Sobre los autores

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

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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Integración de API de zona horaria de Salesforce y Google: traducción de coordenadas a información de zona horaria

Integración de API de zona horaria de Salesforce y Google: traducción de coordenadas a información de zona horaria

Última actualización el 29 de junio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo puede aprovechar la API de zona horaria de Google para actualizar automáticamente la información de zona horaria de un cliente potencial en función de sus coordenadas geográficas?

Objetivos:

Después de leer este blog, podrá:

Jestilla Zetkin se desempeña actualmente como arquitecta de Salesforce en Gurukul On Cloud (GoC). El Director Comercial le ha confiado a Jestilla un desafío único. El objetivo es asegurarse de que, en el momento de la creación, los prospectos de Salesforce (creados a través de Web-to-lead) reciban los detalles exactos de la zona horaria, que se determinan en función de sus respectivas coordenadas geográficas.

  1. El caso de uso comercial requiere que usemos la API de zona horaria de Google para actualizar automáticamente cuatro campos específicos en los clientes potenciales:
    1. dstOffset (la compensación del horario de verano en segundos)
    2. rawOffset (el desplazamiento de la hora universal coordinada para la zona horaria de la ubicación dada)
    3. timeZoneId (una cadena que identifica de forma única la zona horaria)
    4. y timeZoneName (el nombre largo de la zona horaria)
  2. En caso de una respuesta fallida, instituya una acción de contingencia para crear una tarea para el propietario designado del cliente potencial.

¿Qué es la API de zona horaria de Google?

Hay muchas posibilidades de que su base de clientes esté repartida en varias zonas horarias. Este factor puede influir en gran medida en sus interacciones con ellos, especialmente al programar llamadas, reuniones o enviar mensajes automáticos. La plataforma de Salesforce ofrece un entorno altamente adaptable para almacenar y administrar datos de clientes, pero de forma predeterminada, no proporciona una forma de registrar automáticamente la zona horaria del cliente potencial en función de sus coordenadas geográficas.

La API de zona horaria de Google es un servicio ofrecido por Google como parte de su plataforma Google Maps. La API proporciona datos de zona horaria para cualquier ubicación en todo el mundo en función de las coordenadas de latitud y longitud. Este servicio puede ser particularmente útil para los desarrolladores que necesitan ajustar la comunicación de acuerdo con la ubicación geográfica de un cliente potencial o contacto o para empresas que operan en diferentes zonas horarias.

La API de zona horaria proporciona la siguiente información:

  • El ID de la zona horaria , según lo define la base de datos de zonas horarias de la IANA (por ejemplo, America/New_York ).
  • El nombre de la zona horaria (por ejemplo, hora de verano del este ).
  • La diferencia horaria con respecto a la hora universal coordinada (UTC) sin tener en cuenta el horario de verano (rawOffset).
  • El desfase horario debido al horario de verano (dstOffset).

Tenga en cuenta que la API de zona horaria de Google está sujeta a cargos, por lo que es importante comprender las implicaciones de costos antes de implementarla.

¿ Cómo funciona la API de zona horaria de Google?

La API de zona horaria de Google funciona tomando coordenadas de latitud y longitud y devolviendo datos de zona horaria en formato JSON. Aquí hay un ejemplo básico de cómo usarlo.

La siguiente solicitud HTTP GET obtiene información de zona horaria para una ubicación en la latitud 40.712776 y longitud -74.005974 (ciudad de Nueva York), y asume que está realizando la solicitud en una determinada marca de tiempo (marca de tiempo UNIX).

 https://maps.googleapis.com/maps/api/timezone/json?location=40.712776,-74.005974&timestamp=1458000000&key=YOUR_API_KEY

En la URL de solicitud anterior, reemplace YOUR_API_KEY con su clave API real.

Aquí hay una respuesta de muestra en formato JSON que la API podría devolver:


{ "dstOffset": 3600, "compensación sin procesar": -18000, "estado": "OK", "timeZoneId": "América/Nueva_York", "timeZoneName" : "Hora de verano del Este"
}

La respuesta incluye la siguiente información:

  1. dstOffset : La compensación del horario de verano en segundos. Será cero si la zona horaria no está en el horario de verano durante la marca de tiempo especificada.
  2. rawOffset : el desplazamiento de UTC (sin contar el horario de verano) en segundos.
  3. estado : una cadena que indica el estado de la solicitud. “OK” significa que la solicitud fue exitosa.
  4. timeZoneId : una cadena que contiene el ID "tz" de la zona horaria (por ejemplo, "América/Nueva_York").
  5. timeZoneName : una cadena que contiene el nombre de forma larga de la zona horaria (por ejemplo, "hora de verano del este").

Recuerde, en la URL de solicitud, se requiere el parámetro de marca de tiempo y el parámetro de ubicación espera coordenadas de latitud y longitud.

  1. Marca de tiempo : el tiempo deseado en segundos desde la medianoche del 1 de enero de 1970 UTC. La API de zona horaria utiliza la marca de tiempo para determinar si se debe aplicar o no el horario de verano, según la zona horaria de la ubicación.
  2. Ubicación : una tupla de latitud, longitud separada por comas, ubicación = 40.712776, -74.005974, que representa la ubicación para buscar.

Además, no olvide incluir su clave API.

Beneficios de usar la API de zona horaria de Google

La API de zona horaria de Google ofrece una serie de beneficios significativos, especialmente para desarrolladores y empresas que necesitan operar en diferentes zonas horarias. Estos son algunos de los beneficios clave:

  1. Precisión : la API de zona horaria de Google proporciona datos de zona horaria precisos para cualquier ubicación en todo el mundo. Tiene en cuenta tanto la zona horaria 'sin procesar' como el horario de verano, lo que garantiza que siempre tenga la hora local correcta.
  2. Facilidad de uso : la API es fácil de usar y solo requiere la latitud y la longitud como entradas. Devuelve datos en un formato JSON estructurado, que es fácil de analizar y usar en varias aplicaciones.
  3. Cobertura global : la API proporciona datos de zona horaria para ubicaciones en todo el mundo, lo que la hace útil para empresas globales y aplicaciones con bases de usuarios internacionales.
  4. Confiabilidad : como servicio proporcionado por Google, es altamente confiable, lo que garantiza que tenga acceso constante a los datos de la zona horaria cuando los necesite.
  5. Integración : se puede integrar en una variedad de aplicaciones y plataformas, incluidas aplicaciones móviles, servicios web y plataformas de CRM como Salesforce. Esto permite funcionalidades como la programación de comunicaciones en diferentes franjas horarias, etc.
  6. Información actualizada : Google actualiza continuamente sus bases de datos, lo que garantiza que los datos devueltos por la API de zona horaria, como los cambios de horario de verano, estén siempre actualizados.

Al aprovechar estos beneficios, las empresas pueden mejorar la experiencia del cliente, aumentar la eficiencia operativa y garantizar un registro de datos preciso, entre otras ventajas.

Antes de comenzar a usar la API de zona horaria, necesita un proyecto con una cuenta de facturación y la API de zona horaria habilitada. Aquí hay una guía paso a paso para configurar su proyecto de Google Cloud y habilitar la API de zona horaria:

Paso 1: crea o selecciona tu proyecto

  1. Navegue a Google Cloud Console .
  2. Si ha creado un proyecto anteriormente, puede seleccionarlo de la lista desplegable en la parte superior. De lo contrario, haga clic en Nuevo proyecto en la parte superior derecha.
  3. Asigne un nombre a su proyecto y, opcionalmente, también puede editar el ID del proyecto.
  4. Haga clic en Crear para crear el proyecto.

Paso 2: configurar una cuenta de facturación

Debe vincular una cuenta de facturación a su proyecto para usar la API de zona horaria de Google. Así es cómo:

  1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y haga clic en Facturación .
  2. Si tiene una o más cuentas de facturación, elija una cuenta y asóciela con su proyecto. De lo contrario, haga clic en Crear cuenta , complete el formulario para crear una nueva cuenta de facturación y luego asóciela con su proyecto.

Paso 3: habilite la API de zona horaria

Una vez que haya configurado su proyecto y su cuenta de facturación, puede habilitar la API de zona horaria.

  1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y vaya a API y servicios | biblioteca
  2. En la biblioteca de API, busque API de zona horaria y selecciónela.
  3. En la página de la API de zona horaria, haga clic en Habilitar .

Paso 4: Genere su clave API

Finalmente, necesita una clave de API para autenticar sus solicitudes en la API de zona horaria.

  1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y vaya a API y servicios | Cartas credenciales.
  2. Haga clic en el botón + CREAR CREDENCIALES en la parte superior y seleccione Clave API .
  3. Su nueva clave de API se creará y se mostrará. Cópielo y guárdelo de forma segura. Necesitará esta clave para realizar solicitudes a la API de zona horaria.

Ahora, su proyecto de Google Cloud está todo configurado y puede comenzar a usar la API de zona horaria de Google.

👉 Si bien la API de zona horaria es compatible con OAuth 2.0 y la cuenta de servicio para la autenticación, esta guía se enfoca en el método de clave de API más simple por razones de brevedad. Si necesita un método de autenticación más seguro o complejo, consulte la documentación de autenticación oficial de Google.

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

Si bien esto se puede resolver utilizando varias herramientas de automatización como Apex Trigger y otras, utilizaremos Salesforce Flow y la función de flujo HTTP Callout (GET) recientemente introducida .

HTTP Callout extrae o envía datos entre la base de datos de Salesforce y un sistema externo a través de Flow Builder sin usar código. Puede configurar integraciones directas según sea necesario sin tener que trabajar con un desarrollador o llamar a una herramienta de middleware, como Mulesoft. Después de configurar la acción de llamada HTTP en un flujo, Flow Builder genera automáticamente un registro de servicio externo , una acción invocable y una clase de Apex que puede usar para crear un recurso definido por Apex para flujos. A continuación, puede utilizar la salida de datos de la solicitud de la API como entrada en Flow Builder y en Salesforce.

Puede usar HTTP Callout para conectar un flujo a una variedad de API.

  • Obtener información de direcciones usando una API de mapa
  • Obtén las condiciones meteorológicas con una API de servicios meteorológicos
  • Genere el código de barras con una API de servicio de código de barras
  • Obtenga información de autorización de pago con una API de procesamiento de pagos
  • y mucho más

Antes de discutir la solución, permítame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.

Comencemos a construir este proceso de automatización.

Práctica guiada (nosotros hacemos):

Hay 3 pasos para resolver el requisito empresarial de Jestilla mediante Record-Triggered After-Save Flow . Debemos:

  1. Cree campos personalizados en el cliente potencial para almacenar la respuesta
  2. Crear una credencial con nombre
  3. Flujo de fuerza de ventas
    1. Definir propiedades de flujo para el flujo desencadenado por registro
    2. Agregue una fórmula para calcular la marca de tiempo
    3. Configurar una llamada HTTP GET para la API de zona horaria
    4. Agregue un elemento de decisión para verificar el código de respuesta
    5. Agregue un elemento Actualizar registros para actualizar el prospecto
    6. Agregue un elemento Crear registros para crear una tarea para que el propietario del cliente potencial maneje la respuesta de error

Paso 1: Cree campos personalizados en el objeto principal para almacenar la respuesta

En este paso, hemos establecido campos personalizados dentro del objeto principal. Estos servirán como repositorios para los datos de respuesta de la API de zona horaria de Google.

Etiqueta de campo Nombre de API de campo Tipo de datos
dstOffset dstOffset __c Número (18,0)
rawOffset rawOffset__c Número (18,0)
Posición actual Posición_actual__c Geolocalización
Identificación de zona horaria Time_Zone_Id__c Texto (255)
Nombre de zona horaria
Nombre_de_la_zona_horaria__c Texto (255)

Paso 2: crear una credencial con nombre

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, ingrese Credenciales con nombre y luego seleccione Credenciales con nombre .
  3. Haga clic en Nuevo legado .
  4. Rellene la página con la URL y los parámetros de autenticación del extremo de la llamada.
  5. Haga clic en Guardar .

Paso 3.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 la opción Flujo activado por registro , haga clic en Crear
    1. Objeto: Plomo
    2. Activar el flujo cuando: se crea un registro
    3. Establecer condiciones de entrada: se cumplen todas las condiciones (Y)
    4. Fila 1:
      1. Campo : Posición_Actual__Latitud__s
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Falso}
    5. Haga clic en + Agregar condición
    6. Fila 2:
      1. Campo : Posición_Actual__Longitud__s
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Falso}
    7. Optimizar el flujo para : acción y registros relacionados
    8. Elija la opción para incluir una ruta de ejecución asíncrona para acceder a un sistema externo después de que la transacción original para el registro de activación se confirme con éxito .
  5. Haga clic en Listo.

Paso 3.2: fórmula para calcular la marca de tiempo

  1. En Caja de herramientas , seleccione Administrador y luego haga clic en Nuevo recurso para calcular los segundos desde la época de Unix (1 de enero de 1970, 00:00:00).
  2. Ingrese la siguiente información :
    1. Tipo de recurso : Fórmula
    2. Nombre de API : forN_Timestamp
    3. Tipo de datos : Número
    4. Lugares decimales : 0
    5. Fórmula : RONDA((AHORA() – FECHAHORAVALUE(“1970-01-01 00:00:00”)) * 24 * 60 * 60, 0)
  3. Haga clic en Listo.

Paso 3.3: configurar una acción de llamada HTTP GET

HTTP Callout lo guía a través de la introducción de los detalles sobre el servicio HTTP basado en web o el punto final de la API REST al que se está conectando. Después de completar la configuración, invoca la acción en un flujo.

  1. En el nodo Ejecutar asincrónicamente , seleccione Acción .
  2. Haga clic en + Crear llamada HTTP .
  3. Configure el servicio externo que conecta Salesforce con la API basada en HTTP.
    1. Introduzca un Nombre para el servicio externo.
    2. Seleccione la credencial con nombre que creó en el paso 2 .
    3. Haga clic en Siguiente .
  4. El siguiente paso es configurar la acción invocable que puede usar en Flow Builder o en Salesforce.
    1. Para Etiqueta , ingrese la acción que realiza la llamada.
    2. Método : OBTENER
    3. Agregue el extremo de la URL para la solicitud.
      1. Ruta URL : /maps/api/timezone/json
    4. Agregue claves de parámetros de consulta si la API a la que está llamando las tiene. Cuando usa esta acción en un flujo, ingresa valores para las claves definidas.
      1. Haga clic en Agregar clave
        1. Clave : ubicación
        2. Tipo de datos : cadena
        3. Requerido : Verdadero
      2. Haga clic en Agregar clave
        1. Clave : marca de tiempo
        2. Tipo de datos : entero
        3. Requerido : Verdadero
      3. Haga clic en Agregar clave
        1. Clave: clave
        2. Tipo de datos : cadena
        3. Requerido : Verdadero
  5. Proporcione un cuerpo de respuesta de API de muestra. Salesforce genera una estructura de datos a partir de la respuesta de muestra.
    1. Vaya a la sección Proporcione una respuesta de muestra .
    2. Haga clic en Nuevo .
    3. Pegue una respuesta JSON de muestra .
       { "timeZoneName": "cadena de muestra", "compensación sin procesar": 1, "timeZoneId": "cadena de muestra", "errorMessage": "cadena de muestra", "dstOffset": 1, "estado": "cadena de muestra"
      }
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

Potenciando su experiencia de Salesforce: Explorando las funciones de DocGen de airSlate para Salesforce

Potenciando su experiencia de Salesforce: Explorando las funciones de DocGen de airSlate para Salesforce

Última actualización el 19 de junio de 2023 por Rakesh Gupta

Atrás quedaron los días en que la creación, generación y gestión de documentos eran producto de tediosos procesos manuales. Hoy en día, DocGen se puede optimizar fácilmente mediante la integración nativa de airSlate con Salesforce .

En pocas palabras, DocGen es una forma de crear documentos con contenido dinámico. Permite agregar lógica condicional e insertar fragmentos de datos de tamaño variable para generar un documento. Simplemente escriba la sintaxis utilizando el generador de etiquetas incorporado de airSlate y no tendrá ningún problema con el formato o la creación de plantillas para otros casos más adelante.

Por ejemplo, el equipo de ventas no sabe qué producto específico comprará un cliente, por lo que puede agregar varias condiciones en su formulario de pedido que se mostrarán según el producto. Esto permite crear un formulario de pedido una vez, lo que reduce la cantidad de procesamiento manual.

Generación de documentos con contenido dinámico precargado desde Salesforce

Imagine que puede generar un informe que incluya datos sobre Oportunidades que no están cerradas, o solo aquellas creadas después de una fecha específica, o cualquier otro criterio de su elección con un solo clic del botón. Más tarde, puede adjuntar estos informes a los registros de Salesforce, cargarlos en un almacenamiento externo o enviarlos por correo electrónico a los clientes si es necesario.

Para hacerlo, deberá crear tablas con un número dinámico de filas agregando etiquetas de tabla a la plantilla DOCX.

  1. Para comenzar, seleccione el flujo en el que está trabajando actualmente en airSlate o cree un nuevo flujo si aún no tiene uno. Elija Generación de documentos en el bloque Documento . Cree o cargue el documento DOCX de su elección.
  2. Luego cree o inserte una tabla simple con la siguiente sintaxis de etiquetas o simplemente copie y pegue la tabla a continuación:

    Nombre Cantidad
    {{tabla(Productos)}}  
    {{OpportunityName}} {{Cantidad de oportunidad}}
    {{mesa final}}  
  3. Tome nota : {{table(Products)}} {{endtable}} son las filas entre la fila del elemento de apertura.
  4. Cuando haya terminado, haga clic en Completar .

Cómo funciona DocGen en airSlate para Salesforce: agregar documentos y formularios

  1. Vaya a la pestaña Bots y haga clic en Agregar bot .
  2. Elija Precompletar desde el registro de Salesforce en la categoría de Salesforce. Este airSlate Bot precarga automáticamente un documento con datos tomados de un registro de Salesforce, objetos secundarios y archivos PNG y JPEG.
  3. Haga clic en Instalar Bot para agregarlo a su flujo de trabajo, luego se abrirá la ventana de configuración de Bot.
  4. Conecte su cuenta de Salesforce y elija el objeto base de Salesforce que contiene el registro que necesita (por ejemplo, Cuenta ). Seleccione Oportunidad como objeto relacionado.
    1. Seleccione Tabla para el tipo de datos que desea mapear
    2. Asignar campos de objetos de Salesforce a campos de documentos
    3. A continuación, ajuste las condiciones de búsqueda para el registro inicial
  5. El registro inicial es un registro en Salesforce que usamos para extraer datos. Si ejecuta el Flujo desde Salesforce, a través de un botón personalizado , use ese registro donde se hizo clic en el botón personalizado, como el registro de inicio. Si el Flujo no se ejecuta desde Salesforce, simplemente agregue algunos criterios de búsqueda para encontrar el registro que contiene los datos que necesita.
  6. Seleccione el registro inicial de Salesforce para completar previamente los campos del documento. Seleccione un campo de objeto de Salesforce y asígnelo a un campo en el documento (por ejemplo, ID de cuenta ). Cuando un destinatario agrega datos, el Bot encontrará e insertará otros datos para este registro en los campos que ha asignado.
  7. Establezca condiciones si desea ajustar cómo y cuándo actuará el Bot. Las condiciones son opcionales y pueden basarse en un documento , destinatario , fecha , flujo o etapa del contrato , número de campos completados . Puede agregar más de una condición, así como especificar cualquier cantidad de condiciones para activar el Bot.
  8. Si es necesario, puede personalizar la configuración avanzada , configurar cuándo actuará el bot y agregar etiquetas personalizadas.
  9. Después de eso, haga clic en Aplicar configuración para habilitar el Bot.
[contenido incrustado]

Cómo funciona DocGen en airSlate para Salesforce: agregar un bot de Salesforce

DocGen en airSlate para Salesforce funciona a la perfección con la adición de Salesforce Bot. Esta poderosa integración agiliza el proceso de generación de documentos dentro del ecosistema de Salesforce. Al aprovechar el bot de Salesforce, los usuarios pueden automatizar fácilmente la creación y distribución de documentos, ahorrando un tiempo valioso y aumentando la productividad. Con solo unos pocos clics, el bot extrae datos relevantes de los registros de Salesforce y los fusiona con plantillas personalizables, generando documentos pulidos y sin errores.

[contenido incrustado]

Agregar lógica condicional a sus plantillas DOCX

Agregar etiquetas condicionales a sus plantillas DOCX le permite mostrar bloques de texto según ciertas condiciones.

La sintaxis básica de las etiquetas condicionales aparece de la siguiente manera:

  • {{if(ConditionFieldName='Valor1')}}
  • {{else((ConditionFieldName='Value2')}}
  • {{terminara si}}

Veamos cada pieza por separado.

  • {{if(ConditionFieldName}} acción exitosa, si la condición 1 es verdadera
  • {{else((ConditionFieldName}} acción exitosa, si la condición 2 es verdadera
  • {{endif}} condición es cualquier expresión, variable o valor de una función, cálculo o fuente de datos.

Usando condiciones, puede mostrar u ocultar párrafos de texto. Para crear una condición, puede usar un Campo o Variable (para casos más complejos) con operadores como = , != , > , < .

Para los valores de condición, puede utilizar valores establecidos, valores de campo o variables.

Veamos un caso en el que, según el destinatario, el administrador de la cuenta deja una nota para aprobar o revisar el informe mensual.

A continuación, encontrará una guía paso a paso sobre cómo agregar etiquetas condicionales a sus plantillas DOCX:

  1. Cargue el documento que necesita y haga clic en Editar junto a él .
  2. Agregue la etiqueta condicional de su elección a su plantilla DOCX. Por ejemplo, insertaremos la etiqueta con condiciones basadas en la etapa de oportunidad. {{if(AccountSite='Legal')}} ¡Felicitaciones por cerrar los tratos!
  3. {{else(AccountSite='Sales')}} Verifique las cantidades.
  4. {{terminara si}}
  5. Después de esto, haga clic en Completar .

Cómo funciona DocGen en airSlate para Salesforce: configuración de la lógica condicional (parte 1)

  1. Muévase a la pestaña Bots , haga clic en Agregar bot , busque e instale el prerrelleno desde el registro de Salesforce desde la categoría de Salesforce.
  2. Una vez que se abra la ventana de configuración del Bot, configure los ajustes de Conexión .
  3. A continuación, seleccione objetos y campos de mapa . Elija el objeto base de Salesforce que contiene el registro que necesita (por ejemplo, Cuenta ).
  4. El tipo de datos que va a asignar está configurado como Único de forma predeterminada.
  5. Asigne campos de objetos de Salesforce a campos de documentos: Nombre de cuenta y Sitio de cuenta en nuestro caso.
  6. Luego, seleccione el registro inicial de Salesforce para completar previamente los campos del documento y decida cuándo actuará el Bot.
  7. Si es necesario, vaya a la configuración avanzada para establecer la frecuencia con la que actuará el bot, qué hacer con una revisión en caso de que el bot falle y agregue etiquetas para buscar flujos.
  8. Haga clic en Aplicar configuración para habilitar el Bot.
[contenido incrustado]

Cómo funciona DocGen en airSlate para Salesforce: configuración de la lógica condicional (parte 2)

Con DocGen, puede automatizar la generación de documentos en función de condiciones específicas, agilizando su flujo de trabajo y eliminando errores manuales. Al configurar la lógica condicional, puede controlar dinámicamente el contenido, el formato y la distribución de sus documentos, asegurando la personalización. Descubra cómo DocGen de airSlate revoluciona la generación de documentos, haciendo que su experiencia con Salesforce sea aún más eficiente y efectiva.

[contenido incrustado]

Una vez que haya terminado la configuración del bot, puede activar su flujo de trabajo con el botón personalizado .

Cómo funciona DocGen en airSlate para Salesforce: botón personalizado

Para ver si se ejecutó el flujo, regrese a su cuenta de airSlate y continúe con todos los flujos haciendo clic en Cerrar en la parte superior de la página.

Junto al Flujo, haga clic en Revisar . Elija el Paso para revisar el Flujo y haga clic en Revisar una vez más.

Una vez que se ejecuta el Flujo, el documento se completará automáticamente con los valores de los registros de Salesforce y, luego, partes del texto se representarán condicionalmente en función de estos valores.

[contenido incrustado]

Cómo funciona DocGen en airSlate para Salesforce: revisión del flujo de trabajo

Con DocGen, puede revisar sin esfuerzo sus flujos de trabajo, mejorando la colaboración y la productividad. Esta poderosa herramienta le permite realizar cambios en tiempo real en sus documentos, realizar un seguimiento de las revisiones y recopilar comentarios de las partes interesadas, lo que garantiza una gestión de documentos sin inconvenientes. Diga adiós a las revisiones manuales que consumen mucho tiempo y adopte la eficiencia de DocGen for Salesforce de airSlate, transformando su flujo de trabajo en un proceso optimizado y sin errores.

[contenido incrustado]

La línea de fondo

En esta publicación de blog, hemos explorado el proceso de generar documentos con contenido dinámico precargado desde Salesforce e incorporar lógica condicional en sus plantillas DOCX. Sin embargo, creemos que solo hemos tocado las posibilidades ilimitadas que ofrece airSlate para Salesforce . Si está intrigado por las capacidades de airSlate , le recomendamos que solicite una demostración para presenciar todo su potencial en acción.

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