Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .
El enlace a la publicación original, lo encontrarás al final de este artículo.
…
Presentamos las mejoras de la versión beta abierta de Anypoint Code Builder | Blog de desarrolladores de Salesforce
¡Nos complace anunciar el lanzamiento en junio de la versión beta abierta de Anypoint Code Builder! Anypoint Code Builder es el IDE (Entorno de desarrollo integrado) de próxima generación de MuleSoft, para que los desarrolladores diseñen, desarrollen e implementen API e integraciones. Desde su lanzamiento Open Beta en febrero de 2023, el equipo ha estado agregando mejoras regularmente en una cadencia bimensual. Mientras que ellanzamiento de abrilse centró en capacidades de IU adicionales, el lanzamiento de junio se centra en una mayor accesibilidad para los usuarios y la flexibilidad en la forma en que los usuarios pueden diseñar e implementar sus API.
Disponibilidad de Open Beta en el plano de control de la UE
Desde su lanzamiento, la versión beta abierta de Anypoint Code Builder solo ha estado disponible en el plano de control de EE. UU. Nos complace decir que esta restricción ya no existe. ¡La versión beta abierta de Anypoint Code Builder ahora está disponible para todos los usuarios en el plano de control de la UE! Esto significa que los usuarios de la UE ya no necesitarán crear nuevas cuentas de prueba en el plano de control de NA para acceder a una instancia de IDE en la nube y experimentar una latencia mucho menor a medida que diseñan y desarrollan. En el futuro, todas las versiones y mejoras futuras de Anypoint Code Builder estarán disponibles para los aviones de control de EE. UU. y la UE simultáneamente.
Entonces, ¿cómo pueden comenzar los usuarios de la UE? Simplemente haga que el administrador de su organización acepte los Términos y condiciones de la versión Beta y le otorgue permisos, luego diríjase aAnypoint Code Builder Central, donde puede crear una nueva instancia de su IDE en minutos. Y dado que es un IDE basado en la nube, seleccionaremos automáticamente el plano de control adecuado para su instancia. ¡Es fácil!
Diseño e implementación de API iterativas
Con Anypoint Code Builder, a los usuarios se les ofrecen tres recorridos principales para comenzar:diseñar especificaciones de API,implementar especificaciones de APIydesarrollar integraciones. Tradicionalmente, la única forma de implementar una especificación de API era terminar por completola fase de diseño y publicarla en nuestro mercado público,Anypoint Exchange. Sin embargo, no existe una regla que diga que el diseño y la implementación de la API deben estar aislados (después de todo, todos somos Trailblazers aquí, ¿no?). Es por eso que presentamos el diseño e implementación de API iterativas en Anypoint Code Builder. Esto le permite comenzar a diseñar la especificación de su API y luego saltar directamente a la fase de implementación para comenzar a agregar lógica empresarial antes de completar la fase de diseño. El resultado final es una experiencia optimizada que permite a los usuarios flexibilizarse entre las fases de diseño e implementación, abordando todo el proyecto en secciones en lugar de todo a la vez. Y para colmo, hemos hecho que toda esta experiencia sea perfecta al proporcionar una vista única para ambas fases directamente desde su navegador.
Se agregó soporte de interfaz de usuario para fragmentos
Cuando se lanzó por primera vez Open Beta para Anypoint Code Builder, la interfaz de usuario era de solo lectura. Los desarrolladores podían usarlo para visualizar su trabajo, pero no había forma de desarrollarlo activamente. Sin embargo, este siempre fue un plan temporal y el objetivo final es brindar a los usuarios dos opciones sólidas para la integración y el desarrollo de API: código bajo y código profesional. Durante los últimos seis meses, hemos estado trabajando para lograr esta visión agregando formas de interactuar con la interfaz de usuario. Por ejemplo, en nuestro lanzamiento de abril, introdujimos la capacidad de agregar nuevos componentes a sus flujos simplemente usando el símbolo "+".
En nuestro lanzamiento de junio, presentamos dos mejoras más en la interfaz de usuario para mejorar la experiencia de código bajo. La primera es la capacidad de seleccionar conectores directamente desde Anypoint Exchange mientras se agregan componentes. Esto proporciona a los desarrolladores una alternativa de interfaz de usuario a la paleta de comandos, al mismo tiempo que les brinda una forma más limpia de clasificar todas las versiones y operaciones del conector que están disponibles. El segundo es la capacidad de agregar fragmentos de la interfaz de usuario.
Los fragmentos son bloques de código preempaquetados que los desarrolladores pueden reutilizar en varios proyectos. Hay algunos que vienen preconstruidos con Anypoint Code Builder, pero los desarrolladores también pueden crearlos personalizados. Esto acelera el desarrollo al facilitar la replicación de tareas repetitivas. Por ejemplo, supongamos que con frecuencia necesita obtener información de contacto de una organización específica en Salesforce. La primera vez que haga esto, escribirá el XML con toda la configuración necesaria. Una vez escrito, puede empaquetar ese código en un fragmento. La próxima vez que necesite obtener información de contacto de esa organización, simplemente puede seleccionar ese fragmento de la interfaz de usuario en lugar de codificarlo todo nuevamente. A medida que los desarrolladores comienzan a crear bibliotecas de fragmentos, vemos que se trata de una herramienta increíblemente poderosa que ayudará a promover la reutilización en toda la organización.
Conclusión
El lanzamiento en junio de la versión beta abierta de Anypoint Code Builder es un hito fundamental en nuestro camino hacia la disponibilidad general. Con la expansión al plano de control de la UE, estamos entusiasmados de brindarles a más desarrolladores la oportunidad de tener en sus manos el producto. Y esperamos continuar introduciendo capacidades de interfaz de usuario adicionales junto con algunas funcionalidades de inteligencia artificial emocionantes a finales de este año. Si desea obtener una descripción general más detallada de las mejoras de junio, consulte ladescripción general completa del video.
Más recursos
Sobre el Autor
Rohan Vettiankales gerente de marketing de productos en MuleSoft, donde dirige su cartera de integración. A lo largo de su carrera, ayudó a llevar una variedad de productos al mercado, incluida una herramienta de visualización de datos basada en la web, una plataforma de infraestructura de datos local y un producto PaaS en la nube. En su tiempo libre, Rohan disfruta de actividades al aire libre como el senderismo, el snowboard y la escalada en roca. También le encanta la música y ha estado tocando el piano desde que tenía 12 años y recientemente ha estado aprendiendo guitarra. Siga a Rohan enLinkedIn.
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
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:
Haga clic en Configuración .
En el cuadro Búsqueda rápida, escriba Clases de Apex .
Seleccione Clases de Apex y luego haga clic en Programar Apex .
Ingrese la siguiente informacion:
Nombre : Sincronizar cuenta con SAP
Clase de Apex : ScheduleAccountSync
Frecuencia : Para configurar como un trabajo diario, elija la opción Semanal y luego seleccione todos los días de la semana.
Inicio : la fecha y la hora en que comenzó la iteración más reciente del trabajo programado.
Fin : la fecha y la hora en que el trabajo terminó o terminará.
Hora de inicio preferida : la fecha y la hora en que está programada la ejecución del trabajo
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:
¿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.
Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .
El enlace a la publicación original, lo encontrarás al final de este artículo.
…
5 pasos para la IA generativa confiable para desarrolladores de Salesforce | Blog de desarrolladores de Salesforce
La IA generativa se ha convertido en el factor de cambio para las empresas innovadoras y orientadas al cliente. Impulsada por algoritmos avanzados y aprendizaje automático, la IA generativa puede impulsar la innovación, optimizar los procesos y acelerar las empresas en todas partes al proporcionar experiencias y soluciones personalizadas adaptadas a las necesidades únicas de los clientes.
Igualmente importante para las experiencias poderosas dirigidas por el cliente es la protección de los datos críticos para el negocio. Los sistemas de IA procesan y generan contenido basado en grandes conjuntos de datos y, lamentablemente, los modelos de lenguaje extenso (LLM) no están poniendo su negocio en primer lugar. Mientras se prepara para implementar capacidades de IA generativa, es fundamental priorizar la privacidad de los datos. Al implementar medidas sólidas de protección de datos, no solo mantiene el cumplimiento de las regulaciones pertinentes, sino que también mantiene la confianza del cliente, su activo más valioso.
Con los cinco pasos que se describen a continuación, puede innovar rápidamente, aumentar la productividad y mejorar las experiencias personalizadas, al mismo tiempo que garantiza la seguridad y la privacidad de los datos de sus clientes.
Paso 1: comprender y auditar sus datos
Para asegurarse de tener las protecciones de seguridad, privacidad y gobernanza correctas, querrá comprender qué datos usará para crear avisos, plantillas y modelos de capacitación. Comprender los datos a los que permite que accedan los modelos de IA ayudará a evitar que se compartan inadvertidamente los datos personales o confidenciales de los clientes.
Entonces, ¿cómo empezar? Primero, anonimice y agregue los datos de los clientes antes de usarlos con fines de IA generativa. Elimine la información de identificación personal (PII) y cualquier otro dato confidencial que pueda identificar a las personas.
Una manera fácil de hacer esto en Salesforce es usar Data Detect , un producto que le permite revisar objetos y campos antes de permitir que los procesos de IA accedan a ellos para recibir indicaciones y capacitación. Una vez que los datos se han escaneado a través de Data Detect, puede confirmar que no hay sorpresas en esos datos, como números de tarjetas de crédito o direcciones de correo electrónico en campos donde ese tipo de datos no debería existir.
Data Detect también puede ayudar a recomendar un nivel de clasificación, como "Confidencial" o "PII" para datos personales, y proporcionar detalles sobre el contenido de un objeto, así como encontrar datos confidenciales generados por chatbots, casos y transcripciones de llamadas registradas automáticamente. por IA.
Paso 2: configure la protección de la privacidad de los datos para sus procesos generativos de IA
Respetar la privacidad del cliente y proteger los datos a lo largo de sus procesos de IA es crucial para establecer y mantener la confianza. A medida que confía más en la IA para comprender y tomar decisiones a partir de sus datos, ¿cómo protege también esos datos, especialmente la PII?
Para los procesos de IA que usan datos personales, como aumentar los registros de contacto u orquestar ofertas de marketing dinámicas 1:1, querrá desarrollar políticas de uso de datos claras y transparentes que describan cómo se manejarán los datos de los clientes, incluido su uso en sistemas de IA generativos. . Comunique estas políticas a sus clientes y bríndeles la oportunidad de optar por no participar o elegir el nivel adecuado de uso de datos. Además, cree una política para eliminar y ofuscar los datos que ya no son útiles o relevantes, para que sus clientes permanezcan protegidos y sus procesos de IA generativa permanezcan precisos.
Centro de privacidadpuede ayudar a verificar que sus procesos de IA estén autorizados para su uso en capacitación y avisos. El Centro de privacidad también puede ayudarlo a crear políticas de retención para administrar el ciclo de vida de los datos utilizados y generados por la IA, incluidas las transcripciones de llamadas, los chatbots y los casos registrados automáticamente por la IA.
Paso 3: configure su organización para administrar la IA generativa
Tanto para proteger los datos utilizados en los procesos de IA como para confirmar que sus integraciones se mantienen dentro de los límites de los datos que desea utilizar, deberá implementar controles para proteger los datos de los clientes frente a accesos no autorizados o infracciones.
Los controles de acceso le permiten restringir el acceso a los datos del cliente solo al personal autorizado. Al otorgar acceso según sea necesario, reduce el riesgo de que los modelos de IA y las personas no autorizadas accedan a datos confidenciales. Esto protege contra el posible uso indebido de esos datos al tiempo que garantiza la privacidad del cliente.
Security Center puede ayudarlo a administrar de manera centralizada los permisos de usuario y las configuraciones de la organización para los datos que se usan y se obtienen de los procesos de IA.
Ahora preparémonos para implementar la IA de manera segura en toda su organización.
Paso 4: pruebe sus procesos para la implementación
Las pruebas en un entorno de espacio aislado son primordiales cuando se trata de IA generativa. Esto tiene dos propósitos fundamentales: probar los procesos de IA y capacitar a los empleados sobre el uso seguro y responsable de la IA generativa. Al realizar pruebas exhaustivas en un entorno de espacio aislado controlado, las organizaciones pueden evaluar y refinar el rendimiento y el comportamiento de sus modelos generativos de IA antes de implementarlos en escenarios del mundo real. Las pruebas permiten la identificación y mitigación de posibles problemas, como sesgos, errores o consecuencias no deseadas que pueden surgir durante un proceso de IA generativa.
Además, un entorno de sandbox proporciona un espacio seguro para que los empleados adquieran experiencia práctica y capacitación en el uso de herramientas y sistemas de IA generativa. Les permite explorar capacidades e identificar consideraciones éticas mientras toman decisiones informadas al usar la tecnología de manera responsable en sus operaciones diarias. Al aprovechar las pruebas de sandbox, las organizaciones pueden garantizar la confiabilidad, la eficacia y la aplicación ética de la IA generativa al tiempo que capacitan a su fuerza laboral para adoptar y utilizar esta tecnología transformadora con confianza.
Asegúrese de que, cuando utilice un espacio aislado para el entrenamiento de IA, haya eliminado todos los datos personales para crear sus indicaciones o entrenar un modelo de IA; puede eliminar u ofuscar fácilmente cualquier dato que no deba incluirse con Data Mask .
Paso 5: Supervise y proteja sus procesos de IA
Garantizar que la integración de IA no acceda a los datos ni modifique los sistemas más allá del alcance previsto es crucial para mantener la seguridad de los datos y la integridad del sistema. Como describimos anteriormente, los controles de acceso y los permisos de los usuarios deben definirse cuidadosamente, otorgando a los sistemas de IA solo los privilegios necesarios y limitando su acceso a fuentes o sistemas de datos específicos. Además, se deben realizar pruebas y validaciones exhaustivas de la integración de la IA para verificar que funcione según lo previsto y que no tenga consecuencias ni vulnerabilidades no deseadas.
Finalmente, implementar mecanismos de monitoreo robustos puede ayudar a detectar y alertar cualquier intento de acceso no autorizado o comportamiento anormal por parte del sistema de IA. Las auditorías y revisiones periódicas de los procesos de integración de IA y los registros de acceso pueden ayudar a identificar cualquier desviación o posibles riesgos de seguridad.
Event Monitoring ayuda a que el proceso de monitoreo y detección sea más fácil al permitir la configuración de capacidades, como la seguridad de transacciones, para enviar alertas o bloquear acciones más allá de lo que se pretendía inicialmente para su proceso de IA.
Finalmente, a medida que se adentra más en su viaje de IA, es fundamental que sus datos estén respaldados y puedan restaurarse hasta el nivel de registro en el caso poco probable de que los datos utilizados y aumentados por IA estén mal configurados o sincronizados incorrectamente. Haga una copia de seguridad de sus datos para ver cada versión de los registros utilizados y tocados por AI, y restaure cualquier error.
Conclusión
Al adoptar un enfoque que prioriza la privacidad e implementar medidas sólidas de protección de datos, puede crear una base confiable para prácticas de IA generativas responsables, sostenibles y éticas, todo mientras impulsa una innovación más eficiente y efectiva e interacciones más personalizadas con los clientes. Para obtener más información sobre cómo comenzar con la IA generativa, consulte nuestra Guía de introducción a la IA.
Recursos
Sobre el Autor
Marla Hay Vicepresidenta de Seguridad, Privacidad y Gestión de Datos en Salesforce y dirige la organización de productos de Servicios de confianza. Se unió a Salesforce en 2017 después de liderar productos en una empresa de gestión de identidad de consumidores. Marla tiene una licenciatura en Ciencias de la Computación de la Universidad de Cornell y una maestría en Ciencias de la Computación de la Universidad Johns Hopkins.
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
Ben Halpern es un desarrollador Jr. de Salesforce en Gurukul On Cloud (GoC) . Creó un disparador de Apex para el objeto Lead.
desencadenar LeadTrigger en Lead (antes de la actualización) { if(Desencadenador.esAntes){ si (Desencadenador.Isupdate){ para (Lead myLead:trigger.new){ if(myLead.LeadSource==null && myLead.createddate== Fecha.hoy().addDays(-1)){ //hacer algo } } } }
}
Sabe cómo escribir la clase de prueba para el código anterior. Necesita ayuda para crear un registro con una fecha pasada dentro de la clase de prueba.
Enfoque de Campeón de Automatización (I-do):
Para establecer la fecha de creación de un sObject en una clase de prueba de Apex, puede utilizar el método Test.setCreatedDate(recordId, createdDatetime) . Esto le permite especificar una fecha y hora deseadas para el campo Fecha de creación del registro de sObject dentro de la clase de prueba.
A continuación se muestran detalles sobre los parámetros setCreatedDate .
Nombre de los parámetros
Detalles
ID de registro
Representa el ID de un sObject.
Fecha y hora de creación
Representa el valor para asignar al campo Fecha de creación del sObject.
Además, es importante tener en cuenta que el método setCreatedDate no se puede utilizar dentro de los métodos anotados con @isTest(SeeAllData=true). Hagamos una pausa aquí, familiarícese con el método de prueba s etCreatedDate Apex.
Práctica guiada (nosotros hacemos):
Con estos métodos, puede determinar de forma eficaz si un campo de texto es nulo, está vacío o está en blanco en Apex. Veamos esto en acción:
Haga clic en Configuración | Consola de desarrollador .
Para crear una clase de prueba de Apex, haga clic en Archivo | Nuevo | Clase ápice.
@esPrueba clase privada LeadTrigger_Test { static testMethod void testSetCreatedDate() { Lead l = new Lead(LastName='myLastname', Company='myCompany'); insertar l; Test.setCreatedDate(l.Id, Date.today().addDays(-1)); Prueba.startTest(); Lead myLead = [SELECCIONE Id, Nombre, Apellido, Empresa, Fecha de creación FROM Lead WHERE Apellido ='miApellido' límite 1]; myLead.FirstName = 'myFirstname'; actualizar myLead;
System.assertEquals(myLead.CreatedDate, Date.today().addDays(-1)); Prueba.detenerPrueba(); }
}
Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .
El enlace a la publicación original, lo encontrarás al final de este artículo.
…
Herramientas para desarrolladores desde cero (Parte 1 de 2) | Blog de desarrolladores de Salesforce
Tanto si es un nuevo desarrollador que acaba de empezar su carrera en el ecosistema de Salesforce como si es un desarrollador experimentado de Salesforce que aún no se ha cambiado a nuestras nuevas herramientas para desarrolladores, esta serie de publicaciones de blog es para usted. Le mostraremos cómo configurar y utilizar las herramientas que pueden ayudar a todos los desarrolladores de Salesforce a ser mucho más productivos y felices.
Antes de que empieces
Si es nuevo en Salesforce y no tiene una organización (instancia de Salesforce) disponible para practicar, regístrese en una organización Developer Edition . Es completamente gratis y tiene la mayoría de las funciones de Salesforce preinstaladas para que pruebe y aprenda. Deberá proporcionar un nombre de usuario en forma de dirección de correo electrónico, pero no es necesario que sea uno real. Es solo un nombre de usuario que debe ser único en todos los productos de Salesforce. Después de solicitar una organización, recibirá un correo electrónico con los pasos para iniciar sesión. Tome nota del nombre de usuario de la organización que proporcionó, ya que tendrá que usarlo más adelante.
Si es un desarrollador de Salesforce establecido y un usuario de Developer Console, este es el momento adecuado para adoptar las nuevas herramientas de desarrollador. Si bien Developer Console puede ser una forma rápida de cambiar algunas líneas de código, usar las herramientas más modernas cambiará las reglas del juego, ya que incluyen un montón de capacidades que simplificarán su trabajo. Usar las nuevas herramientas requiere un cambio de hábitos al principio, pero te prometo que muy pronto entenderás sus beneficios. Además, tenga en cuenta que ya no estamos invirtiendo en Developer Console, y problemas como la falta de soporte para Lightning Web Components son algo que no abordaremos.
Instalación de las herramientas de desarrollador
Los metadatos de su organización están en la nube, pero para desarrollarse de una manera más productiva, desarrollará localmente. El modus operandi será trabajar con los metadatos en su máquina local y sincronizarlos con su organización, lo que significa recuperarlos o implementarlos cuando sea necesario.
Una alternativa al desarrollo local es usar Code Builder (Beta) , un IDE basado en web que puede iniciar desde su organización y que tiene las herramientas de desarrollador instaladas. Sin embargo, en este blog, nos centraremos en el flujo de trabajo de desarrollo local.
El primer paso es instalar las siguientes herramientas en su máquina:
CLI de Salesforce : esta es la herramienta de interfaz de línea de comandos que utilizará para escribir comandos para mover su código entre su entorno local y su organización, ejecutar pruebas, implementar datos de muestra y mucho más. Si no le gusta escribir comandos en una terminal, no tema, ya que tenemos opciones alternativas como se describe en esta publicación de blog.
Código VS : este es el IDE que usará para desarrollar en su máquina local.
Java : algunas funciones en las extensiones de Salesforce para VS Code dependen de la plataforma Java, kit de desarrollo de edición estándar (JDK). Instálelo siguiendo las instrucciones vinculadas.
Extensiones de Salesforce para VS Code : Este es un grupo de extensiones de VS Code que aumentan las capacidades de VSCode, exponiendo la mayoría de los comandos de la CLI de Salesforce en la interfaz de usuario de VS Code, para que pueda ejecutarlos con clics. Las extensiones también agregan funciones para habilitar la depuración, facilitar las pruebas, permitirle explorar los metadatos en su organización y más.
Creación de un proyecto de Salesforce DX
Cuando trabaja con los metadatos de una organización localmente, los archivos de metadatos deben almacenarse en una carpeta de proyecto, siguiendo una estructura determinada. Eso es lo que llamamos un proyecto de Salesforce DX.
Una vez instaladas las herramientas para desarrolladores, puede continuar y crear un proyecto de Salesforce DX que luego conectará a su organización. Una forma de hacerlo es escribir un comando que utilice la CLI de Salesforce para crear el proyecto. Puede escribir ese comando en una terminal normal.
sf project generate -n myProject
Nota: la CLI de Salesforce contiene dos ejecutables, sfdx y sf . En este blog, escribiremos los comandos utilizando el ejecutable y la sintaxis más modernos, que es sf .
El indicador -n indica el nombre del proyecto. La CLI de Salesforce aplicará scaffolding a un proyecto en una carpeta con ese nombre. Una vez que se crea el proyecto, puede abrirlo en VS Code, con File → Open Folder .
Gracias a las extensiones de Salesforce para VS Code, existe una forma sin escribir para ejecutar los comandos de la CLI de Salesforce. Simplemente abra la paleta de comandos de VS Code con View → Command Palette y escriba SFDX para ver todos los comandos disponibles. También podríamos haber creado el proyecto con SFDX: Create Project en lugar de escribir el comando.
Autorizar y establecer una organización como predeterminada
Una vez que su proyecto esté configurado, el siguiente paso es autorizar la CLI de Salesforce para que funcione con su organización. Comencemos esta vez con la forma de hacerlo sin escribir. Cuando abra el proyecto por primera vez, simplemente haga clic en el botón Sin conjunto de organizaciones predeterminado y aparecerá la paleta de comandos, sugiriendo que autorice una organización. Proceda siguiendo las instrucciones del comando.
Otra forma de hacerlo es ejecutar un comando CLI de Salesforce. Esta vez, y de ahora en adelante, le recomiendo que use el terminal integrado de VS Code para ejecutar comandos, ya que tener todas las herramientas en la misma pantalla reduce el cambio de contexto. Puede abrirlo en Terminal → New Terminal .
El comando CLI de Salesforce utilizado para autorizar una organización es:
sf org login web -s
Luego, siga las instrucciones dadas por el comando. El indicador -s configurará esa organización como su organización predeterminada para este proyecto. Puede ver la organización predeterminada de su proyecto en la barra inferior de VS Code.
Todos los comandos de la CLI de Salesforce tienen varios indicadores disponibles. Por ejemplo, si desea conectarse a una zona de pruebas, puede pasar la URL de la instancia de la zona de pruebas a sf org login web usando -r . Para ver la ayuda del comando y todos sus indicadores disponibles, ejecute el comando agregando --help al final.
Cuando trabaja con varias organizaciones, será común autorizar la CLI de Salesforce con varias organizaciones. Puede ver las organizaciones a las que la CLI de Salesforce tiene autorización para acceder ejecutando sf org list . Puede cambiar la organización predeterminada de un proyecto haciendo clic en el nombre de la organización en la barra inferior de VS Code, como hicimos para autorizar por primera vez, o ejecutando:
sf config set target-org=your-org-username@sf.com
Permítanme compartir con ustedes un último consejo. Las organizaciones pueden tener alias. Esto es útil cuando no desea recordar nombres de usuario largos o complejos. Para establecer un alias, escriba el siguiente comando.
sf alias set myalias=your-org-username@sf.com
Cuando se establece un alias, puede utilizar el alias en lugar del nombre de usuario de la organización en cualquiera de los comandos de la CLI de Salesforce.
Implementación de metadatos en la organización
Una vez que la CLI de Salesforce y su IDE estén autorizados con su organización, y la organización esté configurada como la organización predeterminada para su proyecto, puede comenzar a desarrollar e implementar cambios. Por ejemplo, digamos que queremos crear una clase de Apex. Puede crear el archivo de metadatos que representa la clase de Apex manualmente en la carpeta classes . Sin embargo, es mucho más efectivo crear la clase desde la paleta de comandos.
También puede crear una clase escribiendo el siguiente comando de la CLI de Salesforce:
sf apex generate class -n myClass -d force-app/main/default/classes
Una vez que su clase esté lista para implementarse en su organización, hay varias formas de hacerlo. Una forma es especificar los metadatos en el comando.
sf project deploy start -m ApexClass
Una segunda forma es especificar una carpeta para implementar.
sf project deploy start -p force-app/main/default/classes
Y una tercera forma, disponible gracias a Salesforce Extensions for VS Code, es hacer clic con el botón derecho en el archivo y hacer clic en Deploy This Source to Org .
Todas esas opciones le permiten ejecutar las implementaciones usted mismo. Si desea automatizar este paso e implementar un archivo cada vez que se guarda, puede establecer la configuración Implementar al guardar VS Code en "Verdadero" y ahorrar algo de tiempo.
Cuando se implementan sus metadatos, normalmente querrá abrir su organización para realizar pruebas. Puede iniciar sesión utilizando su navegador como de costumbre. Pero para los desarrolladores, es más eficiente hacer clic en el botón de abrir organización en la barra inferior de VS Code.
Conclusión
En esta publicación de blog, aprendió cómo obtener una organización gratuita para el desarrollo y cómo instalar las herramientas de desarrollo que todo desarrollador de Salesforce debería usar hoy. Ha entendido cómo crear un proyecto y autorizarlo con su organización y, por último, cómo implementar metadatos mediante la CLI de Salesforce o VS Code. En la Parte 2 de esta serie, aprenderá cómo recuperar metadatos, trabajar con organizaciones con seguimiento de origen y usar bibliotecas de Node para cuidar la calidad de su código. Además, compartiremos otras gemas ocultas de las extensiones de Salesforce para VS Code. Si te gusta un formato de video, mira nuestro episodio de codeLive . Y si tiene preguntas, no dude en hacerlas en Salesforce Developers Trailblazer Community . ¡Estén atentos para la segunda publicación de blog de esta serie mañana!
Sobre el Autor
Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Puedes seguirla en Linkedin , Twitter o GitHub .
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .
El enlace a la publicación original, lo encontrarás al final de este artículo.
…
Herramientas para desarrolladores desde cero (Parte 2 de 2) | Blog de desarrolladores de Salesforce
Tanto si es un nuevo desarrollador que acaba de empezar su carrera en el ecosistema de Salesforce como si es un desarrollador experimentado de Salesforce que aún no se ha cambiado a nuestras nuevas herramientas para desarrolladores, esta serie de publicaciones de blog es para usted. Le mostraremos cómo configurar y utilizar las herramientas que pueden ayudar a todos los desarrolladores de Salesforce a ser mucho más productivos y felices.
En la Parte 1 de esta serie , discutimos cómo obtener una organización gratuita para el desarrollo y cómo instalar las herramientas de desarrollo que todo desarrollador de Salesforce debería usar hoy. Le mostramos cómo crear un proyecto y autorizarlo con su organización y, finalmente, cómo implementar metadatos mediante la CLI de Salesforce o VS Code. En esta segunda publicación de blog, aprenderá cómo recuperar metadatos, trabajar con organizaciones con seguimiento de origen y usar bibliotecas de Node para cuidar la calidad de su código. Además, compartiremos otras gemas ocultas de las extensiones de Salesforce para VS Code. ¡Vamos a sumergirnos en él!
Recuperar metadatos de la organización
Un pilar del desarrollo de Salesforce es ser eficiente sin reinventar la rueda. Es por eso que hay muchas herramientas de código bajo disponibles que le permiten crear y modificar metadatos directamente en su organización con solo hacer clic. Es posible que vea estas herramientas a las que se hace referencia como herramientas de "apuntar y hacer clic" o herramientas "declarativas". Algunos metadatos típicos que crea con clics son páginas, aplicaciones y flujos.
Estos metadatos son algo que puede recuperar en su proyecto local y continuar ampliándolos con código si es necesario. De hecho, la mejor práctica es recuperar los metadatos de su organización y almacenarlos en un sistema de control de versiones como Git. Pero dejemos este tema para otra entrada del blog.
Si crea o modifica metadatos con clics en su organización y conoce el nombre del tipo de metadatos que desea recuperar, puede hacerlo ejecutando este comando:
sf project retrieve start -m FlexiPage
Los nombres de los tipos de metadatos pueden no ser obvios al principio. Afortunadamente, hay algo muy bueno que puede usar para ver todos los metadatos que existen en su organización y recuperar lo que necesita: Org Browser. El navegador de la organización se agrega a VS Code gracias a las extensiones de Salesforce para VS Code. Ábralo haciendo clic en el ícono de la nube en el panel lateral izquierdo de VS Code, busque los metadatos que necesita y simplemente haga clic en recuperar.
Una última opción: si los metadatos ya existen en su proyecto local y desea recuperar una versión actualizada, puede hacer clic con el botón derecho en el archivo y seleccionar Retrieve Source from Org .
Un requisito común para las organizaciones existentes será recuperar todos los metadatos de la organización por primera vez y almacenarlos en el proyecto local (y, por lo general, en un sistema de control de versiones). Este es un tema más avanzado, pero si quieres aprender cómo hacerlo, te recomiendo ver este video Quick Take .
Trabajar con organizaciones con seguimiento de origen
En esta publicación de blog, nos hemos centrado en las organizaciones que no tienen activado el seguimiento de fuentes. Esta es la opción predeterminada para las organizaciones y sandboxes de desarrolladores, aunque, en los sandboxes de desarrolladores, se puede activar el seguimiento de origen. Existe otro tipo de organización, denominada organización borrador, que tiene activado el seguimiento de origen de forma predeterminada.
La principal diferencia con las organizaciones con seguimiento de origen, con respecto a la implementación y recuperación de código, es que los cambios de metadatos se rastrean automáticamente. Eso significa que puede simplificar los comandos de implementación y recuperación, simplemente escribiendo:
sf project deploy start
o
sf project retrieve start
La CLI detectará automáticamente todo lo que haya cambiado en su organización o en su proyecto local y lo implementará o recuperará en consecuencia. Este es un cambio de juego para los desarrolladores, ya que no tener que especificar los metadatos o la carpeta para recuperar o implementar lo convierte en un desarrollador mucho más productivo. Lea la documentación para comenzar con el seguimiento de fuentes en Sandboxes u organizaciones Scratch .
Cuidando la calidad del código con las bibliotecas de Node
Cuando genera un proyecto, también contendrá un archivo package.json . Este archivo define el proyecto como un proyecto de Node.js. La CLI de Salesforce y la Extensión de Salesforce para su IDE estructuran el proyecto de esta manera, para que pueda ejecutar secuencias de comandos que cuidan la calidad de su código. Los scripts usan bibliotecas que se definen en la sección devDependencies de package.json y deben descargarse en su proyecto local ejecutando el comando npm install . Ninguna de las bibliotecas de Node se implementará en su organización, solo se usarán en su máquina local.
Aquí hay un resumen de lo que hacen las bibliotecas:
Prettier se usa para formatear su código siguiendo criterios configurables. Esto es extremadamente útil cuando varios desarrolladores trabajan en el mismo proyecto, ya que tienen una forma unificada y automatizada de formatear el código. También proporcionamos un complemento Prettier específico para formatear las clases de Apex.
ESLint lo ayuda a encontrar y solucionar problemas con su código JavaScript. Además, proporcionamos un complemento ESLint diseñado para filtrar el código JavaScript de Lightning Web Components.
sfdx-lwc-jest se utiliza para escribir y ejecutar pruebas de Jest para sus componentes web Lightning. sa11y es un complemento para escribir pruebas de accesibilidad y asegurarse de que sus componentes sean accesibles.
El punto de entrada para usar las bibliotecas son los scripts definidos en la sección scripts .
Los scripts se pueden ejecutar localmente, bajo demanda y de forma automatizada. Por lo general, estos scripts se ejecutan automáticamente antes de enviar su código a un repositorio de código al fusionar su código con código desarrollado por otros, o al mover cambios entre entornos en su canalización. Esto garantiza que el código tenga la calidad esperada y que su funcionalidad no se rompa. Este concepto se conoce como integración continua, y puede ver un buen video de codeLive al respecto.
El uso de estas bibliotecas no es obligatorio, pero recomendamos encarecidamente hacerlo. Para saber más sobre este tema, lee nuestra entrada de blog .
Otras joyas de las Extensiones de Salesforce para VS Code
Eso no es todo sobre las extensiones de Salesforce. Agregan a VS Code muchas más capacidades, como resaltado de sintaxis, finalización de código y validación de CSS para Lightning Web Components, Aura Components, Apex, SOQL y Visualforce.
También muestran una pestaña de prueba que hace que sea mucho más fácil ejecutar y escribir pruebas de Apex y Lightning Web Components.
Y, por último, también facilitan la depuración de Apex, gracias a Apex Replay Debugger .
Además de eso, algo muy bueno de VS Code es que puede agregar toneladas de extensiones creadas por desarrolladores de todos los diferentes ecosistemas. Hay extensiones para ayudarlo con el control de versiones y con el análisis estático de código (como PMD ). Existen extensiones para Prettier y ESLint que te dan avisos cuando el código no cumple con sus reglas. Hay extensiones para casi todo lo que pueda necesitar, ¡incluso para usar Chat GPT! Eche un vistazo al VS Code Marketplace para ver todas las extensiones disponibles o, mejor aún, ¡cree la suya propia!
Conclusión
¡Vaya, eso fue mucho! En esta publicación de blog, aprendió sobre las herramientas de desarrollador que todo desarrollador de Salesforce debe conocer y utilizar. Al dominar estas herramientas, se convertirá en un desarrollador mucho más productivo, rápido y feliz. Si quieres aprender todo este contenido en formato de video, mira nuestro episodio de codeLive . Si trabaja con sandboxes, puede ampliar su conocimiento sobre cómo trabajar con sandboxes y la CLI de Salesforce leyendo nuestra serie de publicaciones de blog . Y si tiene preguntas, no dude en hacerlas en Salesforce Developers Trailblazer Community . ¡Feliz codificación!
Sobre el Autor
Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Puedes seguirla en Linkedin , Twitter o GitHub .
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
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.
…
Aspectos destacados de la versión para desarrolladores | Aprende Moar Verano '23 | Blog de desarrolladores de Salesforce
¡Haz un gran revuelo con el lanzamiento de Summer '23!
Sabemos que cada versión trae consigo muchas funciones nuevas y sorprendentes, y puede haber mucho que digerir. Con Learn MOAR, empaquetamos el lanzamiento y se lo ofrecemos en un formato fácil de digerir con blogs, videos y más.
¡Es fácil empezar!
¡Explore los trailmixes de Trailhead con aspectos destacados de lanzamiento clave para desarrolladores o administradores, o ambos!
¡Únase a nosotros para Release Readiness Live ! Los expertos en productos y los defensores de los desarrolladores analizarán y demostrarán las nuevas funciones en el lanzamiento de Summer '23 y, al final de nuestra transmisión, responderemos sus preguntas. Sintonice a las 9 am PT el 19 de mayo para la sesión de desarrolladores. ¿No puedes unirte a nosotros en vivo? La grabación se publicará unas horas después de que finalice la transmisión.
Siga y complete un trailmix de Learn MOAR Summer '23 para administradores o desarrolladores para obtener una insignia exclusiva de la comunidad.
Introducción
¡El lanzamiento de Summer '23 está aquí y está repleto de funciones para desarrolladores! En esta publicación de blog, resumiremos los aspectos más destacados, para que pueda obtener una descripción general de las novedades y decidir qué es lo más interesante para usted. En publicaciones posteriores de Learn MOAR, profundizaremos en algunos de estos aspectos destacados, para que pueda explorarlos con mayor detalle. Mantenerse actualizado con las últimas innovaciones lo ayudará a aumentar su experiencia y convertirse en un desarrollador más exitoso.
Componentes web Lightning
Comencemos hablando de Lightning Web Components, que presentará una gran cantidad de nuevas funciones en Summer '23.
Un par de funciones que estaban en Beta ahora estarán disponibles de forma general (GA). Esto incluye DOM ligero , que permite integraciones de terceros y estilo global, Lightning Web Security para LWC y Aura , que facilita el uso de bibliotecas de JavaScript de terceros en LWC. La API RefreshView , que le permite actualizar la vista de un componente, también será GA. Además, el adaptador de cable GraphQL se está moviendo a Beta, lo que significa que puede probarlo de inmediato, sin tener que registrarse para el programa piloto. Esto cambiará las reglas del juego sobre cómo se leen los datos en Lightning Web Components.
Hay varias mejoras en la sintaxis de LWC que facilitarán la escritura de sus componentes. Se está lanzando una nueva directiva de plantilla lwc:spread (consulte los documentos ), que le permite distribuir propiedades de objetos a un componente secundario, lo que reduce significativamente la cantidad de código que necesita escribir. A partir de Summer '23, podrá establecer un valor dinámico para el atributo de ranura de un elemento HTML. Además, se habilitará la inyección programática de hojas de estilo, lo que le permitirá establecer la propiedad estática de las hojas de estilo para un componente.
Salesforce Mobile App Plus (Salesforce App+) es una versión de la aplicación Salesforce Mobile que habilita LWC Offline. LWC Offline es un entorno de tiempo de ejecución avanzado para componentes web Lightning que aumenta el tiempo de ejecución estándar con funciones diseñadas específicamente para uso móvil y sin conexión. Si bien LWC Offline anteriormente solo estaba disponible en la aplicación móvil Salesforce Field Service, Salesforce App+ le permite usarlo en un contexto más genérico. Salesforce App+ se cerró en Beta en Spring '23 y se trasladará a GA en Summer '23. Salesforce App+ está disponible bajo la licencia Salesforce Mobile Plus.
Integración de plataforma
Tener una plataforma robusta es tan importante como tener capacidades de integración sólidas. Es por eso que la versión Summer '23 trae muchas funciones de integración nuevas.
También se están mejorando las capacidades de integración en Flow. Flow Builders ahora podrá configurar llamadas HTTP GET a sistemas externos que no tienen una especificación de API abierta a través de la función Servicios externos. Las llamadas HTTP POST están en Beta. Si es un Muley, puede leer más sobre las innovaciones de Flow plus MuleSoft en la siguiente sección.
Además de todo esto, el adaptador GraphQL de Salesforce Connect que anunciamos en febrero se mudará a GA, y Event Relay ahora admitirá Shield Platform Encryption y tendrá una nueva interfaz de usuario de configuración fácil de usar.
Innovaciones entre nubes
Aunque MuleSoft, Tableau y Slack siguen sus propios ciclos de lanzamiento, son partes integrales del ecosistema de Salesforce y de vital importancia para los desarrolladores.
Mula Suave
Una de las innovaciones más recientes de MuleSoft es Anypoint Code Builder (Beta), el IDE de próxima generación de MuleSoft para diseñar, desarrollar e implementar API, integraciones y automatización desde un solo entorno. ¡Compruébalo si aún no lo has hecho!
Si leyó la sección "Integración de la plataforma" anterior, es posible que haya recibido un spoiler: MuleSoft se está integrando en Flow más que nunca. En Summer '23, habrá una nueva sección en la interfaz de usuario de configuración de Salesforce Platform, desde la cual podrá configurar y administrar los servicios de MuleSoft , que luego se pueden usar en Flow Builder. Además, el soporte de MuleSoft se está agregando a Flow Orchestrator , lo que facilita la creación de procesos comerciales automatizados de varios pasos que utilizan los servicios de MuleSoft.
Si trabaja con API, es posible que esté familiarizado con la colección Postman de API de Salesforce . Esta colección se ha vuelto muy popular y es ampliamente adoptada en el ecosistema de Salesforce, con actualmente más de 500 bifurcaciones y más de 800 estrellas. Tableau recientemente se subió al carro al agregar sus propias muestras de la API REST de Tableau a la colección. Para obtener más información, lea nuestra entrada de blog .
Si le gustó la colección, le encantará la innovación más reciente de Tableau, cuya vista previa pública se anunció en la Conferencia de Tableau (TC) 2023 del 9 al 11 de mayo. El nuevo Tableau Embedding Playground ofrece a los desarrolladores un entorno de aprendizaje interactivo para desarrollar rápidamente soluciones de análisis integradas. Integre visualizaciones de Tableau y agregue rápidamente interacciones que establezcan filtros y parámetros, obtengan marcas y datos seleccionados, utilizando los componentes básicos de los métodos y las propiedades de la API de incorporación. En el futuro, use sus propias visualizaciones en Tableau Cloud, Tableau Server o Tableau Public para desarrollar sus aplicaciones personalizadas con código que puede exportar y ejecutar en cualquier lugar.
La diversión no se detiene ahí. Para admitir análisis integrados personalizados y seguros, Tableau introdujo recientemente dos nuevas funciones de usuario que permiten a los desarrolladores y administradores pasar cualquier atributo de usuario en tiempo de ejecución dentro del flujo de autenticación integrado. Para obtener más información, leanuestra entrada de blog .
Flojo
Finalmente, nos complace compartir que Slack acaba de anunciar la disponibilidad general de su plataforma Slack de próxima generación. En la nueva plataforma, puede crear aplicaciones modulares mediante el desarrollo de componentes básicos, como funciones, flujos de trabajo y activadores, mediante TypeScript y Deno . Ahora puede implementar en la infraestructura administrada por Slack, ahorrando tiempo y aumentando la eficiencia. En el futuro, los usuarios de Slack podrán aprovechar cada capacidad que ofrece y combinarlas con otras funciones, servicios y proveedores de software para crear automatizaciones potentes y personalizadas. La plataforma también incluye una CLI, que puede usar para desarrollar, probar e implementar sus funciones y flujos de trabajo. Para obtener más información al respecto y obtener experiencia práctica, diríjase a la guía de inicio rápido .
Aprende MOAR
Nuestros gerentes de producto y defensores de desarrolladores están de vuelta para compartir las últimas características y funcionalidades que llegarán en Summer '23. Para ayudarlo a desarrollarse más rápido, hay una gran cantidad de contenido nuevo del equipo de relaciones con desarrolladores que cubre sus nuevas características favoritas. ¡Asegúrese de consultar Release Readiness Live el viernes 19 de mayo a las 9:00 a. m. PST, y lea lo último en el blog de desarrolladores de Salesforce para conocer más innovaciones relacionadas con desarrolladores en el lanzamiento de Summer '23!
Sobre el Autor
Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Actualmente se enfoca en el desarrollo de Lightning Web Components y Slack. Puedes seguirla en Twitter o Linkedin .
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
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.
…
Cambios en la estructura del DOM interno del componente Lightning base para la futura compatibilidad con sombras nativas | Blog de desarrolladores de Salesforce
Salesforce está preparando los componentes base de Lightning para adoptar Shadow DOM nativo , lo que mejorará el rendimiento de los componentes y los alineará mejor con los estándares de los componentes web. Como parte de esta fase de preparación, hemos cambiado la estructura DOM interna de algunos de nuestros componentes. Recién comenzamos y continuaremos modificando las partes internas de los componentes en versiones posteriores. En esta publicación, discutiremos qué cambiará y cómo puede prepararse para ello.
¿Qué es el DOM de sombra nativo?
Shadow DOM es un estándar web que encapsula la estructura del modelo de objeto de documento (DOM) interno de un componente web. Esto nos da la capacidad de proporcionarle componentes robustos y seguros protegiéndolos de ser manipulados por HTML, CSS y JavaScript arbitrarios.
Actualmente, Salesforce mantiene un polyfill de sombra sintético para navegadores heredados, como versiones anteriores de Microsoft Edge, pero ahora que todos los principales navegadores admiten DOM de sombra nativo, estamos preparando nuestros componentes para hacer lo mismo.
Con la introducción del shadow DOM nativo, mejoraremos la encapsulación de los componentes, haciéndolos más consistentes y seguros, y brindaremos una forma más predecible de diseñarlos. Esto resolverá una gran cantidad de problemas de compatibilidad con versiones anteriores y alineará los componentes web Lightning con los estándares web.
Sin embargo, puede provocar una fase de adaptación a medida que hacemos el cambio.
La implementación interna de los componentes básicos está cambiando
Hemos estado trabajando en la preparación de nuestros componentes base para adoptar el shadow DOM nativo. Los escenarios específicos en los que se rompía la encapsulación de los componentes base requerían que creáramos un nuevo elemento contenedor dentro del límite de la sombra. Para ayudar a ilustrar esto, veamos un componente base de ejemplo llamado lightning-foo . Antes, el componente se veía así:
<dx-code-block title language code-block="
Example base component
«>
A partir de Summer '23, se verá así:
<dx-code-block title language code-block="
Example base component
«>
La mecánica interna de los componentes básicos no se diseñó para acceder directamente y tratarse como una API confiable para su uso. En cambio, nuestros componentes preempaquetados estaban destinados a usarse tal como son, utilizando las API públicas oficiales que hemos compartido abiertamente. Sin embargo, sabemos que algunos clientes están utilizando componentes internos de manera no documentada. Si está accediendo a los elementos internos de un componente base con fines de personalización y prueba, tenga en cuenta estos cambios.
¿Cómo puede arreglar su código personalizado y sus pruebas?
Al probar manualmente sus aplicaciones, es posible que detecte un componente personalizado que funcionaba anteriormente y que no tiene el aspecto esperado. Debido a estos cambios, sus pruebas automatizadas de un extremo a otro también pueden fallar. En ambos casos, puede significar que su código personalizado o código de prueba depende de las partes internas de un componente base que ha cambiado . Exploremos estos dos problemas con más profundidad:
Un componente no se ve como se esperaba:
Problema: Intentar diseñar el elemento o las clases personalizadas dentro de un componente base puede generar resultados imprevistos.
Solución: El cambio de sombra sintética a componentes totalmente encapsulados con DOM de sombra nativo puede cambiar su estrategia de CSS. Al migrar sus personalizaciones de estilo a la sombra nativa, siga estos pasos:
Consulte la disponibilidad de un gancho para peinar . Ofrecen un excelente método para adaptar un componente sin profundizar en las complejidades del CSS subyacente o el shadow DOM.
Asegúrese de que el valor que está aplicando al gancho de estilo esté vinculado a su sistema de diseño en lugar de un valor fijo y predefinido. Evite usar un valor codificado.
Una prueba de extremo a extremo falla:
Problema: Cualquier implementación que use combinadores CSS fallará. Por ejemplo, lightning-foo > p no coincidirá con nuestro marcado actualizado.
Solución: Los combinadores hacen que el CSS sea frágil y deben evitarse a menos que se usen por una buena razón. La mayoría de las veces, los combinadores se pueden eliminar sin ninguna regresión. Si se desea un elemento específico, se pueden usar otros métodos de orientación que no se basen en el marcado que nunca cambia. Es decir, evite apuntar explícitamente a elementos HTML siempre que sea posible. Use otros selectores disponibles, como clases que permiten que su uso de CSS sea abstracto, modular y separado del elemento HTML. Si sus pruebas se basan en combinadores de CSS, le recomendamos que adopte el Modelo de automatización de pruebas de interfaz de usuario (UTAM) para evitar cambios importantes en el futuro, ya que los objetos de la página se mantienen actualizados con todos los cambios de componentes.
Conclusión
En resumen, estamos logrando avances significativos al preparar los componentes base de Lightning para adoptar Shadow DOM nativo, lo que garantizará un mejor rendimiento y la alineación con los estándares de los componentes web, además de mejorar la seguridad y la confiabilidad de los componentes. Al encapsular la estructura DOM interna, nos esforzamos por brindar una experiencia más sólida y predecible tanto para los desarrolladores como para los usuarios.
Si bien estos cambios pueden presentar algunos desafíos iniciales, son pasos necesarios hacia un sistema más estandarizado y preparado para el futuro. Seguimos comprometidos a informar y apoyar a los desarrolladores durante esta transición.
En preparación para estos cambios, recomendamos adoptar ganchos de estilo y métodos de orientación como clases para garantizar que el uso de CSS siga siendo modular y adaptable. Además, recomendamos enfáticamente adoptar UTAM como su solución de prueba de extremo a extremo.
Estén atentos a más actualizaciones y cambios a medida que Salesforce continúa optimizando y mejorando el marco de componentes Lightning. Al adoptar estas próximas mejoras, los desarrolladores pueden esperar una experiencia de desarrollo más fluida y eficiente mientras crean aplicaciones poderosas en la Plataforma Salesforce.
Más recursos
Sobre los autores
Maeve Tuntivate es Gerente sénior en el equipo de Gestión de productos en Salesforce.
Jesse Brack es ingeniero principal de UX en el equipo de ingeniería de sistemas de diseño de Salesforce.
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
Última actualización el 22 de mayo de 2023 por Rakesh Gupta
Gran idea o pregunta duradera:
¿Cómo eliminar registros de Salesforce utilizando Flow?
Objetivos:
Después de leer este blog, podrá:
Comprender la anotación @InvocableMethod
Más información sobre el método database.emptyRecycleBin
Configurar la acción de Apex para eliminar registros de forma permanente de Flow
Configurar el flujo de pantalla con el elemento Eliminar registro
Y mucho más
¿Qué es la eliminación completa?
La eliminación definitiva es la eliminación permanente de los registros especificados de la Papelera de reciclaje. Cuando los datos se eliminan de forma permanente, es casi imposible recuperarlos. Esto generalmente se logra a través de los métodos Database.EmptyRecycleBin .
Al vaciar los contenedores de reciclaje, tenga en cuenta las siguientes reglas y pautas:
Una vez que los registros se eliminan de la Papelera de reciclaje mediante esta llamada, se pueden consultar mediantequeryAll()durante algún tiempo. Por lo general, este tiempo es de 24 horas, pero puede ser más corto o más largo.
Una vez que los registros se eliminan mediante la llamada Database.EmptyRecycleBin , no se pueden recuperar.
Warren Mason es administrador de sistemas en Gurukul on Cloud (GoC). En GoC están utilizando Salesforce Flow para optimizar los procesos de ventas. Warren tiene un requisito para eliminar clientes potenciales sin correo electrónico. Está construyendo un flujo de pantalla:
Descubra todos los clientes potenciales sin correo electrónico
Si bien esto se puede resolver con varias herramientas de automatización como Apex Trigger y otras, usaremos Salesforce Flow y llamaremos a un método de Apex. Para llamar a un método de Apex, agregue el elemento Acción a su Flujo de Salesforce y seleccione una clase de Apex con una anotación @InvocableMethod.
En este artículo, usaremos la llamada clase de base de datos EmptyRecycleBin . Con Database.EmptyRecycleBin es posible borrar los registros de Salesforce. El método EmptyRecycleBin() elimina los registros de la papelera de reciclaje inmediatamente. A partir del lanzamiento de Summer'23 , no es posible acceder directamente al método EmptyRecycleBin desde Flow, por eso estamos usando la clase Apex Invocable.
Antes de discutir la solución, permítame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.
Comencemos a construir este proceso de automatización.
Práctica guiada (nosotros hacemos):
Hay 2 pasos para resolver el requisito comercial de Warren usando ScreenFlow . Debemos:
Cree una clase de Apex y una clase de prueba para eliminar registros de forma permanente de la Papelera de reciclaje.
Flujo de fuerza de ventas
Definir propiedades de flujo para el flujo de pantalla
Agregue un elemento Obtener registros para encontrar todos los clientes potenciales sin dirección de correo electrónico
Agregue un elemento de decisión para verificar los clientes potenciales encontrados o no (del paso 2)
Agregue el elemento Eliminar registros para eliminar clientes potenciales
Agregar acción: llame a Empty RecycleBin Invocable Apex Class
Paso 1: Cree una clase de Apex y una clase de prueba
Ahora, tenemos que comprender una nueva anotación de Apex, es decir, @InvocableMethod. Esta anotación nos permite usar un método de Apex como algo que se puede llamar desde Flow y Apex. Los métodos invocables se llaman con la API REST y se usan para invocar un solo método de Apex. Los métodos invocables tienen valores de entrada y salida dinámicos y admiten llamadas de descripción.
La anotación InvocableVariable identifica una variable de clase utilizada como parámetro de entrada o salida para la acción invocable de un método InvocableMethod. Si crea su propia clase personalizada para usarla como entrada o salida de un método invocable, puede anotar variables de miembros de clase individuales para que estén disponibles para el método.
La anotación de variable invocable admite los modificadores que se muestran en este ejemplo.
La clase EmptyRecycleBin contiene dos variables, una para eliminar un solo registro y otra para manejar la eliminación de varios registros. Siéntase libre de pasar el valor a una o ambas variables según sea necesario.Cree la siguiente clase en su organización.
clase pública EmptyRecycleBin { @InvocableMethod(label='Papelera de reciclaje vacía' description='Eliminar permanentemente los registros de la Papelera de reciclaje.' iconName='slds:estándar:record_delete' categoría = 'Acciones de Apex personalizadas') ejecución de vacío estático público (Lista <Solicitudes> lista de solicitudes) { List<SObject> recordstoDelete = New List<SObject>(); para (Solicitudes req: lista de solicitudes) { if(req.obj != null){ recordstoDelete.add(req.obj); } if(req.listofSObjects != null){ recordstoDelete.addAll(req.listofSObjects); } } if(registrosparaEliminar.tamaño()>0){ Database.emptyRecycleBin(registrosparaEliminar); } } Solicitudes de clases públicas{ @InvocableVariable (descripción ='Aceptar un registro de tipo SObject.' requerido=falso) objeto público SObject; @InvocableVariable (descripción ='Aceptar múltiples registros de un tipo SObject.' requerido=falso) public List<SObject> listofSObjects; }
}
Copie el código deGitHubo instálelo usandoesta URL.
Paso 2.1: Definir propiedades de flujo
Haga clic en Configuración .
En el cuadro Búsqueda rápida, escriba Flujos .
Seleccione Flujos y luego haga clic en Nuevo flujo .
Seleccione el flujo de pantalla opción y haga clic en Crear y configurar el flujo.
Se abrirá el diseñador de flujo para usted.
Paso 2.2: Adición de elementos Obtener registros para encontrar clientes potenciales sin correo electrónico
El siguiente paso es usar el objeto Prospecto para encontrar los prospectos sin dirección de correo electrónico.
En Flow Designer, haga clic en el icono + y seleccione el elemento Obtener registros .
Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
Seleccione elobjeto Prospecto de la lista desplegable.
SeleccioneSe cumplen todas las condiciones (Y).
Establecer condiciones de filtro
Fila 1:
Campo : Correo electrónico
Operador : Igual
Valor : {!$ConstanteGlobal.EmptyString}
Cuántos registros almacenar:
Seleccionartodos los registros
Cómo almacenar datos de registro:
Elija la opción para Almacenar automáticamente todos los campos .
Paso 2.3: uso del elemento de decisión para verificar la variable de recopilación de registros (del paso 2)
Ahora usaremos el elemento Decisiónpara comprobar la Variable de recopilación de registros del paso 2para saber si devuelve el cliente potencial o no.
En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
Fila 1:
Recurso: {!Get_Leads}
Operador: es nulo
Valor: {!$ConstanteGlobal.Falso}
Haga clic enListo .
Paso 2.4: Agregar acción: eliminar registros para eliminar clientes potenciales
El siguiente paso es eliminar los clientes potenciales que encontramos en el Paso 2.2. Para ello utilizaremos el elemento Eliminar Registros .
En Flow Designer, debajo del nodo Sí , haga clic en el icono + y seleccione el elemento Eliminar registros .
Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
Para Cómo encontrar registros para eliminar, seleccione Usar los ID almacenados en una variable de registro o una variable de colección de registros .
Selecciona el {!Get_Leads} de la lista desplegable.
Haga clic en Listo.
Paso 2.5: Adición de una acción para llamar a una clase de Apex invocable
En Flow Designer, haga clic en el icono+ y seleccione el elemento Acción .
Seleccione la clase de Apex invocableEmptyRecycleBin .
Ingrese un nombre en el campo Etiqueta : el nombre de la API se completará automáticamente.
Establecer valores de entrada:
Objeto para “listofSObjects” (Entrada) : Lead
Objeto para "obj" (Entrada) : Plomo
Almacenar valores de entrada
listofSObjects : {!Get_Leads}
Haga clic enListo .
Al final, Warren's Flow se verá como la siguiente captura de pantalla:
Una vez que todo se vea bien, guarde el flujo.
Prueba de concepto
Creé 201 clientes potenciales sin una dirección de correo electrónico para probar el flujo anterior.
Ahora ejecute el flujo de pantalla y espere a que se complete el flujo.
Vuelva a la Papelera de reciclaje para asegurarse de que los clientes potenciales se hayan eliminado definitivamente.
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.
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.
…
Pasar a 2GP administrado con migraciones de paquetes | Blog de desarrolladores de Salesforce
Han pasado casi cuatro años desde que lanzamos por primera vezel paquete administrado de segunda generación (2GP), que permite a nuestros socios de AppExchange crear y distribuir soluciones utilizando un modelo de desarrollo basado en CLI, basado en fuente y fácil de automatizar.
Desde entonces, recibimos una gran cantidad de excelentes comentarios de nuestra comunidad de desarrolladores, y continuamos innovando en múltiples áreas relacionadas con la experiencia del desarrollador, el rendimiento, la paridad del tipo de metadatos con el paquete administrado de primera generación (1GP), etc. Cada vez que nos reunimos con desarrolladores de ISV, constantemente escuchamos sobre la necesidad de que Salesforce los ayude a ellos y a sus clientes a pasarse al mundo de 2GP.
¡Hoy, tengo algunas noticias emocionantes para compartir con todos ustedes! Estamos abordando la pregunta n.º 1 de nuestros desarrolladores de ISV al presentar una nueva función:Migraciones de paquetes. En pocas palabras, Package Migrations automatiza por completo el proceso de convertir paquetes 1GP a 2GP y migra sin problemas a los clientes con paquetes instalados a 2GP. Si es un socio ISV que crea paquetes administrados, ¡esta publicación de blog es para usted!
Antes de sumergirnos en los detalles de las migraciones de paquetes, echemos un vistazo a algunos beneficios de usar 2GP para el desarrollo de paquetes.
Beneficios de usar 2GP para el desarrollo de paquetes
En el corazón de 2GP se encuentra un modelo de desarrollo basado en fuente, donde un repositorio de código fuente como Git representa la fuente de la verdad para su paquete. Esto es fundamentalmente diferente del mundo de 1GP, donde utiliza una organización de empaquetado para mantener todos los metadatos que desea empaquetar y distribuir a sus clientes.
Este modelo de desarrollo impulsado por la fuente, impulsado por laCLI de Salesforce, puede aumentar drásticamente la productividad y la colaboración de su equipo. Los desarrolladores pueden usarDev Hubpara activar rápidamenteorganizaciones temporales, crear una función de forma conjunta y comprometerla con el control de código fuente. Cuando esté listo para distribuir una nueva versión de su 2GP, simplemente extraiga la rama correspondiente a una máquina local y use la CLI para crear su nueva versión del paquete.
Es importante destacar que este enfoque basado en CLI también significa que puede integrar fácilmente su proceso de empaque por completo en CI/CD, lo que facilita la automatización completa de su flujo de trabajo. Puede, por ejemplo, ejecutar automáticamenteSalesforce Code Analyzeren una base de código y, siempre que no se encuentren problemas, crear una nueva versión del paquete.
En el mundo de 1GP, estabas atrapado usando unespacio de nombres diferente para cada uno de tus paquetes. En 2GP, todos sus paquetes pueden compartir el mismo espacio de nombres, lo que le permite aprovechar un enfoque verdaderamente modular para el desarrollo de paquetes para mantener sus paquetes bien organizados. También es posibledeclarar explícitamente dependencias entre paquetes, asegurando que todo funcione en conjunto sin problemas.
Con 2GP, también obtiene un control de versiones flexible, lo que le permite abandonar versiones de paquetes que ya no desea utilizar. En su lugar, puede especificar unancestro de la versión del paquetey crear efectivamente una nueva rama en la que desee continuar con su desarrollo.
Finalmente, apoyar a los clientes nunca ha sido tan fácil con 2GP. En el mundo de 1GP, los parches solo se pueden crear desde una organización de parches. Con el modelo de desarrollo basado en el código fuente de 2GP, puede simplemente crear una versión del paquete de parches directamente desde la CLI y, siempre que elparche cumpla con los requisitosrelacionados con los cambios menores y la ascendencia del paquete, se crea y está listo para instalarse en la organización de su cliente.
Dicho todo esto, 2GP puede agregar mucho valor a su proceso de desarrollo. ¡Ahora, averigüemos cómo las Migraciones de paquetes pueden ayudarlo a llegar al mundo de 2GP!
Introducción a las migraciones de paquetes
Package Migrations amplía la funcionalidad de 2GP con comandos CLI adicionales y capacidades adicionales para ayudar a los desarrolladores de ISV a realizar una transición completa al mundo de 2GP. Actualmente se encuentra en Developer Preview y está abierto para que todos los desarrolladores de ISV lo prueben en sus paquetes 1GP existentes. ¡Siga leyendo para saber cómo participar en la versión preliminar para desarrolladores!
Hay dos elementos para las migraciones de paquetes: conversión de paquetes y migración de paquetes.
La conversión de paquetes se inicia a través del nuevo comando sf package convert . Toma una versión específica de su paquete 1GP existente (Acme v1.0 en este ejemplo) y usa algo de magia detrás de escena para convertirlo en una versión de paquete 2GP correspondiente (Acme v1.0.0.1 usando la numeración de versión 2GP).
Una vez que tenga una versión de paquete 2GP convertida, puede migrar clientes a 2GP. Si tiene un suscriptor con Acme v1.0 instalado, iniciaría el proceso tratándolo como una actualización de paquete normal: a través de la CLI con sf package install (ver documentos ), instalación de URL o actualizaciones automáticas.
Mientras intenta instalar su paquete 2GP convertido v1.0.0.1, que coincide con la versión mayor.menor del paquete 1GP instalado en el suscriptor A, ejecutamos una nueva lógica que inicia el proceso de migración del paquete . Sin cambiar ningún metadato en la organización del cliente, y sin requerir la intervención del usuario si usa actualizaciones automáticas, simplemente cambiamos las referencias del paquete para que apunten al nuevo paquete 2GP.
Una vez que un cliente migre a 2GP, cualquier parche o actualización del paquete de este cliente deberá usar 2GP.
Participación en la versión preliminar para desarrolladores de migraciones de paquetes
En la Comunidad de socios, encontrará uncanal exclusivopara esta versión preliminar para desarrolladores. Le recomendamos que se una a este canal y configure las notificaciones paraenviar por correo electrónico cada publicaciónpara recibir las últimas actualizaciones del equipo de Migraciones de paquetes.
En este canal, encontrará una serie de enlaces útiles, incluido un formulario para registrarse en Developer Preview. Necesitaremos algunos detalles, como su ID de organización de empaquetado, para que podamos activar la función Migraciones de paquetes.
Es importante destacar que participar en Developer Preview no tendrá ningún impacto en su paquete de 1GP. Por lo tanto, no se preocupe y participe, ya que sus comentarios son esenciales para ayudarnos a identificar y resolver problemas lo antes posible.
Una vez que esté activado, puede comenzar a probar las migraciones de paquetes.
Probar la conversión de un paquete administrado de primera generación
Muy bien, ¡comencemos! En primer lugar, asegúrese de haber instalado la CLI de Salesforce.
Si lo instaló anteriormente, asegúrese de estar usando la última versión:
sf update
Ahora asegúrese de que está ejecutando dentro del contexto de un proyecto de SalesforceDX. Puedes crear un nuevo proyecto usando:
sf project generate --name <Your project name>
Vincule el espacio de nombres de su 1GP administrado iniciando sesión en su DevHub y siga los pasos .
¡Eso es todo para la configuración! Ahora puede continuar e intentar convertir su paquete.
sf package convert --installation-key mdpTest --package 033xxx --wait 20
Repasemos los parámetros. Estamos utilizando la clave de instalación mdpTest . Será necesario cada vez que intente instalar esta versión del paquete en el futuro. Alternativamente, puede usar --installation-key-bypass para omitir la clave de instalación. Deberá ingresar su ID de paquete 1GP completo comenzando con 033 después de --package . El proceso de conversión puede demorar un poco y, por lo tanto, agregamos la opción --wait para esperar 20 minutos.
A medida que se ejecuta el proceso de conversión, obtendrá una actualización de su estado. Suponiendo que todo salió bien, recibirá un mensaje de éxito con la ID y la URL de instalación para la versión del paquete 2GP recién convertida.
¡Felicitaciones, su paquete ahora está convertido a 2GP! Si encontró algún problema en el camino, infórmenos utilizando el formulario en el grupo Comunidad de socios .
Nota: Al momento de escribir esta publicación de blog, este comando convertirá la última versión administrada y lanzada de su paquete. Estamos trabajando para permitirle convertir versiones de paquetes Beta y anteriores. Por otro lado, durante Developer Preview, no es posible promocionar paquetes 2GP convertidos al estado Lanzado.
Ahora que su paquete está convertido, probemos la migración de una organización suscriptora.
Probar la migración de un paquete administrado de primera generación instalado
Para probar la migración de un suscriptor, deberá crear una organización borrador ya que, durante la versión preliminar para desarrolladores, solo admitimos organizaciones borrador. Puede configurar una nueva organización borrador como esta:
sf org create scratch -f project-scratch-def.json -a MyScratchOrg
En el código anterior, -f apunta a su archivo de definición de organización borrador . Debe asegurarse de que su archivo de definición de organización borrador incluya cualquier función de Salesforce de la que pueda depender su paquete. Finalmente, estamos usando MyScratchOrg como el alias de esta organización.
Con la configuración de la organización borrador, continúe e instale la versión del paquete 1GP que convirtió anteriormente utilizando la URL de instalación que obtiene de su organización de empaquetado 1GP. Esta debería ser su última versión administrada y lanzada en este momento.
Puede confirmar que el paquete se instaló correctamente durante la pantalla de instalación. Vea el ejemplo a continuación.
Y consulte la sección Paquetes instalados del menú Configuración.
Ahora que instaló su 1GP en la organización borrador, está listo para la migración.
Inicie el proceso de migración utilizando la URL de instalación que recibió al final del proceso de conversión del paquete:
Ahora pasará por el mismo conjunto de pantallas que el anterior, pero esta vez para su paquete 2GP convertido.
Actualmente, la interfaz de usuario muestra que la "instalación" se ha completado. En realidad, lo que hicimos fue una migración de paquetes que se completó con éxito.
Tenga en cuenta que en este ejemplo, he usado la segunda compilación Beta para la versión 1.7, que corresponde a la misma versión mayor.menor que la versión del paquete 1GP instalada anteriormente. Como el 2GP convertido, durante la Vista previa del desarrollador, se crea como una versión Beta, se muestra como tal.
Una vez más, puede confirmar la versión del paquete actualizado en la sección Paquetes instalados del menú Configuración, que también muestra, en este ejemplo, que el número de versión es 1.7 (Beta 2).
Una vez que haya migrado el paquete en su organización borrador, le recomendamos que lo pruebe para asegurarse de que funciona como se esperaba.
También debe aprovechar la oportunidad para verificar si las aplicaciones, como la aplicación de administración de licencias o la aplicación de administración de funciones, muestran la información correcta para su paquete migrado. Si encuentra algo que no está bien, por favor plantéelo como un problema y lo investigaremos.
Mientras tanto …
Se necesitarán algunos lanzamientos para que las migraciones de paquetes estén disponibles de forma general. Su participación en Developer Preview, probando sus paquetes y brindándonos comentarios, es esencial para ayudarnos a identificar y resolver problemas antes.
Mientras tanto, ¿qué más puedes hacer? Le recomendamos que experimente con el uso de paquetes de segunda generación como parte de su modelo de desarrollo actual basado en 1GP. ¿Confundido? Dejame explicar.
Como mencioné anteriormente, hay una serie de ventajas específicas de 2GP. De estos, hay algunos de los que puede comenzar a beneficiarse hoy. Estos son los pasos que puede seguir:
Puede configurar su control de código fuente y alimentarlo con metadatos extraídos de su organización de empaquetado.
Puede crear un DevHub y organizaciones borrador derivadas para el desarrollo utilizando metadatos de su control de código fuente.
Puede crear un paquete 2GP para desarrollo interno y pruebas que reflejen su paquete 1GP, pero usando un espacio de nombres solo interno o el mismo que su paquete 1GP.Las colisiones de espacios de nombresevitarán que los paquetes 1GP y 2GP con el mismo espacio de nombres se instalen en el mismo entorno.
Una vez que esté satisfecho con el contenido de su paquete 2GP, puede migrar los metadatos desde la rama de control de fuente correspondiente a su organización de empaquetado y emitir una nueva versión de su paquete para distribuir a los clientes.
Esto lo ayudará a sumergirse en el mundo de 2GP y, una vez que Package Migrations esté disponible de forma general, podrá abandonar su modelo de desarrollo de 1GP por completo y pasar por completo a un modelo de desarrollo de 2GP.
Conclusión
Estamos muy entusiasmados con las migraciones de paquetes, pero necesitamos su ayuda para asegurarnos de que sea lo mejor posible. Si es un desarrollador de ISV, continúe yregístrese para la Vista previa para desarrolladoresen la Comunidad de socios.
John Beloes director de gestión de productos para productos de experiencia de desarrollador y se centra en migraciones de paquetes, analizador de código de Salesforce y análisis de aplicaciones de AppExchange. Ha estado en Salesforce durante más de siete años y pasó la mayor parte de este tiempo en el equipo de AppExchange. Comenzó liderando un equipo de evangelistas técnicos de ISV en EMEA y ahora es parte del equipo de gestión de productos de experiencia de desarrollador, siempre con la intención de ayudar a los ISV a tener el mayor éxito posible.
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
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.
…
Innovaciones de MuleSoft para desarrolladores | Aprende Moar Verano '23 | Blog de desarrolladores de Salesforce
¡Únase a nosotros para Release Readiness Live esta semana! Los expertos en productos y los defensores de los desarrolladores analizarán y demostrarán las nuevas funciones en el lanzamiento de Summer '23 y, al final de nuestra transmisión, responderemos sus preguntas. Sintonice a las 9 am PT el 19 de mayo para la sesión de desarrolladores. ¿No puedes unirte a nosotros en vivo? La grabación se publicará unas horas después de que finalice la transmisión.
Introducción
Con la digitalización y la adopción de la nube, estamos cobrando impulso en el espacio de integración. Para acelerar las innovaciones en el mundo digital, veamos qué emocionantes funciones y lanzamientos MuleSoft tiene para ofrecer en Summer '23 a los desarrolladores.
Anypoint Code Builder: nuevas funciones beta en junio de 23
Anypoint Code Builder , o ACB para abreviar, es el IDE de última generación de MuleSoft. Brinda a los usuarios una experiencia de desarrollo moderna y liviana para integraciones, API y automatización, todo empaquetado en una sola herramienta unificada. Los desarrolladores pueden usar ACB en todo el ciclo de vida de API e integración, desde el diseño e implementación de API hasta la creación de integraciones e incluso la depuración, prueba e implementación de aplicaciones MuleSoft.
Debe preguntarse qué tan diferente es de nuestro Anypoint Studio existente. En primer lugar, adoptamos VS Code como nuestra infraestructura de back-end con recomendaciones de tiempo de diseño basadas en IA. Y estamos llevando la reutilización a un nivel completamente nuevo, con capacidades de bloques de construcción que permiten muchos tipos de reutilización en aplicaciones futuras.
Como muchos de ustedes ya sabrán, Anypoint Code Builder lanzó su Open Beta en enero de 2023. Desde entonces, el equipo ha estado trabajando diligentemente para implementar nuevas funciones para sus usuarios de Open Beta, comenzando con un lanzamiento en abril.
¡Estamos encantados de decir que no estamos disminuyendo la velocidad! Tenemos planeado un calendario de lanzamiento de verano emocionante con muchas características nuevas y mejoras para que exploren nuestros usuarios de Open Beta.
Entonces, ¿cuáles son las nuevas funciones que puede esperar en el lanzamiento de verano del 23 de junio?
Soporte extendido al avión de control de la UE
Acceso a fragmentos globales y preempaquetados en la interfaz de usuario de Canvas
Busque conectores en Anypoint Exchange desde la interfaz de usuario de ACB Canvas
La capacidad de diseñar e implementar API de forma iterativa
Se espera que la extensión de escritorio del mercado de VS esté disponible para los desarrolladores en agosto de 2023.
Nuestro lanzamiento de verano es el siguiente paso en nuestro camino hacia GA, que actualmente está planificado para la segunda mitad de 2023.
Anypoint API Experience Hub: GA en junio de 23
Anypoint API Experience Hub permite a las empresas crear portales de API personalizados en minutos utilizando plantillas listas para usar para simplificar el acceso a las API y aumentar su uso y adopción.
Con API Experience Hub, los administradores y desarrolladores de productos API pueden:
Cree y comparta portales de API sencillos utilizando plantillas prediseñadas
Cree portales de API de marca utilizando capacidades avanzadas de creación de portales con tecnología de Salesforce Experience Cloud
Aumente la adopción de API en las comunidades internas y de socios con el consumo de API de autoservicio
Documente, gobierne y publique cualquier API en la empresa creada en cualquier puerta de enlace o entorno
Acceda a información sobre el uso, la calidad y el cumplimiento de las API con análisis contextuales
Los clientes podrán impulsar la adopción de API y crear un ecosistema de API vibrante al proporcionar un único punto de acceso a todas las API empresariales (construidas en MuleSoft o de otro modo) en una experiencia atractiva.
API Experience Hub está planeado para GA en junio de 2023.
Nuevas funciones de gobernanza de API: GA en julio de 2023
En 2022, se lanzó Anypoint API Governance. Nos ayudó a crear API de calidad mientras cumplíamos con los protocolos de seguridad y gobernanza. Actualmente, podemos identificar si la especificación API es conforme o no conforme y alertar a los usuarios si hay algún problema de conformidad.
En Summer '23, ampliaremos aún más las capacidades de API Governance a todos los aspectos del ciclo de vida de la API, desde el diseño de la API en el Centro de diseño hasta la implementación y administración de la API en API Manager. Con un gobierno de extremo a extremo, las organizaciones podrán garantizar que las API cumplan con las normas de cumplimiento y de la industria.
Nuevas funciones de Anypoint Studio 7.15: disponibilidad general en mayo de 2023
Con el fin de optimizar el rendimiento de Anypoint Studio y ofrecer una experiencia de integración perfecta, las siguientes funciones nuevas estarán disponibles para los desarrolladores. Le recomendamos que descargue la última versión de Anypoint Studio y pruebe las nuevas funciones:
Soporte ARM nativo: rendimiento más rápido para usuarios en macOS
Opciones para excluir archivos de Studio de Windows Defender: rendimiento y estabilidad más rápidos para los usuarios de Windows
Implementación mejorada a CloudHub 2.0
Experiencia de importación mejorada desde Design Center
Conclusión
¡Esperamos que esté tan entusiasmado como nosotros con estas funciones! Si desea tenerlos en sus manos, simplemente inicie sesión en la cuenta de prueba gratuita de 30 días de Anypoint Platform y vea estos nuevos lanzamientos y herramientas.
Aprende MOAR
Nuestros gerentes de producto y defensores de desarrolladores están de vuelta para compartir las últimas características y funcionalidades que llegarán en Summer '23. Para ayudarlo a desarrollarse más rápido, hay una gran cantidad de contenido nuevo del equipo de relaciones con desarrolladores que cubre sus nuevas funciones favoritas. ¡Asegúrese de consultar Release Readiness Live el viernes 19 de mayo a las 9:00 a. m. PST, y lea lo último en el blog de desarrolladores de Salesforce para conocer más innovaciones relacionadas con desarrolladores en el lanzamiento de Summer '23!
¡Explore los trailmixes de Trailhead con aspectos destacados de lanzamiento clave para desarrolladores o administradores, o ambos!Siga y complete un trailmix de Learn MOAR Summer '23 para administradores o desarrolladores para obtener una insignia exclusiva de la comunidad.
Otras lecturas
Sobre el Autor
Akshata Sawant es promotora sénior de desarrolladores en Salesforce. Es autora, bloguera y oradora, y coautora del título, MuleSoft for Salesforce Developers . Akshata es un miembro activo de la comunidad de MuleSoft y ex embajador de MuleSoft. Le encanta leer, bailar, viajar y la fotografía, y es una gran entusiasta de la comida. Síguela en Twitter y LinkedIn.
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
Última actualización el 16 de mayo de 2023 por Rakesh Gupta
Gran idea o pregunta duradera:
¿Cómo averiguar todas las funciones de fórmula permitidas en un Flujo?
Objetivos:
Después de leer este blog, podrá:
Descubra todas las funciones de fórmula admitidas en Salesforce Flow
Ejecute SOQL para objetos de la API de herramientas
y mucho más
Isabella Stewart trabaja como administradora de Salesforce en Gurukul On Cloud (GoC). Quiere saber cómo encontrar todas las fórmulas disponibles para Salesforce Flow.
Práctica guiada (nosotros hacemos):
Con la Fórmula, puede crear cualquier cosa, desde ecuaciones matemáticas simples hasta cálculos más complejos y avanzados. En este artículo, aprenderá cómo encontrar todas las funciones de fórmula disponibles que se pueden usar en Salesforce Flow.
Si está buscando una explicación sobre cómo usar la columna de fórmula, consulteeste artículo .
Representa una función utilizada al construir una fórmula, incluidos ejemplos y usos. Este objeto está disponible en la API de herramientas versión 39.0 y posteriores.
CustomFielFormulaFunctionAllowedTyped
Representa las funciones que se admiten en el contexto de la fórmula dada. Este objeto está disponible en la versión API 48.0 y posteriores.
Realice los pasos a continuación para obtener una cobertura de código confiable:
Haga clic en Configuración | Consola de desarrollador .
En el Editor de consultas, ingrese la siguiente consulta SOQL
SELECCIONE Function.Name, Function.Label, Function.Description, Function.ExampleString FROM FormulaFunctionAllowedType where Type='Flow'
Seleccione la casilla de verificación Usar API de herramientas .
Haga clic en Ejecutar .
SELECCIONE Función.Nombre, Función.Etiqueta, Función.Descripción, Función.Cadena de ejemplo
FROM FormulaFunctionAllowedType donde Tipo='Flujo'
Lista de todas las fórmulas disponibles para Salesforce Flow
FórmulaFunción.Nombre
FormulaFunction.Label
FormulaFunction.Descripción
FormulaFunction.ExampleString
1
abdominales
abdominales
Devuelve el valor absoluto de un número, un número sin su signo
ABS (número)
2
ACOS
ACOS
Devuelve el arcocoseno del número en radianes, si el número dado está entre -1 y 1. De lo contrario, NULL.
ACOS(número)
3
AGREGARMESES
AGREGARMESES
Agregue el número de meses a la fecha, usando la última fecha del mes si la fecha es el último día del mes o agregando el número de meses tiene menos días.
AGREGARMESES(fecha,num)
4
Y
Y
Comprueba si todos los argumentos son verdaderos y devuelve VERDADERO si todos los argumentos son verdaderos
Y (lógico1, lógico2,…)
5
ASCII
ASCII
Devuelve el punto de código del primer carácter de la cadena dada como un número.
ASCII(texto)
6
COMO EN
COMO EN
Devuelve el arcoseno del número en radianes, si el número dado está entre -1 y 1. De lo contrario, NULL.
ASIN(número)
7
UN BRONCEADO
UN BRONCEADO
Devuelve el arco tangente del número en radianes.
ATAN(número)
8
ATAN2
ATAN2
Devuelve el arco tangente del cociente de y y x en radianes.
ATAN2(y,x)
9
COMIENZA
COMIENZA
Comprueba si el texto comienza con los caracteres especificados y devuelve VERDADERO si es así. De lo contrario devuelve FALSO
COMIENZA(texto, comparar_texto)
10
VALOR EN BLANCO
VALOR EN BLANCO
Comprueba si la expresión está en blanco y devuelve expresión_sustituta si está en blanco. Si la expresión no está en blanco, devuelve el valor de la expresión original.
VALOR EN BLANCO (expresión, expresión_sustituta)
11
BR
BR
Inserta una etiqueta de interrupción HTML en fórmulas de cadena
BR()
12
CASO
CASO
Compara una expresión con una serie de valores. Si la expresión es igual a cualquier valor, se devuelve el resultado correspondiente. Si no es igual a ninguno de los valores, se devuelve el resultado de otra cosa
Devuelve la fecha y hora que representa el número dado como los segundos transcurridos desde el 1 de enero de 1970.
DESDEUNIXTIME(número)
30
GEOLOCALIZACIÓN
GEOLOCALIZACIÓN
Devuelve una ubicación basada en la latitud y longitud proporcionadas.
GEOLOCALIZACIÓN (latitud, longitud)
31
GETSESIONID
GETSESIONID
Devuelve el ID de la sesión actual. Esto puede ser útil en los hipervínculos a otras aplicaciones que utilizan las credenciales de salesforce.com para la autenticación.
GETSESIONID()
32
HTMLENCODE
HTMLENCODE
Codifica texto y fusiona valores de campo para su uso en HTML
HTMLENCODE(texto)
33
HIPERVÍNCULO
HIPERVÍNCULO
Crea un hipervínculo
HIPERVÍNCULO (url, nombre_amistoso [, destino])
34
SI
SI
Comprueba si una condición es verdadera y devuelve un valor si es VERDADERO y otro valor si es FALSO.
SI (prueba_lógica, valor_si_verdadero, valor_si_falso)
35
INCLUYE
INCLUYE
Determina si cualquier valor seleccionado en un campo de lista de selección múltiple es igual a un literal de texto que especifique.
Devuelve VERDADERO si Texto coincide con la expresión regular RegEx_Text. De lo contrario, devuelve FALSO.
REGEX(Texto, RegEx_Text)
67
CONTRARRESTAR
CONTRARRESTAR
Devuelve la cadena de texto en orden inverso
REVERSO (texto)
68
BIEN
BIEN
Devuelve el número especificado de caracteres desde el final de una cadena de texto
DERECHA(texto, num_chars)
69
REDONDO
REDONDO
Redondea un número a un número específico de dígitos
REDONDO(número,núm_dígitos)
70
RPAD
RPAD
Rellene el lado derecho del valor con espacios o la cadena de relleno opcional para que la longitud sea padded_length
RPAD(texto, padded_length [, pad_string])
71
PECADO
PECADO
Devuelve el seno del número, donde el número dado en radianes
SIN(número)
72
SQRT
SQRT
Devuelve la raíz cuadrada positiva de un número
SQRT(número)
73
SUSTITUTO
SUSTITUTO
Sustituye texto_nuevo por texto_antiguo en una cadena de texto. Use SUSTITUIR cuando desee reemplazar texto específico en una cadena de texto
SUSTITUIR (texto, texto_antiguo, texto_nuevo)
74
BRONCEARSE
BRONCEARSE
Devuelve la tangente del número, donde el número dado en radianes
TAN(número)
75
TEXTO
TEXTO
Convierte un valor en texto usando un formato de visualización estándar
TEXTO(valor)
76
HOY
HOY
Devuelve la fecha actual
HOY()
77
RECORTAR
RECORTAR
Elimina todos los espacios de una cadena de texto excepto los espacios individuales entre palabras
RECORTAR (texto)
78
TRONCO
TRONCO
Trunca un número a un número específico de dígitos
TRUNC(número,núm_dígitos)
79
UNIXTIMESTAMP
UNIXTIMESTAMP
Devuelve la cantidad de segundos desde el 1 de enero de 1970 para la fecha dada, o la cantidad de segundos en el día para una hora.
UNIXTIMESTAMP(fecha/hora)
80
SUPERIOR
SUPERIOR
Convierte todas las letras del valor a mayúsculas
SUPERIOR (texto)
81
CÓDIGOURL
CÓDIGOURL
Codifica texto y valores de campo combinados para su uso en direcciones URL
CÓDIGOURL(texto)
82
URLPARA
URLPARA
Devuelve la URL del destino seleccionado con entradas opcionales expresadas como parámetros de consulta
URLFOR(objetivo, id, [entradas], [sin anular])
83
VALOR
VALOR
Convierte una cadena de texto que representa un número en un número
VALOR(texto)
84
DÍA LABORABLE
DÍA LABORABLE
Devuelve el día de la semana para la fecha dada, usando 1 para el domingo, 2 para el lunes, hasta 7 para el sábado.
DÍA DE LA SEMANA (fecha)
85
AÑO
AÑO
Devuelve el año de una fecha, un número entre 1900 y 9999
AÑO (fecha)
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.
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.
…
Innovaciones de Tableau para desarrolladores | Aprende Moar Verano '23 | Blog de desarrolladores de Salesforce
¡Únase a nosotros para Release Readiness Live esta semana! Los expertos en productos y los defensores de los desarrolladores analizarán y demostrarán las nuevas funciones en el lanzamiento de Summer '23 y, al final de nuestra transmisión, responderemos sus preguntas. Sintonice a las 9 am PT el 19 de mayo para la sesión de desarrolladores. ¿No puedes unirte a nosotros en vivo? La grabación se publicará unas horas después de que finalice la transmisión.
Introducción
Tableau lanzará muchas innovaciones nuevas e interesantes para los desarrolladores en Summer '23, incluido Tableau Embedding Playground, una colección de Postman para la API REST de Tableau y una nueva forma de personalizar y personalizar las vistas integradas en función de los atributos del usuario para las aplicaciones integradas.
Comience con el análisis incorporado
Si conoce Tableau, entonces sabe que puede crear visualizaciones poderosas (visualizaciones, para abreviar) que ayudan a las personas a ver y comprender sus datos. Si está creando una aplicación web, es posible que desee agregar visualizaciones relevantes de Tableau a su aplicación para mejorar la información que ofrece a sus clientes.
Tableau facilita la inserción de visualizaciones al proporcionar un botón Copiarcódigo incrustado , que está disponible al hacer clic en el botón Compartir en la barra de herramientas de Tableau. Puede usar ese código para insertar una visualización de Tableau en una página web.
El código que obtiene del botón Copiarcódigo incrustado es solo un punto de partida. ¿Qué sucede si desea filtrar la visualización en función de quién está viendo la página? Para crear una rica experiencia de análisis integrado para sus usuarios, debe usar Tableau Embedding API v3 . Con la API de inserción, puede aplicar filtros, establecer parámetros, recopilar datos que utiliza para impulsar otras acciones o agregar interfaces personalizadas para interactuar con la visualización.
OK, así que le gustaría ver lo que es posible. Pero si no está familiarizado con la API de incrustación, esto podría significar aprender una nueva biblioteca de JavaScript, leer páginas de material de referencia de la API y otra documentación, y luego configurar un entorno de desarrollo, solo para verificar algunas cosas. Ahora, hay una manera más fácil.
Bienvenido al patio de recreo
Tableau Embedding Playground le facilita el aprendizaje y la exploración de análisis integrados y la API de integración de Tableau. Todo lo que tiene que hacer es proporcionar la URL de la vista de Tableau que desea incrustar, personalizar la visualización, agregar las interacciones que desea probar y luego hacer clic en Ejecutar .
Nota: esta versión de acceso anticipado de Embedding Playground utiliza un libro de trabajo de muestra. Los fragmentos de código que agregan interacciones a la visualización integrada están optimizados para funcionar con esta muestra. Se han completado los nombres de las hojas de trabajo y las variables. Puede usar el Editor de código para editar el código JavaScript. Para esta versión, el panel HTML es de solo lectura, por lo que puede concentrarse por completo en personalizar y agregar interactividad a la visualización en Playground, sin tener que preocuparse por el estilo y el CSS.
El Embedding Playground tiene tres secciones principales:
El panelVista previa , donde puede ver la visualización incrustada y los resultados de su código cambian cuando hace clic en Ejecutar
La vistaCódigo , donde puede ver el código JavaScript y HTML que incrusta la visualización de Tableau.
El panel de control de la izquierda , donde configura la URL para la vista incrustada y sus propiedades de visualización, como el tamaño y la posición de la barra de herramientas, y donde también puede agregar interacciones, que vienen en forma de fragmentos de código que arrastra y suelta en el Panel JavaScript.
Personaliza el código
Embedding Playground usa Tableau Embedding API v3 para insertar la visualización en el panel de vista previa. La API de incrustación utiliza componentes web y proporciona un elemento HTML que representa la visualización de Tableau. Puede colocar este componente web ( <tableau-viz> ) en su página web como lo haría con cualquier elemento HTML, como una etiqueta <div> o <p> . El panel HTML en la vista Código muestra este componente web.
Este código HTML y un enlace a la biblioteca de la API de incrustación son todo lo que necesita para colocar una visualización de Tableau en una página web. Esto es esencialmente lo que obtiene si usa el botón Copiar código incrustado en Tableau Cloud. Pero hay mucho más que puede hacer, y Embedding Playground lo hace fácil.
<dx-code-block title language code-block="
«>
Supongamos que queremos aplicar un filtro a la visualización, de modo que solo muestre información que sea de interés para un conjunto específico de usuarios, o que destaque un punto que está tratando de resaltar (como mostrar ciertos lugares en un mapa, o conjuntos particulares de datos).
Con el componente web <tableau-viz> , tenemos acceso a la vista integrada de Tableau, o lo que llamamos el objeto Tableau viz. Si está familiarizado con Tableau, sabrá que un libro de trabajo de Tableau consta de hojas de trabajo, tableros e historias. O más exactamente, un libro de trabajo contiene un montón de hojas, algunas de las cuales son hojas de trabajo, algunas son tableros y otras son historias. Desde el objeto de visualización, podemos acceder al libro de trabajo y a todas las hojas de trabajo y tableros dentro del libro de trabajo. Para cada tipo de hoja, ciertas propiedades están disponibles y hay API (o métodos) específicos a los que puede llamar.
Usando el Embedding Playground, no tienes que memorizar todo eso. Digamos que su vista incrustada es un tablero. Si desea aplicar un filtro a la vista, simplemente haga clic en Agregar interacciones , haga clic en Tablero , haga clic en Filtros y luego arrastre y suelte la tarjeta Aplicar filtro en el panel de JavaScript, justo debajo de *** ¡Inserte su código a continuación! *** comentario.
En esta versión de acceso anticipado, el fragmento de código Aplicar filtro tiene el siguiente aspecto, con el nombre del filtro y sus valores ya completados. Cuando se publique Embedding Playground, los fragmentos de código tendrán marcadores de posición que se reemplazan con los nombres de filtro y valores para su viz. Tenga en cuenta que el Editor de código está en pleno funcionamiento, por lo que puede modificar los valores (cambiar o agregar diferentes estados). Darle una oportunidad. Haga clic en Ejecutar y vea los resultados.
Ven al Playground para enterarte de las novedades
Los desarrolladores de Tableau están ocupados trabajando en nuevas funciones para mejorar el análisis integrado. A medida que se introduzcan nuevos métodos y propiedades, primero se anunciarán en el Programa para desarrolladores y se resaltarán en el Área de juegos de incrustación. Si es un desarrollador experimentado, Embedding Playground podría ser un útil borrador para probar nuevas ideas y trabajar con nuevas API a medida que se presentan. Con Playground, puede probar rápidamente métodos nuevos y existentes y verificar su código sin la sobrecarga de iniciar un nuevo proyecto.
En versiones futuras de Embedding Playground, podrá proporcionar las URL para sus propias visualizaciones y usar Playground como una aplicación conectada , que ofrece una experiencia de autenticación segura y sin problemas basada en relaciones de confianza y con creación web integrada. Además, agregaremos nuevos fragmentos de código para proporcionar plantillas para las interacciones.
Use el código de Playground para impulsar el desarrollo
Puede usar la barra de menú de botones para descargar o copiar el código. El código descargado o copiado está contenido en un solo archivo HTML. Este archivo contiene el código HTML que define el componente web <tableau-viz> y el código JavaScript que agregó cuando agregó interacciones. Puede utilizar este código como punto de partida para desarrollar sus aplicaciones integradas. O copie el código para su necesidad de interacciones específicas, como filtrar la visualización, establecer parámetros o agregar menús contextuales personalizados. Para obtener más información sobre el uso del código para incrustar, consulte los documentos de Tableau Embedding API v3 .
Si alguna vez usó la API REST de Tableau , sabe que es una parte esencial de la gestión y administración de usuarios y contenido en Tableau Cloud y Tableau Server. Con la API REST de Tableau, puede hacer mediante programación todo lo que puede hacer con la interfaz de usuario en los sitios de Tableau Server y Tableau Cloud. La API utiliza el conocido protocolo de comunicaciones cliente-servidor a través de HTTP, utilizando solicitudes web estándar. Puede consultar y configurar recursos, establecer permisos y controlar el acceso.
Probablemente también sepa que configurar una sesión para enviar esas solicitudes no siempre es fácil. Conectarse al servidor, autenticarse y adquirir los tokens de acceso para comunicarse con Tableau Server o el sitio de Tableau Cloud puede ser algo complicado. Particularmente si solo está interesado en encontrar rápidamente el nombre de una fuente de datos o buscar un identificador de recurso. Una de las herramientas a las que recurren las personas para generar solicitudes HTTP para puntos finales REST es Postman, una aplicación que puede descargar o usar en un navegador que facilita la creación de solicitudes y el almacenamiento de esas solicitudes en colecciones. La buena noticia es que ahora no necesitas empezar de cero.
Los desarrolladores de Tableau han creado una colección de Postman para la API de REST de Tableau que está disponible junto con las otras colecciones para las API de Salesforce en el espacio de trabajo de Postman del desarrollador de Salesforce . Ya no necesita buscar en la documentación de la API ni recurrir a prueba y error para crear sus propias solicitudes. El espacio de trabajo del cartero del desarrollador de Salesforce tiene el conjunto completo de puntos finales de la API REST de Tableau por los que puede navegar y elegir los que necesita usar. Postman te permite definir y guardar las variables que necesitas para tu conexión. También puede usar Postman para generar las solicitudes en diferentes lenguajes de programación como Python, JavaScript y cURL, de modo que pueda incorporar la solicitud en scripts o en sus aplicaciones integradas.
La entrega de información personalizada y personalizada es uno de los principales objetivos cuando se integran visualizaciones de Tableau en aplicaciones web. Desea asegurarse de que los usuarios que usan su aplicación tengan la mejor experiencia posible y tengan acceso a la información que no solo es relevante para sus necesidades, sino que también son datos que pueden ver.
Usted define cuáles son estos atributos de usuario y, según su organización, podrían ser atributos basados en roles de trabajo, departamentos, nivel de gestión, autorización de seguridad, pertenencia a grupos, etc. Estos atributos de usuario siguen el modelo de control de acceso basado en atributos (ABAC), que le brinda flexibilidad en la forma en que diseña sus aplicaciones web. Por ejemplo, podría crear un único portal web que sirva a diferentes grupos proporcionando diferentes vistas de esos datos en función de los atributos. Para ver cómo puede aplicar estos atributos en los libros de trabajo de Tableau, consulte Funciones de usuario: solo para incrustar flujos de trabajo en la nube . Cuando crea vistas en Tableau, los atributos de usuario le dan la opción de agregar filtros de seguridad de nivel de fila a las vistas que incrusta en las aplicaciones web.
Desde usuarios nuevos hasta desarrolladores experimentados, Tableau Embedded Playground facilita que todos desarrollen código para soluciones de análisis integradas. La colección de Postman para la API REST de Tableau puede ahorrarle tiempo y esfuerzo al encapsular el conjunto completo de terminales REST de Tableau en una interfaz fácil de usar y agregar atributos de usuario a sus aplicaciones integradas para brindar una experiencia más personalizada y segura para su usuarios
Únase al programa para desarrolladores de Tableau
Haga que Tableau trabaje para usted. Únase al Programa para desarrolladores de Tableau y descubra las últimas herramientas y funciones. Obtenga acceso a versiones preliminares y acceso anticipado a nuevas API y bibliotecas mientras aún están en desarrollo. Proporcione comentarios y ayude a dar forma a lo que está por venir.
Aprende MOAR
Nuestros gerentes de producto y defensores de desarrolladores están de vuelta para compartir las últimas características y funcionalidades que llegarán en Summer '23. Para ayudarlo a desarrollarse más rápido, hay una gran cantidad de contenido nuevo del equipo de relaciones con desarrolladores que cubre sus nuevas características favoritas. ¡Asegúrese de consultar Release Readiness Live el viernes 19 de mayo a las 9:00 a. m. PST, y lea lo último en el blog de desarrolladores de Salesforce para conocer más innovaciones relacionadas con desarrolladores en el lanzamiento de Summer '23!
¡Explore los trailmixes de Trailhead con aspectos destacados de lanzamiento clave para desarrolladores o administradores, o ambos!Siga y complete un trailmix de Learn MOAR Summer '23 para administradores o desarrolladores para obtener una insignia exclusiva de la comunidad.
Más recursos
Otras lecturas
Sobre el Autor
Dave Hagen trabaja como redactor técnico en el equipo de experiencia de contenido de Salesforce. Escribe documentación para la plataforma de desarrollo de Tableau y el análisis integrado. Puedes encontrarlo en LinkedIn .
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
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.
…
Escriba Apex simplificado y seguro con las actualizaciones de Spring '23 | Blog de desarrolladores de Salesforce
La versión Spring '23 de Salesforce Platform, disponible en general a partir del 13 de febrero, agregó algunas actualizaciones fantásticas al lenguaje de Apex. Hemos implementado algunas de las actualizaciones de Spring '23 en la aplicación de ejemplo Apex-Recipes , lo que ha simplificado significativamente la base de código existente.
En esta publicación de blog, revisaremos las actualizaciones en Spring '23 para Apex con ejemplos de código. Estas actualizaciones ayudan a los desarrolladores a crear aplicaciones más seguras para sus organizaciones.
1. Operaciones de base de datos en modo usuario
Apex, de forma predeterminada, se ejecuta en modo Sistema con permisos elevados, lo que significa que los desarrolladores pueden pasar por alto los controles de seguridad sin darse cuenta al escribir código.
Antes de continuar, revisemos rápidamente los controles de seguridad que los administradores de Salesforce pueden colocar para garantizar que los usuarios solo puedan acceder y manipular los datos para los que están autorizados a ver o editar. Las viñetas a continuación resumen diferentes mecanismos para aplicar un modelo de seguridad detallado para sus datos de Salesforce.
CRUD significa "Crear, Leer, Actualizar y Eliminar", las cuatro operaciones básicas que un usuario puede realizar en un registro en Salesforce
FLS significa "Seguridad de nivel de campo", que determina qué campos dentro de un registro que un usuario puede ver o editar
El uso compartido de registros permite al administrador configurar reglas sobre quién puede ver o editar un registro en función de varios criterios.
Con las operaciones de base de datos en modo usuario , los desarrolladores pueden optar por ejecutar Apex en el contexto del usuario, lo que garantiza que se apliquen las reglas CRUD/FLS y de uso compartido del usuario configuradas. Veamos esto en acción con ejemplos de código detallados.
Aplicar CRUD/FLS y reglas de uso compartido para SOQL estático
Puede indicar el modo de operación usando la palabra clave WITH USER_MODE para el modo de usuario y WITH SYSTEM_MODEpara el modo de sistemaen su consulta SOQL. Vea el ejemplo a continuación.
<dx-code-block title language code-block="List accounts = [SELECT Name, ShippingCity, ShippingStreet FROM Account WITH USER_MODE];»>
En el ejemplo anterior, al usar la palabra clave WITH USER_MODE ,la consulta respeta estas restricciones de seguridad:
Permisos de lectura en el objeto Cuenta (configurado para Perfil/Conjunto de permisos) para el usuario
Permisos de campo (FLS) para Nombre, Calle de envío y Ciudad de envío para el usuario
Configuración de nivel de registro (como valores predeterminados de toda la organización y reglas de colaboración) para el objeto Cuenta para el usuario
El WITH USER_MODEla palabra clave también es compatible conagregar SOQL para hacer cumplir CRUD/FLS y reglas de uso compartido de registros.
<dx-code-block title language code-block="List groupedResults = [SELECT SUM(AMOUNT) total FROM Opportunity WHERE AccountId = :accountId WITH USER_MODE];»>
En el ejemplo anterior, al usar la palabra clave WITH USER_MODE ,la consulta respeta estas restricciones de seguridad:
Permisos de lectura en el objeto Oportunidad para el usuario
Permisos de campo (FLS) para Amount y AccountId (sí, incluso los campos utilizados en la cláusula SOQL WHERE se verifican para FLS) para el usuario
Acceso a nivel de registro (como valores predeterminados de toda la organización y reglas de colaboración) en el objeto Oportunidad para el usuario
Para obtener más ejemplos, consulte la claseSOQLRecipes de la aplicación apex-recipes.
Aplicar CRUD/FLS y reglas de uso compartido para SOQL dinámico
Los nuevos métodos Database (ver documentos ) ahora admiten un parámetro AccessLevel que le permite ejecutar operaciones de base de datos en modo de usuario en lugar de en el modo de sistema predeterminado. Veamos un código de ejemplo para ejecutar un SOQL dinámico en el modo de usuario.
<dx-code-block title language code-block="String query = 'SELECT ID, Name FROM Account LIMIT 1';
List lstAccounts = Database.query(query, AccessLevel.USER_MODE);»>
En el ejemplo anterior, el modo de usuario se aplicará de manera similar al ejemplo de SOQL estático que vimos en la sección anterior.
Para obtener más ejemplos, consulte la claseDynamicSOQLRecipes de apex-recipes. Hemos actualizado todos los métodos de la clase para usar el parámetro AccessLevel .
Hacer cumplir CRUD/FLS y reglas de uso compartido para SOSL
WITH USER_MODE o WITH SYSTEM_MODE también son compatibles con declaraciones SOSL (Lenguaje de búsqueda de objetos de Salesforce).
Veamos un ejemplo de una instrucción SOSL estática.
<dx-code-block title language code-block="String keyword = 'Alaska';
List<List> searchResults = [ FIND :keyword IN Name FIELDS RETURNING Account(Name), Contact(LastName, Account.Name) WITH USER_MODE ];»>
En el ejemplo anterior, al usar la palabra clave WITH USER_MODE, la consulta respeta estas restricciones de seguridad:
Permisos de lectura en los objetos Cuenta y Contacto para el usuario
Permisos de campo (FLS) para el campo Nombre en Cuenta y campo Apellido en Contacto para el usuario
Acceso a nivel de registro (como valores predeterminados de toda la organización y reglas de colaboración) en los objetos Cuenta y Contacto para el usuario
Para Dynamic SOSL, los nuevos métodos Search (ver documentos ) también admiten el parámetro AccessLevel similar a los nuevos métodos Database . A continuación se muestra un ejemplo de cómo usar el parámetro AccessLevel para ejecutar SOSL en el contexto de los usuarios.
<dx-code-block title language code-block="String query = 'FIND 'Edge*' IN ALL FIELDS RETURNING Account(ID,Name), Contact, Lead'; List<List> searchResults = Search.query(query, AccessLevel.USER_MODE);»>
Hacer cumplir CRUD/FLS y reglas de uso compartido para DML
Las operaciones de la base de datos pueden especificar el modo de usuario o sistema utilizando las palabras clave as useroas system .
El siguiente es un código de ejemplo que ejecuta DML en el modo de usuario aplicando CRUD/FLS y reglas de uso compartido.
Para Dynamic DML, los desarrolladores pueden utilizar el parámetro AccessLevel para ejecutar operaciones de base de datos en el modo de usuario o en el modo de sistema.
Echemos un vistazo a un ejemplo de la aplicación apex-recipes para ver cómo puede diseñar métodos para que sean genéricos, de modo que el consumidor del método pueda decidir ejecutar el código en el modo de usuario o de sistema.
El fragmento de código siguiente muestra cómo invocar este método en el modo de usuario.
El siguiente fragmento de código muestra cómo invocar este método en el modo de sistema.
Para obtener más ejemplos, consulte la claseDMLRecipes de la aplicación apex-recipes.
Consideraciones importantes
Las operaciones de la base de datos en modo usuario generan excepciones de seguridad si se encuentra una infracción CRUD/FLS. Si tiene un requisito para evitar excepciones y aún aplicar la seguridad, use el método Security.stripInaccessible() (consulte los documentos ). Consulte la clase StripInaccessibleRecipes (ver documentos ) de la aplicación apex-recipes para ver ejemplos de código.
Si usa la palabra clave WITH SECURITY_ENFORCED en sus declaraciones SOQL para hacer cumplir CRUD/FLS, ahora le recomendamos que use la palabra clave WITH USER_MODE en su lugar debido a las siguientes razones:
La consulta SOQL que usa la palabra clave WITH USER_MODE admite muchas innovaciones nuevas, como reglas de restricción, reglas de alcance y cualquier otra operación de seguridad para el acceso a datos y CRUD/FLS, que la plataforma puede agregar en el futuro, por lo que es una especie de prueba del futuro
La consulta SOQL que usa la palabra clave WITH USER_MODE maneja casos de uso de seguridad complejos mucho mejor. Por ejemplo, WITH USER_MODE es compatible con SOSL y consultas polimórficas .
Las declaraciones SOQL que usan la palabra clave WITH USER_MODE manejan CRUD/FLS para los campos usados en la cláusula where y order by o campos usados en la consulta de relación o búsqueda polimórfica
Las consultas SOQL que utilizan la palabra clave WITH USER_MODE funcionan mucho mejor en comparación con el uso WITH SECURITY_ENFORCED
El modo de usuario anula la configuración de nivel de clase para la consulta SOQL o DML escrita en modo de usuario. Exploremos esto con el siguiente código de ejemplo.
<dx-code-block title language code-block="public without sharing ExampleCls { public static List getAccount() { String query = ‘SELECT Id FROM Account Limit 1’; return Database.query(query, AccessLevel.USER_MODE); } }»>
En el ejemplo anterior, aunque la clase Apex está configurada para ejecutarse en el contexto del sistema (sin la palabra clave compartida), la consulta SOQL se ejecuta en el modo de usuario, lo que refuerza la seguridad. El modo de usuario para la operación (SOQL/SOSL o DML) anula el uso compartido a nivel de clase.
2. Pasar dinámicamente variables de vinculación a consultas SOQL
Spring '23 agregó nuevos métodos como Database.queryWithBinds , Database.getQueryLocatorWithBinds y Database.countQueryWithBinds .
Estos métodos proporcionan los siguientes beneficios:
Anteriormente, si los desarrolladores usaban variables de vinculación en SOQL dinámico (usando el método Database.query ) que están fuera de contexto, la consulta no podía resolver las variables. Con queryWithBinds , las variables de vinculación de la consulta se resuelven directamente desde un parámetro Map con una clave en lugar de variables de código de Apex.
Con Database.queryWithBinds , los ataques de inyección SOQL se evitan automáticamente.
Echemos un vistazo a un ejemplo de código para comprender el segundo punto con más profundidad.
<dx-code-block title language code-block="public static List simpleBindingSoqlQuery(Map bindParams) { String query = ‘SELECT Id, Name ‘ + ‘FROM Account ‘ + ‘WHERE name = :name’; return Database.queryWithBinds( query, bindParams, AccessLevel.USER_MODE );
}»>
El código anterior ejecuta un SOQL dinámico en el modo de usuario. El método acepta un parámetro Map y se puede llamar usando el código a continuación.
<dx-code-block title language code-block="String accountName = 'Codey And Co';
Map nameBind = new Map{‘name’ => accountName};
List accounts = simpleBindingSoqlQuery(nameBind);
System.debug(accounts);»>
Tenga en cuenta que no es necesario que nos aseguremos de que el nombre de la variable esté en el mismo ámbito de método que la consulta dinámica. Además, no es necesario usar el método String.escapeSingleQuotes para el valor en la variable name cuando se usa queryWithBinds .
3. Especifique un retraso en la programación de trabajos en cola
Otra característica importante que lanzamos en Spring '23 es la capacidad de especificar demoras para trabajos programados que se pueden poner en cola.
Puede ser beneficioso ajustar el tiempo antes de que se ejecute el trabajo en cola en los siguientes casos de uso:
Si el sistema externo tiene una velocidad limitada y puede sobrecargarse con trabajos en cola encadenados que realizan llamadas rápidas
Al sondear los resultados, y ejecutar demasiado rápido puede provocar el uso desperdiciado de los límites diarios de Apex asíncrono
Usa el método System.enqueue(queueable, delay) (ver docs ) para especificar retrasos. Los retrasos pueden variar de cero a 10 minutos. Veamos un ejemplo para comprender mejor esta función.
El ejemplo anterior agrega un trabajo para la ejecución asincrónica retrasada al pasar una instancia de la implementación de su clase de la interfazQueueable para la ejecución. Hay un retraso mínimo de cinco minutos antes de que se ejecute el trabajo.
Especificar un retraso predeterminado en toda la organización en la programación de trabajos en cola
Actualmente, si tiene un trabajo en cola de Apex, utiliza el tiempo estándar en cola sin demoras adicionales. Los administradores pueden definir un retraso predeterminado en toda la organización para todos los trabajos en cola que no especifican retraso usando System.enqueue(queueable, delay) . Este es principalmente un mecanismo para manejar trabajos fuera de control que podrían estar ejecutándose demasiado rápido.
Importante consideración
Cuando establece el retraso en 0 (cero), el trabajo en cola se ejecuta lo más rápido posible. Con trabajos en cola encadenados, implemente un mecanismo para ralentizar o detener el trabajo si es necesario. Sin un mecanismo a prueba de fallas de este tipo, puede alcanzar rápidamente el límite de Apex asíncrono diario.
También hay una próxima función Beta en la versión Summer '23 (planificada para estar disponible el 10 de junio de 2023 en todas las organizaciones) que permite a los desarrolladores controlar la profundidad de los trabajos en cola encadenados.
4. Obtenga el SObject de origen de una instancia DescribeFieldResult usando el nuevo método getSObjectType
El método getSObjectType (ver documentos ) en el objeto DescribeFieldResult (ver documentos ) es un método de mejora de la calidad de vida del desarrollador que se implementó en Spring '23.
Anteriormente, los desarrolladores tenían que hackear y escribir código adicional para obtener el objeto de origen de la información del esquema de campos obtenida a través de la descripción del campo. Puede consultar las soluciones anteriores a través de esta publicación de stackexchange .
A continuación se muestra un ejemplo de código de cómo usar el nuevo método getSObjectType .
Con el método getSObjectType , los desarrolladores ya no tienen que pasar el nombre del objeto como una cadena. Consulte un ejemplo más completo en las notas de la versión de Spring '23.
También quiero agradecer a Dang Mai por actualizar el complemento más bonito para Apex (usado para formatear el código Apex automáticamente) para admitir todas las palabras clave introducidas para las operaciones de la base de datos en modo usuario.
Conclusión
En conclusión, la versión Spring '23 de Salesforce incluye varias actualizaciones. Mediante el uso de estas nuevas funciones, los desarrolladores pueden crear aplicaciones más eficaces y seguras para sus organizaciones.
Los equipos de productos de Apex no se detienen ahí y hay más innovaciones en la hoja de ruta. Puede obtener una vista previa de lo que viene para Apex en Summer '23 (nuestro próximo lanzamiento) en la vista previa de las notas de la versión . También recomiendo ver la grabación de la sesión TrailblazerDX '23, Apex: What's New and What's Coming , para aprender más sobre lo que se está cocinando.
Referencias adicionales
Sobre el Autor
Mohith Shrivastava es promotor de desarrollo en Salesforce con una década de experiencia en la creación de productos a escala empresarial en la plataforma de Salesforce. Actualmente se está enfocando en las herramientas para desarrolladores de Salesforce, Flow, Apex y Lightning Web Components en Salesforce. Mohith se encuentra actualmente entre los principales contribuyentes en Salesforce Stack Exchange, un foro de desarrolladores donde los desarrolladores de Salesforce pueden hacer preguntas y compartir conocimientos. Puedes seguirlo a través de su Twitter @msrivastav13 .
Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.
Última actualización el 12 de mayo de 2023 por Rakesh Gupta
Gran idea o pregunta duradera:
¿Cómo calcular la cobertura general del código en Salesforce?
Objetivos:
Después de leer este blog, podrá:
Compilar todas las clases de prueba
Calcule la cobertura de código de su organización
Use SOQL a través de la API de herramientas para calcular la cobertura del código
y mucho más
Isabella Stewart trabaja como administradora de Salesforce en Gurukul On Cloud (GoC). GoC está trabajando con un proveedor externo para implementar Field Service Lightning para mejorar la experiencia del cliente. Isabella recibió una tarea de su gerente para calcular la cobertura de código en PROD.
Práctica guiada (nosotros hacemos):
La cobertura de código es una técnica de prueba que determina qué código se está probando y qué no se está probando. A menudo se representa como un porcentaje de la cantidad de líneas de código probadas para una clase o desencadenador de Apex.
Realice los pasos a continuación para obtener una cobertura de código confiable:
Paso 1: compilar todas las clases de prueba
Vaya aConfiguración | Código personalizado | Ejecución de pruebas de Apex .
Desmarque Cobertura de código agregado de solo tienda .
Luego, borre el historial de pruebas navegando a Ver historial de pruebas | Borrar datos de prueba.
El último paso es compilar todas las clases de prueba. Al navegar a Configuración | Código personalizado | Clases de Apex .
Paso 2: verifique la cobertura general del código
Una vez que se completen las pruebas unitarias de Apex, verifique la cobertura general del código para su organización siguiendo las instrucciones a continuación:
Vaya a Configuración | Código personalizado | Clases de Apex .
Haga clic en Estimar la cobertura de código de su organización .
También puede ejecutar la siguiente consulta para averiguar la cobertura de toda la organización. Si consulta desde Developer Console Query Editor, asegúrese de seleccionar Use Tooling API .
ApexOrgWideCoverage representa los resultados de las pruebas de cobertura de código para toda una organización.
SELECCIONE Porcentaje cubierto DESDE ApexOrgWideCoverage
El siguiente ejemplo de consulta SOQL recupera resultados de cobertura de código para una clase o activador específico:
SELECCIONE TestMethodName, NumLinesCovered, NumLinesUncovered FROM ApexCodeCoverage DONDE ApexClassOrTrigger.Name='AccountTrigger'
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.
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.
…
Una actualización importante de nuestro plan de jubilación Legacy API | Blog de desarrolladores de Salesforce
En 2021, anunciamos unplanpara retirar las versiones heredadas de la API de la plataforma anualmente, de modo que nuestros equipos de ingeniería pudieran centrar sus esfuerzos de desarrollo en mejorar las últimas versiones de la API para mejorar la experiencia general de Salesforce al crear funciones personalizadas a través de aplicaciones. En esta publicación, compartiremos una actualización importante del plan de retiro de la API heredada, algunos consejos sobre cómo identificar el uso de la API heredada y cómo actualizar esas solicitudes de API.
Actualización importante del plan de jubilación de la API heredada
La última fase del plan de retiro de la API heredada seanunció a principios de 2022y entró en vigencia durante el lanzamiento de Summer '22. Con esta versión, dejamos de usar las versiones SOAP, REST y Bulk API que van de la 21.0 a la 30.0. Como parte de nuestro plan original, estas versiones de API ya no serían compatibles, pero permanecerían disponibles hasta que las retiremos en la versión Summer '23.
Luego de consultar con la comunidad y nuestros socios, decidimos retrasar el próximo retiro de la API al lanzamiento de Summer '25 para garantizar una transición sin problemas (consulte elartículo de conocimientos). Debido a esta extensión, las versiones de API 21.0 a 30.0 aún no son compatibles, pero seguirán estando disponibles hasta el lanzamiento de Summer '25.
Desde Summer '21 , cada vez que realiza una llamada a una API heredada con REST o Bulk API, verá un encabezado Warning en la respuesta con un mensaje que describe el problema como este:
Una vez que las versiones heredadas de la API se retiren en Summer '25, las solicitudes a esas versiones fallarán con los siguientes errores:
La API REST devolverá el estado HTTP 410: GONE
La API SOAP devolverá el estado HTTP 500: UNSUPPORTED_API_VERSION
La API masiva devolverá el estado HTTP 400: InvalidVersion
Ahora que conoce el último plan, veamos cómo puede identificar si se ve afectado y cómo.
Identificar el uso de la API heredada
Puede verificar las llamadas API heredadas usted mismo en cualquier momento, y hay varias formas de hacerlo.
Todas las transacciones de la API de Salesforce se registran en los registros de Monitoreo de eventos. El monitoreo de eventos normalmente requiere una licencia específica, pero hemos expuesto el evento Uso total de la API ( ApiTotalUsage ) a todos los clientes de forma gratuita, para que pueda monitorear el consumo de la API heredada e identificar los clientes y las integraciones que deben actualizarse. Las organizaciones habilitadas para API tienen acceso gratuito a los archivos de registro de eventos de uso total de API con retención de datos de 1 día. Con el Monitoreo de eventos habilitado, puede acceder a este y a todos los demás tipos de archivos de registro de eventos con una retención de datos de 30 días.
Los registros contienen campos clave que guían sus investigaciones:
Los clientes proporcionan CLIENT_NAME opcionalmente, pero es especialmente útil para identificar aplicaciones e integraciones que realizan llamadas API que requieren investigación y ajustes. Compartiremos más sobre este campo en la última sección de esta publicación.
CONNECTED_APP_ID le dice qué aplicación conectada está en el origen de las llamadas a la API.
USER_ID y CLIENT_IP son útiles para identificar el origen de las llamadas API heredadas, pero existe la posibilidad de que estos valores se compartan entre varias aplicaciones en caso de que se realice una cuenta técnica de usuario/sistema (ID de usuario compartido) o llamadas desde una ubicación de oficina física ( dirección IP compartida). Compartiremos cómo usar la nueva licencia de usuario de integración para abordar los problemas de usuarios compartidos en la última sección de esta publicación.
Los campos API_FAMILY , API_VERSION , API_RESOURCE , URI y HTTP_METHOD le brindan pistas valiosas sobre el tipo de operaciones que realizan los clientes API.
Compartimos varias herramientas para acceder a los registros en nuestra publicación anterior , y también puede usar herramientas de terceros para automatizar esta tarea. Compartiremos una opción adicional que puede ser relevante para los usuarios preocupados por ejecutar código de terceros con acceso API a su organización.
Uso de Postman para identificar el uso de la API heredada
Enumere los archivos de registro que rastrean el acceso a la API:
Seleccione REST > Solicitud de consulta .
Reemplace el valor del parámetro de consulta q con la siguiente consulta SOQL: SELECT LogFile, EventType, CreatedDate FROM EventLogFile WHERE EventType IN ('API', 'RestApi', 'BulkApi', 'ApiTotalUsage')
Haz clic en Enviar.
Recupere los ID del archivo de registro de la respuesta.
Para cada archivo de registro devuelto en el paso anterior, recupere y escanee el contenido del registro:
Seleccione REST > Registros > Obtener solicitud de archivo de registro de eventos .
Establezca el ID del archivo de registro en el valor de la variable de ruta id .
Haz clic en Enviar.
Lea el contenido del archivo de registro en la respuesta. Puede moverse a la pestaña Respuesta sin procesar y guardarla como un archivo CSV o usar la pestaña Visualizar para obtener una vista previa del contenido directamente en Postman.
Mire la columna URI o API_VERSION y verifique las versiones de API heredadas (versiones 30.0 y anteriores).
Después de identificar que está llamando a versiones de API heredadas, el siguiente paso es actualizar estas dependencias a versiones de API heredadas.
Actualizar dependencias a versiones de API heredadas
El procedimiento de actualización depende del tipo de API que esté utilizando, pero aquí hay una breve descripción general de lo que se requiere:
Para llamadas API basadas en SOAP, genere un nuevo WSDL e incorpórelo a la integración afectada
Para puntos finales REST, actualice el número de versión en el URI a la versión principal actual
Aunque puede actualizar de manera similar los URI para puntos finales /async en el caso de Bulk API, la forma más gratificante de actualizar las llamadas heredadas es adoptar Bulk API 2.0 y disfrutar del flujo de trabajo más simple y los límites mejorados.
Tenga en cuenta que las aplicaciones (p. ej., el cargador de datos) y los paquetes también pueden estar realizando llamadas API heredadas debido a bibliotecas obsoletas (conectores de servicios web, kit de herramientas AJAX, interfaz COM SForceOfficeToolkit o kit de herramientas Force.com para PHP, solo por nombrar algunos) . Asegúrate de actualizarlos también.
Y recuerda: no importa el cambio, asegúrate de realizar pruebas de regresión para asegurarte de que todo funciona como se esperaba.
Preparándonos para el futuro
Ya sea que se haya visto afectado por el plan de jubilación heredado o no, debe planificar el futuro retiro de la versión API. Le dejaremos algunas prácticas recomendadas para el gobierno de API.
Aproveche las licencias de usuario de la integración de Salesforce
En Spring '23, presentamos un nuevo tipo de licencia dedicado a las integraciones: lalicencia de usuario de Integración de Salesforce. Esta nueva licencia se basa en el principio de acceso con privilegios mínimos y le permite crear usuarios solo de API para integraciones de sistema a sistema con derechos de acceso específicos. La principal ventaja de este nuevo tipo de licencia es la seguridad, pero también permite un mejor seguimiento de las acciones de integración, ya que podrá asignar distintos usuarios solo de API a la integración y relacionar las llamadas de API de integración con ID de usuario específicas en sus registros.
Se incluyen cinco licencias de usuario de Integración de Salesforce en cada organización Enterprise, Unlimited y Performance Edition. También puede comunicarse con su ejecutivo de cuenta si necesita más.
Especifique un nombre de cliente al crear integraciones de API REST
Al crear nuevas integraciones con la API REST, asegúrese de especificar un nombre de cliente utilizando el encabezado de solicitudSforce-Call-Options de la siguiente manera:
Sforce-Call-Options: client=myClientName
El nombre del cliente que especifique en el encabezado estará visible en los registros en el campo CLIENT_NAME . Esto le ayuda a depurar y auditar las llamadas a la API de integración.
palabras de cierre
Esperamos que este retraso adicional en nuestro plan de retiro de API heredado permita una transición sin problemas, y lo alentamos a que comience hoy, independientemente de la nueva fecha límite. Migrar a versiones de API más nuevas siempre es una apuesta segura para obtener acceso a nuevas capacidades y mejorar el rendimiento y la seguridad.
Sobre el Autor
Philippe Oziles 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@PhilippeOzilo 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.
Marcas de lujo como Gucci y Balmain están liderando la industria minorista en el uso de tecnología como tokens no fungibles (NFT) y Web3 para conectarse con los clientes y ofrecer nuevas experiencias. La creación de experiencias exclusivas y la adopción de la necesidad de autoexpresión digital de los consumidores más jóvenes son tendencias minoristas de lujo que están dando forma a cómo la industria minorista más grande en general puede interactuar mejor con los clientes.
Hoy en día, la moda de lujo tiene menos que ver con el estatus y más una forma de autoexpresión. Gen Z y Millennials exigen formas más creativas de conectarse con sus marcas favoritas. Estos clientes favorecen la co-creación y la colaboración sobre el simple consumo. También son compradores conscientes que favorecen una mayor calidad y sostenibilidad, lo que influye en las marcas de lujo para que adopten el mundo de la reventa.
¿Nuevo en Web3?
Las tecnologías Web3, como blockchain, tokens y el metaverso, pueden ayudar a las empresas a profundizar las relaciones con los clientes. Vea cómo estas tecnologías pueden mejorar la lealtad del cliente y ayudarlo a lanzar líneas de productos digitales.
La adopción de tecnología como Web3 impulsa muchas de estas tendencias minoristas de lujo, pero no necesita ser una marca de alto nivel para crear este tipo de experiencia para sus clientes.
Nuevas formas de autoexpresión e identidad.
Todos tenemos una identidad digital. Su perfil de Linkedin, Instagram o Twitter son todas formas de identidad y canales para la autoexpresión.
Recientemente, hemos visto plataformas como Discord, Telegram y Roblox ganar popularidad. Y a medida que surjan más plataformas con Web3, las identidades digitales evolucionarán y la forma en que nos expresamos en ellas también lo hará.
En un informe reciente de Roblox Metaverse Fashion Trends , el 47% de los encuestados dijeron que usan la moda digital para expresar su individualidad. Y el 45% dijo que sus avatares representaban un personaje de fantasía. No es de extrañar que muchas marcas de lujo como Burberry, Gucci y Louis Vuitton estén experimentando.
A medida que las marcas exploran estas nuevas plataformas, es importante considerar la estrategia: mantenerse fiel a los valores fundamentales de su marca y cómo desea que sus clientes "vivan la marca".
“Los productos digitales desafían la cadena de valor del producto tradicional: desde el diseño hasta la producción, la distribución y el compromiso”, dijo Laura Puricelli, asesora de moda de lujo del metaverso. “Los activos digitales pueden ser infinitamente creativos, sin límites físicos en términos de materiales”.
Los modelos comerciales que se aplicaron a los productos físicos no siempre se traducirán en activos digitales. Es importante que las marcas consideren estos nuevos canales de compromiso y cómo las personas quieren expresarse allí.
Obtenga artículos seleccionados solo para usted, en su bandeja de entrada
Uso de Web3 y NFT para conectarse con clientes más jóvenes
Las marcas de lujo se enfocan en brindar experiencias memorables, compromiso personalizado y membresía para la lealtad a la marca. Esto es también en lo que las generaciones más jóvenes ponen más énfasis. Siguiendo el ejemplo de las tendencias minoristas de lujo, las marcas se están enfocando más en estas experiencias únicas, y menos en los programas de puntos, para ganar la lealtad de los consumidores más jóvenes.
Entonces, ¿qué papel juegan Web3 y NFT? En los últimos años, las empresas han utilizado proyectos de metaversos , realidad virtual y NFT para crear las experiencias de cliente seleccionadas que desean los compradores más jóvenes. A través de proyectos NFT, las marcas crearon comunidades con beneficios exclusivos y acceso temprano a productos y servicios. Las marcas encontraron nuevos medios de participación: la 'utilidad' de un token.
Por ejemplo, la marca de ropa Scotch & Soda lanzó 1000 NFT como parte de su iniciativa piloto Club Soda 3.0 , un tipo de programa de fidelización. Los poseedores de tokens reciben acceso exclusivo a eventos especiales y acceso anticipado a productos. El programa ayudó a atraer a una audiencia compuesta por un 30 % de nuevos clientes y 2000 identificaciones de billetera.
Para hacer esto, comenzaron a promocionar Club Soda 3.0 a través de sus canales de medios tradicionales y luego lanzaron un sitio de preventa. Los clientes que se registraron obtuvieron acceso a un canal de Discord, lo que reunió a estos defensores de la marca en una comunidad en línea.
El rumor funcionó, ya que acuñaron los 1,000 NFT de Founders Pass en el primer día. También ayudó a incorporar a sus consumidores que quizás no conocían antes las tecnologías Web3. Ahora han construido relaciones más profundas con sus clientes, quienes ahora son parte de una comunidad exclusiva.
Del mismo modo, marcas como Gucci, Moncler y Balmain han lanzado colecciones NFT que otorgan acceso exclusivo a un producto o evento físico.
Algunas marcas de lujo también ven esto como una puerta de entrada para atraer nuevos clientes a un precio más bajo. Otros tienen como objetivo crear valor para los poseedores de fichas a través de la creación conjunta y la colaboración. A medida que estas empresas continúan experimentando, estamos viendo cómo evolucionan casos de uso y experiencias más emocionantes.
Potenciando la co-creación y la colaboración
Los activos digitales y la prueba de propiedad han provocado un incendio en la economía de los creadores. Artistas, diseñadores e influencers han encontrado nuevas formas de ser recompensados, captando nuevas audiencias en nuevas plataformas.
Las marcas de lujo han utilizado esta tendencia para mostrar el talento a través de la cocreación y la colaboración. Marcas como Porsche, Salvatore Ferragamo y Nike están co-creando con sus clientes y creativos. A través de NFT, han lanzado colecciones creadas conjuntamente de obras de arte digitales y productos físicos.
Al aprovechar las tendencias minoristas de lujo de co-crear con creativos digitales y clientes, las empresas pueden lanzar productos más rápido. Las marcas también pueden capitalizar una tendencia más rápido de esta manera. Gucci x Superplastic y Balmain x Barbie son solo dos ejemplos. Esta colaboración no solo genera una mayor conciencia de marca, sino que las empresas pueden probar el éxito de una colaboración en pequeños lotes antes de lanzar una colección completa.
También puede usar la creación conjunta para mejorar sus conexiones con un segmento específico, definido por la propiedad de NFT.
Por ejemplo, Tiffany & Co. se dirigió a los titulares de Cryptopunk NFT con su colección NFTiff . La colección resultó en $ 12,5 millones de ingresos y se agotó en 20 minutos . Los titulares de Cryptopunk NFT obtuvieron acceso exclusivo para comprar un NFTiff, canjeable por un colgante personalizado de su avatar Cryptopunk.
Siguiendo el ejemplo de las tendencias minoristas de lujo, las marcas se están enfocando más en estas experiencias únicas, y menos en los programas de puntos, para ganar la lealtad de los consumidores más jóvenes.
Blockchain puede ayudar a autenticar productos de reventa
Se espera que los mercados globales de reventa de artículos de lujo superen los 51.000 millones de dólares para 2026, lo que significa que las marcas deben encontrar una manera de autenticar sus productos. Y a medida que los consumidores se vuelven más conscientes a la hora de tomar decisiones de compra, aumenta la demanda de trazabilidad de los insumos.
Blockchain ofrece una solución potencial. La tecnología permite un libro mayor inmutable, una forma a prueba de manipulaciones para registrar transacciones. Esto permite la trazabilidad de la propiedad y cuenta la historia de un producto. Podemos rastrear los orígenes de un producto, a través de la cadena de suministro y la propiedad, y garantizar la autenticidad.
Marcas como el relojero de lujo suizo Vacheron Constantin (relojero de lujo suizo) han utilizado la tecnología blockchain para certificar digitalmente la propiedad, lo que permite a los propietarios verificar el historial de propiedad e incluso asegurarlo.
Las regalías se pueden codificar en un certificado digital, de modo que, tras la transferencia, una parte de la transferencia vuelva a la marca.
A medida que los consumidores se vuelven más conscientes y crece el mercado de reventa, las regalías son una forma para que las marcas sigan obteniendo ingresos por sus productos y servicios.
Lo que puede aprender de las tendencias minoristas de lujo
Hemos visto cómo las empresas han utilizado nuevas estrategias para construir en Web3. Las marcas se están alejando de la comunicación unidireccional hacia la construcción de una comunidad para involucrar a los clientes.
Al liderar con la creación de valor y la creación conjunta, las marcas pueden crear lealtad y satisfacer las demandas de los consumidores más jóvenes.
Para los minoristas que están considerando estas tendencias y una estrategia Web3, les recomendamos:
Considere el valor, la utilidad y el beneficio que está brindando a su cliente y diseñe teniendo en cuenta los valores fundamentales de su empresa.
Considere la visión a largo plazo y el plan de participación. Considere una estrategia Web3 como una extensión de la experiencia del cliente y la estrategia de marketing.
Sigue experimentando. Todos los días aparecen nuevos casos de uso e innovaciones. Las marcas que entienden el espacio tendrán una ventaja al interactuar con sus clientes.
Comience a construir la lealtad del cliente hoy
Descubra cómo puede lanzar su marca a nuevos mundos digitales. Cuando su estrategia Web3 se basa en tecnología segura y sostenible, puede profundizar la lealtad del cliente y unir las experiencias digitales y físicas.
Administrar sus proyectos dentro de Salesforce garantiza que todos sus datos clave estén disponibles en un solo lugar, con todos los que necesitan la capacidad de acceder a ellos ya en la plataforma y familiarizados con la interfaz de usuario. Además, no es necesario que cree ni mantenga la integración con herramientas de gestión de proyectos externas de terceros. Sin embargo, si está buscando mejorar aún más su juego de gestión de proyectos en Salesforce, la mejor manera de hacerlo sería a través de la automatización. Este artículo lo guiará a través de las mejores formas de automatizar la gestión de proyectos en Salesforce.
La automatización ayuda a su organización a crear valor a través de una reducción del tiempo dedicado a realizar tareas, una reducción del riesgo relacionado con el error humano y la creación de una experiencia optimizada para sus usuarios y clientes.
Las posibilidades son infinitas cuando se utilizan herramientas de automatización de Salesforce listas para usar, como Salesforce Flow, y las aplicaciones de gestión de proyectos de Salesforce adecuadas, como Inspire Planner.
Ejemplos de cómo puede automatizar la gestión de proyectos en Salesforce
Tabla de contenido
Una vez que haya decidido automatizar la gestión de proyectos en Salesforce, la pregunta es ¿Qué automatizamos ?
A continuación se enumeran varios escenarios de automatización de la gestión de proyectos que han demostrado ahorrar tiempo y recursos a las empresas. Estos pueden darle ideas sobre lo que desea automatizar en su organización de Salesforce.
Lanzar proyectos automáticamente con un flujo de Salesforce
Es un escenario común que las empresas necesitan lanzar proyectos a partir de plantillas específicas cuando las Oportunidades pasan a la etapa Cerrado/Ganado. Hacer esto manualmente para cada oportunidad requiere una cantidad considerable de tiempo y esfuerzo. Además, también deja espacio para el error humano o para que alguien simplemente olvide o retrase un paso.
Con Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce, puede crear un flujo de Salesforce desencadenado por registro para crear automáticamente un proyecto a partir de una plantilla específica en función de diferentes criterios (por ejemplo, la etapa de oportunidad se actualiza a Cerrado/Ganado).
Este nuevo proyecto heredará de la plantilla todas sus fases y tareas, predecesores, archivos adjuntos, roles de recursos y más.
Entonces, para comenzar, su gerente de proyecto simplemente necesita actualizar la fecha de inicio de su primera tarea y asignar el equipo del proyecto (¡ambos también se pueden automatizar!).
Se puede configurar una automatización similar de Salesforce Flow para lanzar proyectos desde otras etapas de Oportunidades o para otros objetos en Salesforce, como Casos, Cuentas, Pedidos y más.
Automatice la gestión de proyectos en Salesforce con plantillas de proyectos
Si su organización entrega proyectos que siguen procesos estandarizados, puede Automatice la gestión de proyectos en Salesforce configurando plantillas de proyectos y usándolas cada vez que desee configurar un nuevo proyecto en lugar de crearlos desde cero.
Configurar plantillas de proyecto puede ser un proceso simple con la herramienta adecuada. Por ejemplo, en Inspire Planner simplemente debe marcar la casilla de verificación 'Es plantilla' al crear un nuevo proyecto para hacer una Plantilla de proyecto. Y puede crear un número ilimitado de plantillas para diferentes procesos dentro de su organización.
Las plantillas de proyecto permitirán que su software de administración de proyectos de Salesforce haga parte del trabajo más insignificante por usted, permitiéndole a usted y a su equipo concentrar sus esfuerzos en brindar un servicio de alta calidad a sus clientes.
Con Inspire Planner, sus proyectos heredarán la mayor parte de la información requerida de la plantilla, incluidas las tareas, los archivos adjuntos, la duración de las tareas, las fechas de inicio y finalización, los predecesores, los recursos asignados, la prioridad, el esfuerzo planificado, el costo presupuestado, las categorías, las notas y el diseño del proyecto. y Configuración, y más.
Automatice la gestión de proyectos en Salesforce con la asignación de tareas basada en roles
Asignar automáticamente las tareas de su proyecto a los recursos correctos es una manera fácil de automatizar la gestión de proyectos en Salesforce.
Dependiendo de la cantidad de tareas en sus proyectos, esto podría sumar una cantidad significativa del tiempo de sus gerentes de proyecto si se hace manualmente, y eso suponiendo que lo hagan bien cada vez. Si hay una herramienta a su disposición que alivia esta carga de sus gerentes de proyecto y les permite concentrarse en un trabajo más importante, ¿por qué no ponerla en práctica?
Afortunadamente, esto también es algo que Inspire Planner ofrece listo para usar. Puede predefinir qué roles serán responsables de cada tarea mientras crea sus plantillas o planes de proyecto.
Luego, simplemente necesita asignar un recurso a un rol específico, y la automatización integrada de Inspire Planner asignará inmediatamente todas las tareas de su proyecto a los miembros correctos del equipo del proyecto.
Costura de plantilla
Lanzar proyectos automáticamente desde Oportunidades basadas en plantillas es una excelente manera de automatizar la gestión de proyectos en Salesforce. Pero, ¿qué sucede cuando vendió varios productos dentro de su Oportunidad y cada producto requiere un conjunto diferente de tareas?
¿Puede automatizar dicho proceso en Salesforce dentro de un plan de proyecto en lugar de crear proyectos separados?
La buena noticia es que la respuesta es sí. Inspire Planner ofrece la funcionalidad de unión de plantillas de proyectos que le permite crear un solo proyecto a partir de una oportunidad al "unir" (combinar) diferentes plantillas relacionadas con los productos de oportunidad.
Además, puede definir una plantilla de encabezado (un conjunto de tareas que deben realizarse sin importar qué productos se seleccionaron, por ejemplo, la fase de inicio del proyecto) y definir un orden de ejecución de sus plantillas simplemente arrastrándolas a las posiciones deseadas.
Y con la configuración adicional de Salesforce, puede configurar la unión de plantillas de proyectos en Inspire Planner para trabajar con otros objetos en Salesforce en lugar de productos.
Automatice la programación de su proyecto con dependencias de tareas
Puede automatizar la Gestión de proyectos en Salesforce configurando Dependencias de tareas en el diagrama de Gantt de su proyecto. De esta manera, su proyecto y todas las tareas operarían como una unidad cohesiva en lugar de que cada tarea esté separada. Por lo tanto, actualizar cualquier tarea recalculará automáticamente todo el cronograma del proyecto, ¡sin importar cuán complejo sea su proyecto!
Inspire Planner es compatible con cuatro tipos principales de predecesores (finalización a inicio, finalización a finalización, inicio a inicio y inicio a finalización), así como múltiples dependencias de tareas. Si no está familiarizado con estos términos, un predecesor es una actividad que debe comenzar o finalizar antes de que pueda continuar una tarea sucesora, y un sucesor es una actividad que sigue a otra actividad en función de su dependencia entre sí y no necesariamente en orden cronológico. .
Además de eso, con Inspire Planner también puede agregar tiempo de adelanto o retraso a sus dependencias (por ejemplo, la tarea debe comenzar 3 días después de que finalice otra, o un día antes, etc.), e incluso funciones más avanzadas como la gestión de restricciones ( por ejemplo, una tarea debe terminar en una fecha determinada).
Una vez configuradas, los usuarios finales también pueden ver estas tareas predecesoras y sucesoras en un componente simplificado en la página de tareas. De modo que incluso si los miembros de su equipo no tienen acceso al proyecto o no están familiarizados con los diagramas de Gantt, aún pueden comprender fácilmente qué depende de ellos en este proyecto.
Automatización de Notificaciones
Otro elemento importante de la automatización de la gestión de proyectos en Salesforce son las notificaciones.
Si desea entregar sus proyectos a tiempo, deberá mantener a su equipo de proyecto actualizado sobre los próximos plazos e hitos. Para empezar, puede configurar alertas y notificaciones automáticas para las tareas del proyecto a través de Salesforce. Esto enviará a los recursos de su proyecto recordatorios por correo electrónico sobre sus tareas y también mostrará un recordatorio de notificación en Salesforce.
Por ejemplo, puede configurar notificaciones de tareas unos días antes de la fecha de vencimiento de la tarea, cuando se actualizaron las fechas de inicio/finalización de la tarea, una notificación de alerta cuando la tarea está vencida y más. Dado que Inspire Planner se integra completamente con las tareas estándar de Salesforce, algunas de estas notificaciones estarán disponibles para usted desde el primer momento.
Finalmente, puede configurar alertas en Inspire Planner para acciones como Tareas listas para comenzar. Cuando se han completado todos los predecesores, Inspire Planner marca automáticamente sus tareas como "Listo para comenzar". A continuación, puede enviar alertas a las personas asignadas a esta tarea o utilizar una vista de lista que muestre solo dichas tareas. De esta manera, su equipo de proyecto sabrá fácilmente en qué debe concentrarse a continuación.
Automatización de KPIs y Reportes
La siguiente idea para automatizar la gestión de proyectos en Salesforce es automatizar los KPI y programar la entrega de sus informes de proyectos.
Puede decidir administrar los KPI manualmente en función del estado actual de sus proyectos o automatizarlos si tiene criterios estandarizados para los KPI internamente. En cualquier caso, puedes configurar alertas para tus jefes de proyecto cuando alguno de los KPIs del proyecto pase de Verde a Ámbar o Rojo.
Al utilizar las aplicaciones de gestión de proyectos nativas de Salesforce, su equipo puede beneficiarse de los potentes informes y paneles de Salesforce. Por ejemplo, Inspire Planner ofrece una carpeta completa lista para usar con informes de proyectos, la capacidad de generar su informe de estado del proyecto con unos pocos clics y también dos paneles dinámicos para su cartera y administradores de recursos.
Salesforce luego le permite programar y suscribirse a los informes de su proyecto. De esta manera, su equipo puede recibir notificaciones sobre las métricas más importantes del proyecto sin ejecutar manualmente ni enviar informes por correo electrónico.
Una de las mejores prácticas para generar informes sobre sus proyectos es crear líneas base del proyecto en Inspire Planner. La línea de base se puede utilizar para generar informes sobre el cronograma del proyecto planificado y el rendimiento real de su proyecto. La línea de base también se puede usar para rastrear y enviar notificaciones cuando hay retrasos en el proyecto y cuando las tareas vencen. Estas notificaciones pueden llamar la atención sobre áreas del Proyecto que necesitan más atención, lo que resultará en una reducción de los retrasos.
Automatice la gestión de proyectos en Salesforce con procesos de aprobación
Los procesos de aprobación pueden ayudarlo a automatizar la gestión de proyectos en Salesforce cuando necesite obtener una aprobación para algo en su organización.
Los ejemplos típicos de procesos de aprobación en la gestión de proyectos incluyen empleados que solicitan PTO de sus gerentes, gerentes de proyecto que obtienen aprobación para cambios dentro del alcance del proyecto, aprobación de facturas y más.
Con los procesos de aprobación de Salesforce, puede definir fácilmente sus pasos de aprobación, bloquear registros, permitir la recuperación de solicitudes de aprobación, definir un aprobador, crear plantillas de notificación y más.
Para iniciar procesos de aprobación en sus proyectos en Salesforce, puede usar botones personalizados (p. ej., "Enviar para aprobación") en los que los usuarios deben hacer clic o iniciar procesos de aprobación automáticamente con un Flujo de Salesforce.
Automatizar carteras de proyectos
Las carteras de proyectos le permiten agrupar y ver un conjunto de proyectos en un único diagrama de Gantt combinado. Con Inspire Planner, puede crear un número ilimitado de Portafolios para diversas necesidades, por ejemplo, un portafolio de sus proyectos, un portafolio de proyectos para un cliente específico, etc.
Los portafolios pueden mostrar el cronograma general del proyecto, el estado general del proyecto, el porcentaje completado, los hitos del proyecto y más. Además, un proyecto puede pertenecer a varias carteras.
Con Inspire Planner, puede agregar proyectos a Portafolios o eliminarlos manualmente o con automatización a través de Salesforce Flows. Por ejemplo, cuando se completa un proyecto, puede eliminarlo automáticamente de una cartera.
Y con nuestra próxima función de carteras dinámicas con edición en línea, la gestión automática de carteras se está volviendo más fácil que nunca. Puede crear diferentes vistas de lista de Salesforce para organizar y filtrar automáticamente sus carteras de proyectos en función de varios criterios.
Calcule los niveles de prioridad de riesgos y problemas
Tener la capacidad de ver los riesgos y problemas relacionados con su proyecto significa que estos riesgos pueden mitigarse de manera oportuna durante todo el proyecto. Si busca identificar y prevenir riesgos de proyectos imprevistos, consulte nuestra guía sobre cómo reducir los riesgos de proyectos en Salesforce.
Si está buscando llevar la gestión de riesgos de su proyecto al siguiente nivel en Salesforce, puede hacerlo automatizando el cálculo de riesgos y automatizando la priorización de estos riesgos.
El registro de riesgos del proyecto es una función que ofrece Inspire Planner que le permite realizar un seguimiento de los riesgos de su proyecto y limitar sus impactos. Realiza un seguimiento tanto de los riesgos como de los problemas (los riesgos son los problemas que podrían ocurrir en el futuro y los problemas son los riesgos que han llegado a buen término y realmente sucedieron).
La Prioridad de sus riesgos se calcula automáticamente multiplicando el Impacto por la Probabilidad. De esta manera, simplemente debe asegurarse de capturar el impacto y la probabilidad de su riesgo e Inspire Planner hará el resto por usted.
Cuándo y por qué debería automatizar la gestión de proyectos en Salesforce
Si bien ahora conoce varias formas de automatizar la gestión de proyectos en Salesforce y cómo Inspire Planner puede ser potencialmente la solución que le permita hacer esto, es posible que todavía se pregunte por qué vale la pena automatizarlo.
¿Qué ganará su empresa con la automatización de la gestión de proyectos en Salesforce y qué impactos negativos mitigará? A continuación hay tres explicaciones de este valor y por qué la automatización no solo es una buena idea sino casi una necesidad.
Ahorre tiempo en tareas repetitivas
La gestión eficaz de proyectos es la diferencia entre un proyecto exitoso y uno fallido y, a menudo, lleva bastante tiempo ejecutarlo con cuidado para obtener resultados óptimos. Dado que hay una serie de tareas que se pueden realizar con su inversión en automatización de Salesforce, tiene mucho sentido liberar a su equipo para que se concentre en los problemas clave en lugar de atascarlos con tareas repetitivas manuales.
La investigación realizada por AutomationAnywhere muestra que en algunas industrias (a saber, el servicio público y la administración general) los profesionales pueden dedicar hasta 3,51 horas diarias a tareas administrativas repetitivas. ¡Estas son tareas que podrían realizarse fácilmente mediante algún tipo de automatización!
Cuando se trata de reducir el tiempo necesario para las tareas repetitivas en la gestión de proyectos, puede devolver el tiempo a su día implementando algunos de nuestros ejemplos de automatización descritos anteriormente, como plantillas de proyectos, asignación de tareas según roles de recursos y más. En última instancia, puede entregar un proyecto exitoso más rápido descargando este tipo de tareas a Salesforce.
Reducir el error humano
Si bien todos tratamos de ser completamente precisos todo el tiempo, solo somos humanos y, como tales, somos propensos a cometer errores. Salesforce, por otro lado, no es humano y no es propenso a la misma capacidad de cometer errores que los humanos. Las tareas más pequeñas pueden llamar menos la atención de un equipo de proyecto ocupado, lo que puede generar problemas mayores en el futuro debido a la naturaleza en cascada de estos errores.
Configurar su organización para automatizar su gestión de proyectos en Salesforce es la mejor manera de reducir (o eliminar efectivamente) su riesgo de error humano mientras gestiona el proyecto (suponiendo que esté configurado correctamente desde el principio, por supuesto).
Administre automáticamente varias plantillas/escenarios
Si su empresa ofrece múltiples servicios o productos diferentes, cada uno con su propio conjunto de tareas o incluso diferentes metodologías de gestión de proyectos (Waterfall vs Agile/Scrum), entonces puede encontrarse con problemas en los que un Project Manager no tiene suficiente experiencia trabajando con un tipo de producto o servicio específico y podría tener problemas para configurar el Proyecto en Salesforce.
Este problema se elimina por completo cuando su gestión de proyectos se automatiza en Salesforce utilizando varias plantillas de proyectos que sus gestores de proyectos pueden aplicar al comienzo de un proyecto. Esto no solo significa que tienen mucho menos trabajo por hacer, sino que también elimina cualquier error potencial o tareas olvidadas y brinda un grado de capacitación para los gerentes de proyecto que son nuevos en un tipo específico de proyecto.
Automatice la gestión de proyectos en Salesforce con Inspire Planner
Como puede ver, hay una cantidad insuperable de valor que se puede obtener al administrar sus proyectos dentro de Salesforce y luego aplicar capas en alguna Automatización de administración de proyectos.
Sus clientes se beneficiarán de sus esfuerzos al contar con un equipo de proyecto efectivo que pueda entregar a tiempo y garantizar que las comunicaciones sean consistentes, que los riesgos se gestionen y mitiguen, y que el equipo centre sus esfuerzos en el trabajo en lugar de las tareas administrativas.
Si está listo para automatizar la gestión de proyectos en Salesforce para su organización y reducir el trabajo manual y repetitivo, consulte Inspire Planner con nuestra prueba gratuita de 30 días hoy o solicite su demostración personal de Inspire Planner.
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.
TrailblazerDX '23 estuvo lleno de innovación y contenido para los desarrolladores. En este blog, la perspectiva de un desarrollador de Salesforce Platform y una lista de recursos de TDX.
Última actualización el 9 de abril de 2023 por Rakesh Gupta Gran idea o pregunta duradera: ¿Cómo hacer que el componente de pantalla sea de solo lectura? Objetivos: después de leer este blog, podrá: Agregar texto de solo lectura al componente de pantalla usando Display Text Agregar texto de solo lectura al componente de pantalla usando un Lightning Web personalizado
Última actualización el 7 de abril de 2023 por Rakesh Gupta Gran idea o pregunta duradera: no queremos trabajar los fines de semana o días festivos, ¡todos lo entendemos! Si es así, ¿cree que nuestros clientes o prospectos lo hacen? Si tiene dudas, intente enviar un correo electrónico a
Esta guía se publicó originalmente en Medium en 2021 y se actualizó con la orientación y los consejos más recientes, incluidas las nuevas funciones de seguridad como parte de los lanzamientos recientes y la nueva estructura de precios para las revisiones.
Última actualización el 2 de abril de 2023 por Rakesh Gupta Gran idea o pregunta duradera: ¿Cómo se programan varios correos electrónicos con Salesforce Flow? Objetivos: En este artículo, el lector aprenderá lo siguiente: Cómo usar Salesforce Flow para enviar múltiples alertas por correo electrónico usando rutas programadas y mucho más Negocios