Generalmente, dominar los conceptos de integración resulta complicado para muchos desarrolladores de Salesforce. Este artículo cubrirá todas las preguntas de la entrevista sobre conceptos de integración de Salesforce como Salesforce Connect, Streaming API, SOAP API, Bulk API, Salesforce 2 Salesforce, API de replicación de datos, API REST, límite concurrente, mensaje saliente, conceptos básicos de integración y preguntas basadas en escenarios.
Si tiene más preguntas sobre las preguntas de integración, colóquelas en la sección de comentarios para que pueda agregarlas también.
P. ¿Cómo funciona Salesforce Connect?
Salesforce Connect usa una función llamada objetos externos , que es como objetos personalizados en Salesforce, excepto que los datos viven en otro sistema. Una definición de objeto externo incluye la conexión externa al sistema donde se almacenan los datos del objeto. Para acceder a objetos externos, Salesforce Connect utiliza varias configuraciones de autenticación.
P. ¿Explique los adaptadores que utiliza Salesforce Connect?
Salesforce Connect utiliza un adaptador específico de protocolo para conectarse a un sistema externo y acceder a sus datos. Hay tres tipos de adaptadores
Entre organizaciones proporciona acceso a los datos en otra organización de Salesforce a través de la API de Salesforce. Con el adaptador entre organizaciones, Salesforce Connect utiliza la API REST de la plataforma Lightning para obtener datos de otras organizaciones de Salesforce, lo que le permite conectar datos con herramientas de apuntar y hacer clic .
OData se conecta a cualquier sistema que admita el protocolo OData 2.0 o 4.0 (una API REST para el intercambio de datos) para obtener información empresarial valiosa de fuentes de datos externas. Una vez más, con Lightning Platform, Salesforce Connect interactúa con datos externos a través de objetos externos, convirtiendo las interacciones en consultas OData que contienen parámetros para filtrar resultados.
El adaptador personalizado de Apex es un código escrito en el lenguaje Apex de Salesforce utilizando Apex Connector Framework para obtener datos de fuentes de datos. Con Lightning Platform, Salesforce Connect utiliza el código cuando ejecuta funciones específicas, como ejecutar un informe, para que pueda conectarse a fuentes de datos para obtener información más detallada sobre su negocio.
P. ¿Qué son los adaptadores de Files Connect?
También están disponibles varios adaptadores de Files Connect:
- Google Drive
- Caja
- SharePoint en línea
- OneDrive para empresas
P. ¿Cómo utilizar Salesforce Connect?
Integraciones con grandes cantidades de datos que no desea copiar en su organización.
Integraciones con pequeñas cantidades de datos que necesita presentar.
Datos para los que necesita una conexión en tiempo real.
P. ¿Cuáles son los beneficios de Salesforce Connect?
- Leer / escribir desde cualquier lugar: Salesforce Connect le permite crear, leer, actualizar y eliminar registros en fuentes externas en tiempo real .
- Adaptadores personalizados para cualquier API web: los desarrolladores pueden conectar Salesforce a cualquier API web.
- Conectores: conecte varias organizaciones de Salesforce en su empresa.
P. ¿Cuál es la diferencia entre Salesforce Connect y Lightning Connect?
Lightning Connect es la función de Salesforce Connect que le permite acceder a datos de fuentes externas y compararlos con los datos de Salesforce en paralelo.
P. ¿Qué son las limitaciones de Salesforce Connect?
- Salesforce Connect limita las fuentes de datos a conectores con soporte API.
- Salesforce Connect limita las fuentes de datos a los conectores donde los desarrolladores han escrito código para conectarse a esos objetos.
- Salesforce requiere la implementación de una capacidad de búsqueda para cada objeto externo que busque.
- Las conexiones tienen un límite de llamadas, lo que significa que la organización de Salesforce solo puede llamar a un conector 20.000 veces por hora
Una de las mayores limitaciones es que los objetos externos requieren una clave común entre los objetos de Salesforce y el sistema externo para relacionar los objetos nativos y / o personalizados de Salesforce con el objeto externo.
P. ¿Cuál es la ventaja de Lightning Connect sobre API?
- Grandes jugadores como Microsoft, SAP están apoyando esto de inmediato.
- Los datos no se guardan en SFDC, por lo que ahorrará costos de espacio.
- Los datos serán siempre en tiempo real.
- No necesita ningún esfuerzo de desarrollo para conectar SFDC con aplicaciones externas. Incluso los usuarios comerciales o los administradores pueden usar apuntar y hacer clic para integrarse.
- Si tiene una licencia Lightning Connect, puede conectarse a un sistema externo en cualquier momento sin ningún código.
P. Una organización llegó a un punto en el que el uso de datos supera el límite. Más del 65% de esos datos son datos antiguos o desactivados. Sin embargo, esos datos aún deberían estar disponibles para que todos los usuarios de SF puedan verlos (contienen los datos históricos). La idea era tomar / exportar / borrar todos los datos históricos (periódicamente) y subirlos a otro servidor, que pueda alojarlos, con una página SF visual (u otra opción) para ver los datos.
¿Cuál es la mejor solución?
Los objetos externos le permiten almacenar los datos fuera de la plataforma, pero utilizan un tipo especial de objeto personalizado para verlos.
Rastree y represente datos de fuentes externas a Salesforce mediante la creación de objetos externos. Cada objeto externo se asigna a una tabla en una fuente de datos fuera de Salesforce y le permite configurar el acceso a sus datos desde las pestañas personalizadas y de búsqueda en Salesforce. Cada objeto externo se basa en los detalles de la conexión almacenados en una definición de fuente de datos externa.
P. ¿Qué puedo hacer con un objeto externo?
Objetos estándar y personalizados | Objetos externos | |
Escribir | X | |
Leer | X | X |
API REST y SOAP | X | X (solo lectura) |
Fichas y detalles personalizados | X | X (solo lectura) |
SOQL | X | X (solo lectura, sin agregación, sin seguimiento) |
Búsqueda y SOSL | X | X |
Informes y analíticas | X |
P. Estamos diseñando un sistema para un cliente que involucra una gran cantidad de datos. Los límites de almacenamiento de datos habituales en Salesforce se superarán en un factor de 10 o más. ¿Qué tecnología se recomienda?
Una tecnología que parece que podría ser rentable es almacenar grandes secciones estáticas de datos de forma remota y acceder a ellas mediante Objetos externos / OData / Lightning Connector
P. ¿OData usando Lightning Connect se sincroniza automáticamente? Si es así, ¿cuál es la frecuencia? Si no, ¿cómo ocurre la sincronización?
No se sincroniza automáticamente. Salesforce Connect solo se sincroniza cuando usted lo solicita.
Salesforce Connect volverá a leer el documento de $ metadatos a lo largo del tiempo, por lo que verá que Salesforce envía solicitudes GET periódicamente (un tipo de datos en el lado de Salesforce podría asignarse a una columna de muchos tipos de datos diferentes en el lado de OData, por lo que esto confiere algunos flexibilidad para adaptarse a cambios menores en el extremo remoto). Pero Salesforce Connect NUNCA alterará los metadatos del objeto externo o sus campos personalizados automáticamente.
Vamos a implementar Lightning Connect desde Salesforce a nuestros propios servidores y decidiremos entre:
- Implemente OData en nuestros servidores y configure Lightning Connect para usar OData
- Implemente un conector personalizado de Apex y haga que se comunique con nuestros servidores a través de llamadas HTTP, utilizando cualquier protocolo que diseñamos para nosotros.
P. Vamos a implementar Lightning Connect desde Salesforce a nuestros propios servidores, entonces, ¿qué opción tenemos para elegir entre:
- Implemente OData en nuestros servidores y configure Lightning Connect para usar OData
- Implemente un conector personalizado de Apex y haga que se comunique con nuestros servidores a través de llamadas HTTP, utilizando cualquier protocolo que diseñamos para nosotros.
OData es un estándar de intercambio de datos abierto. La alternativa, usar código Apex puro, está destinada a interactuar con sistemas que no entienden OData y para los que no puede justificar la escritura de un adaptador en el lado opuesto por cualquier motivo (por ejemplo, el servidor ya está sobrecargado, planea reemplazar el software pronto, no hay suficientes recursos, etc.). Tendrá mucho menos mantenimiento que hacer usted mismo si opta por OData.
Sin embargo, puede hacer cosas con su Código Apex, por lo que si desea extraer de múltiples recursos discretos, o alguna lógica más complicada que la que permite OData, esa sería una buena razón para optar por el Código Apex. Por lo general, es innecesario en la mayoría de los casos. Solo tenga en cuenta que hacerlo también podría resultar en un rendimiento más lento al usar estos objetos.
P. ¿Qué es un evento de plataforma?
Los eventos de la plataforma son parte de la plataforma de mensajería empresarial de Salesforce. La plataforma proporciona una arquitectura de mensajería basada en eventos para permitir que las aplicaciones se comuniquen dentro y fuera de Salesforce. Utilice los eventos de la plataforma para entregar notificaciones personalizadas seguras y escalables dentro de Salesforce o desde fuentes externas.
Ejemplo: un usuario tiene Salesforce y una cuenta de Twitter que están vinculadas entre sí. Cuando un usuario cambia de dirección en Twitter, su dirección también debería cambiarse en Salesforce . Para hacerlo, utilizaremos los eventos de la plataforma para proporcionar una notificación para cambiar la dirección.
Evento de plataforma editorial:
Podemos publicar los eventos de la plataforma de 3 formas:
- Publicar mensajes de eventos usando APEX.
- Publique la mensajería de eventos utilizando herramientas declarativas (Process Builder o Cloud Flow Designer Tool / Visual Work flow).
P. ¿Explicar la arquitectura de software basada en eventos?
Evento
Un cambio de estado significativo en un proceso empresarial. Por ejemplo, la colocación de un pedido de compra es un evento significativo porque el centro de cumplimiento de pedidos espera recibir una notificación antes de procesar un pedido.
Mensaje de evento
Un mensaje que contiene datos sobre el evento . También conocida como notificación de eventos. Por ejemplo, un mensaje de evento puede ser una notificación sobre la realización de un pedido que contiene información sobre el pedido.
Productor de eventos
El editor de un mensaje de evento.
Canal de eventos
Un flujo de eventos en el que un productor de eventos envía mensajes de eventos y los consumidores de eventos leen esos mensajes. Para eventos de plataforma, el canal es para un evento de plataforma única y agrupa todos los mensajes de evento para ese evento de plataforma.
Consumidor de eventos
Un suscriptor a un canal que recibe mensajes del canal. Por ejemplo, una aplicación de cumplimiento de pedidos que recibe notificaciones de nuevos pedidos.
Bus de eventos
Un servicio de comunicación y almacenamiento que permite la transmisión de eventos mediante el modelo de publicación-suscripción. El bus de eventos permite la recuperación de mensajes de eventos almacenados en cualquier momento durante la ventana de retención.
Los sistemas en los modelos de comunicación de solicitud-respuesta realizan una solicitud a un servicio web o base de datos para obtener información sobre un estado determinado. El remitente de la solicitud establece una conexión con el servicio y depende de la disponibilidad del servicio.
P. ¿Explique el papel de Event Bus en la plataforma de eventos?
Los mensajes de eventos de la plataforma se publican en el bus de eventos, donde se almacenan temporalmente . Puede recuperar mensajes de eventos almacenados del bus de eventos utilizando un cliente CometD (Streaming API). Cada mensaje de evento contiene el campo ReplayId, que identifica el evento en la transmisión y permite reproducir la transmisión después de un evento específico .
P. ¿Qué son los eventos de plataforma personalizados?
Utilice eventos de plataforma personalizados para publicar y procesar notificaciones personalizadas. Por ejemplo, publique eventos de plataforma personalizados para enviar información de pedidos a un servicio de cumplimiento de pedidos. O publique eventos de plataforma personalizados para enviar información de tinta de la impresora que es procesada por una aplicación de servicio.
Define un evento de plataforma personalizado en Salesforce de la misma manera que define un objeto personalizado. Cree una definición de evento de plataforma dándole un nombre y agregando campos personalizados.
P. ¿Qué son los eventos de plataforma estándar?
Salesforce proporciona eventos con campos predefinidos, llamados eventos de plataforma estándar. Un ejemplo de un evento de plataforma estándar es AssetTokenEvent, que supervisa la actividad de autenticación de OAuth 2.0. Otro ejemplo es BatchApexErrorEvent, que informa de los errores encontrados en los trabajos de Apex por lotes.
Salesforce publica eventos de plataforma estándar en respuesta a una acción que ocurrió en la aplicación o errores en trabajos de Apex por lotes. Puede suscribirse a un flujo de eventos de plataforma estándar utilizando el mecanismo de suscripción que admite el evento.
P. ¿Cuáles son las consideraciones para los eventos de plataforma?
- A diferencia de los objetos estándar o personalizados, no puede actualizar ni eliminar registros de eventos.
- Tampoco puede ver registros de eventos en la interfaz de usuario de Salesforce.
- Los eventos de plataforma no tienen diseños de página.
- Cuando elimina una definición de evento de plataforma, se elimina de forma permanente.
- Puede establecer permisos de lectura y creación para eventos de plataforma. Otorgue permisos a los usuarios en perfiles o en conjuntos de permisos.
P. ¿Cuál es el tiempo de retención de eventos en el bus de eventos?
- Los mensajes de eventos de plataforma de gran volumen se almacenan durante 72 horas (3 días).
- Los mensajes de eventos de la plataforma de volumen estándar se almacenan durante 24 horas (1 día).
- Puede recuperar mensajes de eventos pasados cuando utilice clientes CometD para suscribirse a un canal.
P. ¿Explique el orden de los eventos de la plataforma?
Si publica varios eventos en una llamada de publicación , el orden de los eventos en un lote está garantizado para esa solicitud de publicación. Por tanto, el orden de los mensajes de eventos que se almacenan en el bus de eventos y se entregan a los suscriptores coincide con el orden de los eventos que se transmiten en la llamada.
Puede publicar varios eventos de varias formas, incluido el método Apex EventBus.publish o el recurso compuesto API REST . Para los eventos publicados en diferentes solicitudes, el orden de los eventos no está garantizado porque las solicitudes de publicación pueden ser procesadas por diferentes servidores de aplicaciones de Salesforce. Como resultado, una solicitud posterior podría procesarse más rápido que una solicitud anterior.
Salesforce asigna un valor de ID de reproducción a un mensaje de evento de plataforma recibido y lo conserva en el bus de eventos . Los suscriptores reciben mensajes de eventos de la plataforma desde el bus de eventos en el orden del ID de reproducción.
P. ¿Explicar el comportamiento de publicación del evento de la plataforma?
- Publicar después de confirmar para que el mensaje del evento se publique solo después de que una transacción se haya confirmado correctamente. Seleccione esta opción si los suscriptores dependen de los datos que confirma la transacción de publicación.
- Publicar inmediatamente para que el mensaje del evento se publique cuando se ejecute la llamada de publicación. Seleccione esta opción si desea que el mensaje del evento se publique independientemente de si la transacción se realizó correctamente. También elija esta opción si el editor y los suscriptores son independientes, y los suscriptores no dependen de los datos comprometidos por el editor.
P. ¿Explique el campo del sistema ReplayId?
A cada mensaje de evento se le asigna un ID contenido en el campo ReplayId. El valor del campo ReplayId, que el sistema completa cuando el evento se entrega a los suscriptores, se refiere a la posición del evento en el flujo de eventos . No se garantiza que los valores de ID de repetición sean contiguos para eventos consecutivos.
P. ¿Qué es la captura de datos modificados?
El evento Change Data Capture, o evento de cambio, es una notificación que Salesforce envía cuando se produce un cambio en un registro de Salesforce como parte de una operación de creación, actualización, eliminación o recuperación. La notificación incluye todos los campos nuevos y modificados, y los campos de encabezado que contienen información sobre el cambio.
Utilice eventos de cambio para:
- Reciba notificaciones de cambios en los registros de Salesforce, incluidas las operaciones de creación, actualización, eliminación y recuperación.
- Capture cambios de campo para todos los registros.
- Obtenga un amplio acceso a todos los datos independientemente de las reglas de uso compartido.
- Obtén información sobre el cambio en el encabezado del evento, como el origen del cambio, lo que permite ignorar los cambios que genera tu cliente.
- Realice actualizaciones de datos utilizando los límites de las transacciones.
- Utilice un esquema de eventos versionado.
- Suscríbase a cambios masivos de forma escalable.
P. ¿Es posible publicar y suscribir eventos entre dos organizaciones independientes de forma nativa?
La suscripción a eventos de otra organización no se admite de forma nativa en la plataforma en este momento.
Digamos que la organización A publica un Customer_Event__e. Por lo tanto, la organización B no podría suscribirse a eventos en la organización A.
P. Existe un caso de uso para sincronizar la cuenta y el contacto con un sistema externo. ¿Se pueden usar los eventos de la plataforma para actualizar sistemas externos si se crean o actualizan Cuentas / Contactos en nuestra organización?
Los eventos de plataforma se pueden utilizar para «notificar» a un sistema externo que se ha actualizado una cuenta o un contacto . Reconozca que un evento de plataforma envía una notificación de inserción a través de la API de transmisión. No hay garantía de que el suscriptor lo reciba y no le proporcionará al suscriptor lo que podría necesitar para autenticarse para obtener el registro actualizado de la misma manera que lo hace la mensajería saliente.
La captura de datos modificados funcionaría para esta situación. Las actualizaciones se producirán de forma asincrónica y se procesarán a medida que haya tiempo disponible en el servidor. Recibe cambios casi en tiempo real de los registros de Salesforce y sincroniza los registros correspondientes en un almacén de datos externo. Change Data Capture publica eventos de cambio, que representan cambios en los registros de Salesforce. Los cambios incluyen la creación de un nuevo registro, las actualizaciones de un registro existente, la eliminación de un registro y la recuperación de un registro.
P. ¿Cómo generar registros de depuración para eventos de plataforma?
Los registros de depuración para los desencadenantes de eventos de la plataforma se crean mediante un proceso llamado «Proceso automatizado» y están separados de sus registros de código Apex correspondientes. Los registros de depuración no están disponibles en la pestaña Registro de la Consola para desarrolladores. Una excepción son las pruebas de Apex, que incluyen el registro de depuración para los desencadenantes de eventos en el mismo registro de ejecución de la prueba. Para recopilar registros de activación de eventos de la plataforma, agregue una entrada de marca de seguimiento para la entidad Proceso automatizado en Configuración.
P. ¿Puede consultar el evento de la plataforma?
no es compatible y significativo para consultar eventos usando SOQL
Los eventos de plataforma forman un flujo de tiempo ordenado. Cada evento tiene un «ID de repetición» específico, y el ID de repetición de cada evento es más alto que el del evento anterior. Se garantiza que se entregarán en un orden específico a los clientes que están viendo la transmisión de eventos, como los activadores de eventos de plataforma y suscriptores externos.
Existe un mecanismo de reproducción mediante el cual los clientes que «perdieron» parte de la transmisión pueden proporcionar el último ID de reproducción que recibieron y hacer que todo el evento entre ese momento y el momento actual se les reenvíe para su procesamiento (nuevamente, en orden).
Los eventos están destinados a ser mensajes ordenados efímeros, no al almacenamiento de datos de acceso aleatorio. Un evento sería algo así como “¡Objeto X cambiado!”, Donde el almacén de datos subyacente es el Objeto X. Puede consultar ese objeto, pero no tendría sentido consultar el evento en sí. Un evento individual puede contener o no suficiente información para tener significado fuera de su posición en la corriente temporal y el estado del objeto en ese momento.
P. ¿Diferencia entre SObject y Platform Events?
SObjects__c | Platform_Events__e |
DML (insertar, actualizar, eliminar) | Publicar (solo insertar) |
SOQL | API de transmisión |
Disparadores | Suscriptores |
Ejecución de contexto paralelo | Orden de ejecución garantizado |
P. ¿Puede apex activarse en eventos de plataforma?
sí
P. ¿Proceso paso a paso de integración de Salesforce con Salesforce utilizando SOAP?
Primero, inicie sesión en Salesforce (sistema de destino) del que desea recibir los datos.
Debe crear un usuario solo de integración . Esto le permite controlar la seguridad (o abrir el acceso) para la integración del middleware. Establezca la configuración del perfil del usuario de integración para que su contraseña nunca caduque , pero no es absolutamente necesario.
Además, exponga Webservice como una API SOAP.
clase global FetchAccount1
{
cuenta estática de servicio web createAccount ( String Name) {
Cuenta cuenta = nueva cuenta ();
acct.Name = Nombre;
insertar cuenta;
}
}
Por encima del código, inserte la cuenta y devolverá la cuenta insertada.
En segundo lugar, tiene dos WSDL diferentes entre los que puede elegir en Salesforce. El WSDL asociado o el WSDL empresarial.
El WSDL asociado se escribe de forma flexible, lo que significa que le permite especificar elementos y atributos de forma dinámica hasta cierto punto.
El WSDL empresarial está fuertemente tipado . La desventaja del WSDL empresarial es que cada vez que cambia su esquema de Salesforce, ya sean objetos o campos, debe actualizar y volver a importar el WSDL a su middleware.
En tercer lugar, está planificando las distintas llamadas que deberá realizar (cuándo realizar una consulta, cuándo insertar o actualizar, eliminar, etc.).
Como parte de las llamadas a SFDC, comience a diseñar su proceso comercial en la capa de middleware. Cuando inserta registros, cuando actualiza, cómo maneja los errores, la frecuencia de la integración (es una integración nocturna, inmediata, por hora, lo que sea).
Cuarto, está probando la integración. Recoge SoapUI. Este complemento le ayuda a probar las llamadas SOAP a Salesforce antes de conectarlas a la integración.
En quinto lugar, inicie sesión en otro Salesforce (sistema de origen) al que enviará los datos y siga los pasos a continuación.
- En la sección Crear, navegue hasta Desarrollar [Símbolo] Clases de Apex, haga clic en el botón Generar desde WSDL y seleccione el archivo WSDL de socio (es decir, partner.xml) que creó en el Paso 3. Ahora, haga clic en el botón Analizar WSDL
En sexto lugar, cree la configuración del sitio remoto para la organización de destino en la organización de origen
P. ¿Cuáles son las consideraciones para el uso de la palabra clave de servicio web?
- No podemos usar la palabra clave webservice para definir una clase o un método de clase interna, interfaz o para definir los métodos y variables de una interfaz.
- Podemos usar para definir métodos de nivel superior y método de clase externa
P. ¿Qué es WSDL?
Un WSDL es un documento XML que contiene una descripción estandarizada de cómo comunicarse usando el servicio web .
P: ¿Cuáles son los diferentes tipos de WSDL?
WSDL empresarial
Socio WSDL
Apex WSDL
WSDL de metadatos
Herramientas WSDL
WSDL de autenticación delegada
P. ¿Diferencia entre Enterprise WSDL y Partner WSDL?
Respuesta:
WSDL empresarial:
Se utiliza para crear aplicaciones de cliente para una sola organización de fuerza de ventas.
Los clientes que utilizan un documento WSDL empresarial deben descargarlo y volver a consumirlo siempre que su organización realice un cambio en sus objetos o campos personalizados o cuando deseen utilizar una versión diferente de la API.
WSDL de socio:
Se utiliza para crear aplicaciones cliente para múltiples organizaciones .
La documentación WSDL del socio solo debe descargarse y consumirse una vez por versión de la API.
P. ¿Qué es SoapUI?
soapUI es una aplicación de escritorio gratuita de código abierto dirigida a desarrolladores y probadores.
−RESTful Web Services (utilizado por Bulk API)
−Servicios web basados en SOAP
Con soapUI puede inspeccionar, invocar y desarrollar servicios web y realizar pruebas funcionales, de carga y de cumplimiento de los servicios web.
P: ¿Qué son las limitaciones del archivo WSDL?
El archivo debe tener la extensión .WSDL.
No se permitirán múltiples tipos de puertos y enlaces
Las operaciones de importación y herencia no son compatibles
P. Estamos integrando SFDC con un sistema externo, donde el sistema externo invocará nuestra clase de servicio web y la fuerza de ventas aceptará la solicitud mediante la API de SOAP.
Aquí el sistema externo nos enviará información y SFDC tiene que capturar esa solicitud y analizarla, para crear el caso en el SFDC y enviar la respuesta al sistema externo.
¿Quién generará WSDL y cómo hacerlo?
Salesforce acepta la solicitud: proporciona WSDL
Sistema externo: consumidor de WSDL
Si ha definido su clase de Apex como global y su método como un servicio web, entonces en Salesforce, debería poder generar el WSDL.
global con clase de intercambio WSClass {
webservice static boolean wsMethod () {
devuelve verdadero;
}
}
Pasos a seguir :
Pasos que se supone que debes seguir
- Importar WSDL de socio
- Importar WSDL para la clase
- Genere clases de código auxiliar para ambos archivos WSDL. Inclúyalos en su paquete de código fuente.
- Invoque el servicio de inicio de sesión desde la clase de código auxiliar del puerto asociado. Debe pasar el nombre de usuario y la contraseña si ha incluido su IP de cliente en Salesforce; de lo contrario, debe pasar el nombre de usuario y la “contraseña + token de seguridad” en el campo de contraseña.
- De la respuesta recibida, obtenga el ID de sesión.
- Invoque el puerto de servicio web de su clase Case desde el stub, proporcione los valores que necesita pasar para crear el caso junto con el Id. De sesión.
- Obtén la respuesta. por ejemplo: Id. de caso / Número de caso.
- Cierre la sesión utilizando el servicio Logout en la clase de código auxiliar del puerto del socio, proporcionando el ID de sesión.
P. Una empresa procesa pedidos dentro de su instancia de Salesforce. Cuando el estado de un pedido cambia a ‘Pagado’, debe notificarlo al sistema de gestión de pedidos de la empresa (OMS). OMS expone los puntos finales del servicio web SOAP para escuchar cuándo recuperar los datos de Salesforce.
¿Cuál es el método óptimo para implementar esto?
Genere el WSDL empresarial y utilícelo para realizar una llamada al OM
P. ¿Cuál es la diferencia entre SOAP y Bulk API?
SOAP es sincrónico y BULK es asincrónico.
Sincrónico significa que los lotes se actualizan uno a la vez, en el orden en que el trabajo se puso en cola y debe terminar uno antes de poder comenzar el siguiente. Asynchronous puede ejecutarse en paralelo y no requiere que las entradas anteriores finalicen antes de comenzar el siguiente lote.
P. ¿Cuándo usar la API masiva?
La API masiva se basa en los principios REST y está optimizada para cargar o eliminar grandes conjuntos de datos. Puede usarlo para consultar, consultar todos, insertar, actualizar, actualizar o eliminar muchos registros de forma asincrónica mediante el envío de lotes. Salesforce procesa lotes en segundo plano.
La forma más fácil de usar Bulk API es habilitarla para procesar registros en Data Loader usando archivos CSV. El uso de Data Loader evita la necesidad de escribir su propia aplicación cliente.
P. ¿Cómo funciona Bulk API?
El procesamiento de datos generalmente consta de los siguientes pasos.
- Cree un nuevo trabajo que especifique el objeto y la acción.
- Envíe datos al servidor en varios lotes.
- Una vez que se hayan enviado todos los datos, cierre el trabajo. Una vez cerrado, no se pueden enviar más lotes como parte del trabajo.
- Verifique el estado de todos los lotes en un intervalo razonable. Cada verificación de estado devuelve el estado de cada lote.
- Cuando todos los lotes se hayan completado o hayan fallado, recupere el resultado de cada lote.
- Haga coincidir los conjuntos de resultados con el conjunto de datos original para determinar qué registros fallaron y tuvieron éxito, y tome las medidas adecuadas.
P. ¿Explicar el modo paralelo Vs serial en API masiva?
Podemos procesar el registro usando Bulk API. De forma predeterminada, los registros de API masivas se procesan en modo paralelo, donde se procesan varios registros en varios lotes. Podría generar un bloqueo de registros o un problema de búsqueda de registros . El problema de búsqueda de registros es cuando un registro se procesa en un lote y el registro referenciado se procesa en otro lote, por lo que creará un problema en el procesamiento. Para evitar esa situación podemos optar por el modo serial o podemos organizar registros relacionados en un mismo lote.
El procesamiento en modo serie solo es posible en Bulk API V1.0. Bulk API V2.0 solo procesa el registro en modo paralelo.
SALESFORCE 2 SALESFORCE
P. ¿Qué es Salesforce to Salesforce es una función que le permite compartir datos con otra organización de salesforce.com?
Salesforce to Salesforce es una función que le permite compartir datos con otra organización de salesforce.com.
P. ¿Cómo habilitar Salesforce para Salesforce (S2S)?
- Ingrese «Configuración de Salesforce a Salesforce» en el cuadro Búsqueda rápida de Salesforce.
- Seleccione «Configuración de Salesforce a Salesforce».
- Haga clic en «Editar».
- Seleccione «Activar».
- Clic en Guardar.»
Tenga en cuenta que ambas organizaciones deben habilitar S2S antes de que pueda comenzar a compartir datos. Habilitar S2S hará que la pestaña de conexión esté disponible en Salesforce.
P. ¿Pasos a seguir para S2S Connect?
PASO 1) Habilitación de Salesforce para Salesforce
Paso 2) Configuración de la conexión
Para configurar la conexión, debe abrir la pestaña «Conexión». Luego haga clic en Nueva pestaña.
Paso 3) Publicar objetos
Ahora necesitamos publicar o suscribir el objeto estándar o personalizado. Para publicar el objeto, debe ir a la primera organización y hacer clic en el botón «Publicar / Anular publicación».
Luego seleccione el objeto y haga clic en guardar.
Paso 4) Suscripción de objetos
Ahora regrese a la organización receptora y haga clic en la lista relacionada «Objetos suscritos».
Paso 4) Suscripción de objetos
Ahora regrese a la organización receptora y haga clic en la lista relacionada «Objetos suscritos».
Luego mapee el objeto.
Ahora necesitamos mapear el campo. Vaya a la lista relacionada «Objeto suscrito» y seleccione el objeto y el campo del mapa.
P. ¿Dar ventajas y desventajas de la integración de Salesforce2Salesforce?
Pros:
- Utiliza el modelo pub / sub, fácil de asimilar y explicar al cliente
- Todas las operaciones de S2S en segundo plano son asincrónicas y controladas por eventos
- La transferencia de la solución es asistida porque puede apuntar a los documentos de Salesforce
- S2S se ejecuta bajo su propio usuario de integración que ofrece cierta auditabilidad
- Registra automáticamente los cambios de esquema locales / remotos y registra las fallas de sincronización
- Por cada registro que no se sincroniza, el administrador recibe un correo electrónico con detalles
Contras:
- No del todo en tiempo real, 1 minuto típico
- A menudo inadecuado para organizaciones muy personalizadas
- Expectativas poco realistas del cliente, riesgo detrás de aparente simplicidad
- No hay metadatos. Sin control de fuente. Sin conjuntos de cambios.
P. ¿Qué hace que S2S sea fácil?
- Rápido tiempo de generación de valor, demostración del cliente en funcionamiento muy rápidamente
- Si pasa 1 día jugando con S2S, encontrará sus limitaciones bien definidas
P. ¿Qué hace que S2S sea difícil?
La sincronización bidireccional es complicada, cada registro debe originarse en un sistema
P. ¿Cuáles son las limitaciones de la integración de S2S?
- Solo ciertos objetos (y objetos personalizados)
- Cualquier cambio de campo sincroniza todo el registro
- Se producen bucles si el mismo campo activa actualizaciones en ambos lados de S2S.
- Hay límites de tarifas indocumentados como REQUEST_LIMIT_EXCEEDED **
P. ¿Qué es la API de replicación de datos y el Programador de Apex?
Salesforce Replication API (que es una API SOAP) y sus equivalentes de Apex. El método Database.getUpdated se puede utilizar para obtener una lista de registros creados dentro de un período de tiempo determinado.
Devuelve la lista de registros individuales que se han actualizado para un tipo de sObject dentro de las fechas y horas de inicio y finalización especificadas.
Siempre que no esté bajo presión para realizar la sincronización en tiempo real, puede usar esta API para programar un trabajo de Apex todos los días o cada hora si es necesario. Luego, aproveche Batch Apex para iniciar un trabajo para procesar los registros, esto se escalará muy bien ya que le permite fragmentar los límites del gobernador, como aquellos alrededor del número de llamadas HTTP (10 por alcance de ejecución de Apex) que se pueden hacer por solicitud o alcance en términos de Batch Apex. También puede administrar mejor los errores de sincronización al recopilar errores y emitir un informe o registros al final del trabajo.
P. Mi organización tiene el requisito de que, si se actualiza / inserta algo en nuestra aplicación web, debe actualizarse automáticamente en SFDC y viceversa.
Hay 1000 usuarios en nuestro sitio web y también tienen su cuenta en Salesforce. Ahora, para sincronizar los datos entre estos dos, se requieren algunas actualizaciones automáticas en tiempo real. Además, cada vez que un nuevo usuario inicia sesión, no deberíamos tener que volver a realizar ninguna codificación.
-¿Cómo podemos sincronizar sus datos entre sfdc y nuestra aplicación? -¿Podemos mostrar las actualizaciones automáticas en tiempo real?
Opción 1: API de Salesforce REST y SOAP
Las API REST y SOAP de Salesforce proporcionan una API basada en CRUD completa para los datos en Salesforce, de modo que puede usar estas API para llamar desde el lugar apropiado en su código.
Opción 2: API de transmisión
La API de transmisión de Salesforce no es ideal para sus requisitos, ya que Salesforce no puede garantizar la entrega.
La API de transmisión no garantiza la durabilidad y la entrega confiable de notificaciones. Los servidores de transmisión no mantienen ningún estado de cliente y no realizan un seguimiento de lo que se entrega. Es posible que el cliente no reciba mensajes por diversas razones.
Opción 3 – Mensaje saliente
Los mensajes salientes están vinculados con el motor de flujo de trabajo, que solo cubre la inserción y actualización, no la eliminación. Son más en tiempo real, aunque existen algunas condiciones en las que se pueden eliminar los mensajes.
Opción 4: API de replicación: la mejor opción
La forma más confiable es la API de replicación . Aunque esto no es en tiempo real, sin embargo, da acceso a los registros creados, actualizados y eliminados dentro del último período de tiempo sondeado. Puede ejecutar un servicio en su aplicación web para realizar periódicamente estas llamadas a la API de replicación.
La API admite la replicación de datos, lo que le permite almacenar y mantener una copia local separada de los datos de Salesforce pertinentes de su organización para usos especializados, como almacenamiento de datos, minería de datos, informes personalizados, análisis e integración con otras aplicaciones. La replicación de datos le brinda control local y la capacidad de ejecutar consultas analíticas grandes o ad hoc en todo el conjunto de datos sin transmitir todos esos datos a través de la red.
P. ¿El método de la API de replicación es bueno para varios usuarios que intentan sincronizar los datos simultáneamente?
La API solo devolverá registros que sean visibles para el usuario con el que inició sesión, así que asegúrese de que su usuario de API tenga suficientes privilegios para ver los registros que desea replicar.
P. Hay 1000 usuarios en su sitio web y también tienen su cuenta en Salesforce. Ahora, para sincronizar los datos entre estos dos, se requieren algunas actualizaciones automáticas en tiempo real.
¿Cómo podemos sincronizar los datos entre sfdc y la aplicación web?
La forma más confiable que está realmente diseñada para este caso de uso es la API de replicación . Aunque esto no es en tiempo real, sin embargo, da acceso a los registros creados, actualizados y eliminados dentro del último período de tiempo sondeado. Podríamos ejecutar un servicio en la aplicación web para realizar periódicamente estas llamadas a la API de replicación.
P. Cuando se crea una cuenta en Salesforce, necesito llamar a un servicio web de SAP y crear un cliente en SAP.
Llame al servicio web de SAP desde el activador de la cuenta llamando a un método futuro
Esto trae consigo nuevas vulnerabilidades a considerar, especialmente porque los métodos @future no son fáciles de rastrear, lo que hace que el manejo de errores y la recuperación sean bastante críticos aquí. Además, cuando realiza grandes cargas de datos, también hay un límite de 10 por contexto de activación de Apex.
P. ¿Cuáles son los límites concurrentes en Salesforce?
Si se ejecutan varias solicitudes por más del intervalo de tiempo especificado, todas esas solicitudes se tratarán según los límites concurrentes. Salesforce ha dividido ampliamente estos límites en 2 categorías
- Límite de solicitudes de API simultáneas
- Solicitud de llamada simultánea / límite de Apex
P. ¿Explique sobre el límite de solicitudes de API simultáneas?
Si salesforce recibe cualquier solicitud de API entrante de los sistemas externos y todas esas solicitudes de API que están demorando más de 20 segundos, se contabilizarán bajo estos límites de solicitud de API.
En cualquier momento dado, Salesforce permite solo 25 solicitudes que se ejecutan durante más de 20 segundos . Si ya se han tomado 25 solicitudes en 20 segundos y, mientras tanto, si recibe la solicitud número 26 y si esta solicitud número 26 también cruza los 20 segundos, el sistema arrojará un error y finalizará esta solicitud número 26 automáticamente.
En caso de que la 26ª solicitud finalice, se ejecutará en 20 segundos, no se generará ningún error.
P. ¿Cómo podemos evitar los límites de Apex / Solicitud de llamada simultánea?
Sí, podemos evitar estos errores simplemente moviendo todas estas solicitudes síncronas de ejecución prolongada a solicitudes asíncronas de ejecución prolongada mediante la integración continua.
P. ¿Escribir sintaxis Rest?
Llamada de descanso
Http http = new Http ();
HttpRequest request = new HttpRequest ();
pedido. setEndpoint ( ‘https://test.com’ );
pedido. setMethod ( ‘OBTENER’ );
Respuesta HttpResponse = http. enviar (solicitud);
// Si la solicitud es exitosa, analiza la respuesta JSON.
if (respuesta. getStatusCode () == 200) {
}
}
Exponer una clase como servicio REST
@RestResource (urlMapping = ‘/ Account / *’ )
global con clase para compartir MyRestResource {
@HttpGet
getRecord de cuenta estática global () {
// Agrega tu código
}
}
P. ¿Clase de prueba para REST y SOAP?
Crear una clase simulada
El primer paso es crear una clase simulada para la llamada de API. El primer paso es crear una clase que implemente la interfaz HttpCalloutMock . La clase simulada no es más que una clase que generará una respuesta falsa para nuestra llamada de API en la clase de prueba. Como no necesitamos acceder a la API real durante la prueba, deberíamos tener una respuesta falsa que se devolverá cuando se realice una llamada.
La clase simulada también es una clase de prueba con la anotación @isTest que implementa la interfaz HTTPCalloutMock.
Esta interfaz consta de un solo método que acepta una instancia de la clase HttpRequest como parámetro y devuelve una instancia de HttpResponse que construiremos dentro del método mismo.
P. ¿Proporciona la sintaxis de todos los métodos de descanso?
Detalles de la acción de anotación
@HttpGet Read Lee o recupera registros.
@HttpPost Create Crea registros.
@HttpDelete Delete Elimina registros.
@HttpPut Upsert Normalmente se usa para actualizar registros existentes o crear registros.
@HttpPatch Update Normalmente se utiliza para actualizar campos en registros existentes.
P. ¿Diferencia entre SOAP n REST?
JABÓN | DESCANSAR |
|
|
|
|
|
|
|
|
|
{«Ciudad»: «Mumbai», «estado»: «Maharastra»} |
|
|
P. ¿Cómo puede exponer una clase Apex como un servicio web REST en Salesforce?
Una clase de ápice se puede exponer como servicio web REST utilizando la palabra clave ‘@RestResource’
P: ¿Cuál es el uso de la API de REST de Chatter?
La API de Chatter (también llamada API REST de Chatter) le permite acceder a la información de Chatter a través de una API basada en REST optimizada accesible desde cualquier plataforma. Los desarrolladores ahora pueden crear aplicaciones sociales para dispositivos móviles o sitios web altamente interactivos, de manera rápida y eficiente.
P. ¿Cuál es la diferencia entre la API REST y la API REST APEX?
De manera similar a los campos / objetos estándar y los campos / objetos personalizados en Salesforce, estas API también se incluyen en estas API estándar y API personalizadas.
API REST:
Esta API proporcionada por Salesforce con un conjunto de servicios prediseñado que se ejecutará en el protocolo REST para interactuar con el ecosistema de Salesforce. Esto proporciona una forma poderosa y conveniente de interactuar con el sistema Salesforce.
Esto es muy fácil de integrar y se adapta mejor a las aplicaciones que se ejecutan en aplicaciones móviles y proyectos web. El documento detallado se puede encontrar aquí .
API APEX REST:
Si tiene un caso de uso en el que desea compartir algunos de los datos de su organización de Salesforce con sistemas externos / desea actualizar la base de datos de Salesforce en la solicitud del sistema externo con el protocolo REST y su caso de uso no está disponible en la API REST estándar proporcionada por Salesforce .
En estos escenarios, creará una clase Apex que puede manejar todos sus escenarios y compartir / actualizar los datos necesarios con sistemas externos al mismo tiempo que ejecuta estas clases Apex en el protocolo REST. Toda la clase o métodos que ha escrito luego se exponen con sistemas externos utilizando esta API APEX REST.
P. ¿Cuáles son los mecanismos de autenticación que utiliza Apex REST API?
- OAuth 2.0
- ID de sesión
P. ¿Qué es JSON?
JSON son las siglas de JavaScript Object Notation. JSON tiene un peso ligero que XML
P. ¿Se pueden utilizar las credenciales con nombre para admitir la autenticación basada en tokens?
Sí, ese es uno de los principales beneficios de usar credenciales con nombre.
P. ¿Qué son los mensajes salientes?
Los mensajes salientes están vinculados con el motor de flujo de trabajo, que solo cubre la inserción y actualización, no la eliminación. Son más en tiempo real, aunque existen algunas condiciones en las que se pueden eliminar los mensajes.
P. Necesitamos tener la capacidad de realizar más de 2999 llamadas a un servicio REST. Actualmente, recibimos una excepción cuando la cantidad de textos destacados supera el límite actual para los textos destacados de 100.
Por lo tanto, ¿existe una solución para realizar llamadas REST asíncronas dentro de la clase Apex para admitir la gran cantidad requerida para cumplir con nuestro requisito?
Cree una clase por lotes y haga tantas llamadas como necesite. El límite de 100 llamadas se aplica solo a una sola transacción, pero las clases acumulables pueden crear millones de llamadas.
P. ¿Cuáles son las limitaciones de los mensajes salientes?
Tenemos los mensajes salientes como una de las acciones para los flujos de trabajo. Esto funciona si la otra parte implementa el WSDL que se genera una vez que se define la mensajería saliente con el punto final apropiado.
P. ¿Cuál es el mejor enfoque para realizar llamadas a servicios web externos?
El método futuro se invoca a través de desencadenadores que permiten realizar llamadas de ápice e invocar un servicio web externo siempre que el método futuro esté anotado con @future (llamada = true) .Esto proporciona mucha flexibilidad y uno de los mejores enfoques.
P. ¿Podemos hacer llamadas directamente desde el disparador?
No podemos. La llamada es un proceso asincrónico en el que un disparador es dinámico / sincrónico. Las llamadas retrasarían la transacción de la base de datos hasta que se complete la llamada, lo que puede durar hasta 120 segundos desde la perspectiva de los límites. Esto podría causar una contención significativa con otras transacciones e impactar el desempeño. Eso significa que no es directamente posible realizar una llamada de servicio web desde un disparador. Pero usando la anotación @Future podemos convertir el disparador en una clase asincrónica y podemos usar un método de llamada.
P. ¿Cómo utilizar las llamadas HTTP en la clase por lotes?
Para usar HTTP Callouts en la clase por lotes, necesitamos usar Database.allowcallouts en la interfaz.
P. ¿Cuántas llamadas a servicios externos se pueden realizar en una sola transacción principal?
Se permite un total de 10 llamadas en una sola transacción principal.
P. ¿Cuál es el límite de tiempo máximo permitido al realizar una llamada a un servicio externo en Apex?
Respuesta: se aplica un límite de tiempo máximo de 120 segundos al realizar una llamada al servicio externo
P. ¿Cuál es el período de tiempo de espera predeterminado al llamar al servicio web desde Apex?
10 seg.
P. ¿Podemos definir un tiempo de espera personalizado para cada llamada?
Se puede definir un tiempo personalizado para cada llamada.
el tiempo mínimo es de 1 milisegundo y el máximo de 120.000 milisegundos.
P. ¿Cómo aumentar el tiempo de espera al llamar al servicio web desde Apex?
docSample.DocSamplePort stub = nuevo docSample.DocSamplePort ();
P: ¿Cuántos tipos de API están disponibles en Salesforce?
- API REST
- API SOAP
- API masiva
- API de transmisión
- API de metadatos
- API de REST de Chatter
- API de interfaz de usuario
- API de REST de análisis
- API de REST de Apex
- API de Apex SOAP
- API de herramientas
P: ¿Qué es la configuración del sitio remoto y cuál es su acción?
En la configuración del sitio remoto, agregaremos la dirección de dominio del sistema externo donde Salesforce hará una llamada para obtener cierta información.
Tan pronto como agregó el nombre de dominio a la configuración del sitio remoto, internamente informa a los ecosistemas de Salesforce que estos son mis nombres de dominio de confianza para que pueda permitir la llamada a estos servicios desde Salesforce.
P. ¿Qué sucede si no se agrega el dominio al realizar una llamada de Salesforce al sistema externo?
Es obligatorio agregar los nombres de dominio del sistema externo en la configuración del sitio remoto mientras Salesforce realiza cualquier llamada a estos servicios. Si no se agrega, Salesforce trata todos estos nombres de dominio de sistemas externos como dominios no confiables. Por lo tanto, la llamada no se activará desde Salesforce.
P: ¿Cómo autentica Salesforce cada solicitud entrante?
Todas las solicitudes de terceros que ingresen a Salesforce serán autenticadas por OAuth 2.0, utilizando los sistemas de terceros OAuth 2.0 obtendrán el token de acceso primero del servidor de autorización de Salesforce, luego el token de acceso se pasará como parte de cada solicitud.
Entonces, Salesforce verifica si este token es válido o no, vencido o no, si todo está bien, solo Salesforce procesa esta solicitud; de lo contrario, arrojará un error.
P. ¿Diferencia entre credenciales con nombre y configuración de sitio remoto?
Configuración de sitio remoto | Credencial nombrada |
Especifica la URL del extremo de la llamada | Especifica la URL y su autenticación requerida en una única definición |
La gestión de la autenticación debe realizarla manualmente el desarrollador de Apex cuando sea necesario. | Salesforce gestiona toda la autenticación |
El mantenimiento es difícil si se produce algún cambio en el futuro | El mantenimiento es fácil ya que es un único punto de cambio. |
La implementación varió según la autenticación requerida para cada configuración de sitio remoto | Independientemente de la autenticación seleccionada, la implementación sigue siendo la misma |
P. ¿Cuál es el beneficio de las credenciales con nombre?
Beneficios de usar credenciales con nombre:
- Una credencial con nombre especifica la URL de un punto final de llamada y sus parámetros de autenticación requeridos en una definición.
- Puede omitir la configuración del sitio remoto, que de lo contrario se requiere para llamadas a sitios externos, para el sitio definido en la credencial nombrada.
- Utilizando Named Credential, podemos realizar una llamada a un sistema externo sin proporcionar nombre de usuario o contraseña en el código.
- Al separar la URL del punto final y la autenticación de la definición de llamada, las credenciales con nombre facilitan el mantenimiento de las llamadas. Por ejemplo, si cambia la URL de un extremo, solo actualiza la credencial nombrada. Todas las llamadas que hacen referencia a la credencial nombrada simplemente continúan funcionando.
- Admite dos tipos de protocolos de autenticación por ahora: autenticación básica (autenticación de contraseña) u OAuth
P. ¿Qué es una aplicación conectada?
Una aplicación conectada es un marco que permite que una aplicación externa se integre con Salesforce utilizando API y protocolos estándar, como SAML, OAuth y OpenID Connect. Las aplicaciones conectadas utilizan estos protocolos para autenticar, autorizar y proporcionar inicio de sesión único (SSO) para aplicaciones externas . Las aplicaciones externas que están integradas con Salesforce pueden ejecutarse en la plataforma de éxito del cliente, otras plataformas, dispositivos o suscripciones SaaS. Por ejemplo, cuando inicia sesión en su aplicación móvil Salesforce y ve sus datos de su organización de Salesforce, está utilizando una aplicación conectada.
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://www.sfdcamplified.com/2021/04/in-depth-scenario-based-interview-questions-on-salesforce-integration.html#utm_source=rss&utm_medium=rss&utm_campaign=in-depth-scenario-based-interview-questions-on-salesforce-integration