Esse texto foi traduzido usando o sistema de tradução automatizado do Salesforce. Pegue nossa enquisa para fornecer feedback sobre esse conteúdo e diga-nos o que você gostaria de ver em seguida.
Geralmente, ao implementar o Salesforce, você precisa integrá-lo a outros aplicativos. Embora cada cenário de integração seja exclusivo, há requisitos e problemas comuns que os desenvolvedores e os arquitetos devem resolver.
Este documento descreve estratégias (na forma de padrões) para esses cenários de integração comuns. Cada padrão descreve o design e a abordagem para um cenário específico, em vez de detalhar uma implementação específica. Neste documento, você encontrará:
- Vários padrões que tratam dos principais cenários de integração de "arquiteto"
- Uma matriz de seleção para ajudar a determinar qual padrão é mais adequado ao seu cenário
- Dicas e práticas recomendadas de integração
Objetivo e alcance
Este documento é para designers e arquitetos que precisam integrar a Salesforce Platform a outros aplicativos em suas empresas. Esse conteúdo é uma distilação de muitas implementações bem-sucedidas por arquitetos e parceiros do Salesforce.
Para se familiarizar com os recursos e opções de integração disponíveis para a adoção em grande escala de aplicativos baseados no Salesforce, leia o Resumo do padrão e o Guia de seleção de padrão. Arquitetos e desenvolvedores devem considerar esses detalhes do padrão e práticas recomendadas durante a fase de design e implementação de um projeto de integração do Salesforce.
Se implementados adequadamente, esses padrões permitem que você entre na produção o mais rápido possível e tenha o conjunto de aplicativos mais estável, escalonável e livre de manutenção possível. Os próprios arquitetos de consultoria do Salesforce usam esses padrões como pontos de referência durante revisões de arquitetura e os mantêm e melhoram ativamente.
Como acontece com todos os padrões, esse conteúdo abrange a maioria dos cenários de integração, mas não todos. Embora o Salesforce permita a integração da interface do usuário (UI), por exemplo, mashups, essa integração está fora do escopo desse documento.
Modelo de padrão
Cada padrão de integração segue uma estrutura consistente. Isso proporciona consistência nas informações fornecidas em cada padrão e também facilita a comparação de padrões.
Nome
O identificador de padrão que também indica o tipo de integração contido no padrão.
Contexto
O cenário geral de integração que o padrão aborda. O contexto fornece informações sobre o que os usuários estão tentando realizar e como o aplicativo se comportará para dar suporte aos requisitos.
Problema
O cenário ou problema (expresso como uma pergunta) para o qual o padrão foi projetado. Ao revisar os padrões, leia esta seção para entender rapidamente se o padrão é adequado para seu cenário de integração.
Forças
As restrições e circunstâncias que tornam o cenário declarado difícil de resolver.
Solução
A maneira recomendada de resolver o cenário de integração.
Esboço
Um diagrama de sequência UML que mostra como a solução lida com o cenário.
Resultados
Explica os detalhes de como aplicar a solução ao seu cenário de integração e como ela resolve as forças associadas a esse cenário. Esta seção também contém novos desafios que podem surgir como resultado da aplicação do padrão.
Barra lateral
Seções adicionais relacionadas ao padrão que contêm os principais problemas técnicos, variações do padrão, preocupações específicas do padrão e assim por diante.
Exemplo
Um cenário de ponta a ponta que descreve como o padrão de design é usado em um cenário do Salesforce do mundo real. O exemplo explica as metas de integração e como implementar o padrão para atingir essas metas.
Resumo do padrão
A tabela a seguir lista os padrões de integração contidos neste documento.
Lista de padrões remote-process-invocation--request-and-reply
| Padrões | Cenário |
|---|---|
| Invoque processo remoto – Solicitação e resposta | O Salesforce chama um processo em um sistema remoto, espera a conclusão desse processo e então rastreia o estado com base na resposta do sistema remoto. |
| Invocation de processo remoto – Acionar e esquecer | O Salesforce chama um processo em um sistema remoto, mas não espera a conclusão do processo. Em vez disso, o processo remoto recebe e confirma a solicitação e então retorna o controle ao Salesforce. |
| Sincronização de dados em lote | Os dados armazenados na Plataforma do Lightning são criados ou atualizados para refletir atualizações de um sistema externo e quando as alterações da Plataforma do Lightning são enviadas para um sistema externo. As atualizações em qualquer uma das direções são feitas em lote. |
| Chamada remota | Os dados armazenados na Salesforce Platform são criados, recuperados, atualizados ou excluídos por um sistema remoto. |
| Atualização de UI com base em alterações de dados | A interface do usuário do Salesforce deve ser atualizada automaticamente como resultado de alterações nos dados do Salesforce. |
| Virtualização de dados | O Salesforce acessa dados externos em tempo real. Isso elimina a necessidade de persistir dados no Salesforce e então reconciliar os dados entre o Salesforce e o sistema externo. |
Abordagem padrão
Os padrões de integração neste documento são classificados em três categorias:
-
Integração de dados – Esses padrões atendem ao requisito de sincronizar dados que residem em dois ou mais sistemas para que ambos os sistemas sempre contenham dados oportunos e significativos. A integração de dados costuma ser o tipo mais simples de integração a ser implementado, mas requer técnicas adequadas de gerenciamento de informações para tornar a solução sustentável e econômica. Essas técnicas geralmente incluem aspectos de gerenciamento de dados mestre (MDM), governança de dados, domínio, desduplicação, design de fluxo de dados e outros.
-
Integração de processos – Os padrões nesta categoria lidam com a necessidade de um processo de negócios aproveitar dois ou mais aplicativos para concluir sua tarefa. Quando você implementa uma solução para esse tipo de integração, o aplicativo acionador precisa chamar outros aplicativos nos limites do processo. Geralmente, esses padrões também incluem orquestração (em que um aplicativo é o "controlador central") e coreografia (em que os aplicativos são de vários participantes e não há um "controlador central"). Essas integrações geralmente exigem requisitos complexos de design, teste e tratamento de exceções. Além disso, esses aplicativos compostos costumam ser mais exigentes nos sistemas subjacentes, pois geralmente dão suporte a transações de execução longa e a capacidade de gerar ou relatar o estado do processo.
-
Integração virtual – Os padrões nesta categoria tratam da necessidade de um usuário visualizar, pesquisar e modificar dados armazenados em um sistema externo. Quando você implementa uma solução para esse tipo de integração, o aplicativo acionador precisa chamar outros aplicativos e interagir com seus dados em tempo real. Esse tipo de integração elimina a necessidade de replicação de dados entre sistemas e significa que os usuários sempre interagem com os dados mais atuais.
Escolher a melhor estratégia de integração para seu sistema não é trivial. Há muitos aspectos a serem considerados e muitas ferramentas que podem ser usadas, sendo que algumas ferramentas são mais adequadas do que outras para determinadas tarefas. Cada padrão aborda áreas críticas específicas, incluindo os recursos de cada um dos sistemas, o volume de dados, o tratamento de falhas e a transacionalidade.
Guia de seleção de padrão
As tabelas de matriz de seleção listam os padrões e seus principais aspectos para ajudá-lo a determinar qual padrão atende melhor aos seus requisitos de integração. Os padrões são categorizados usando estas dimensões.
| Aspecto | Descrição |
|---|---|
| Tipo | Especifica o estilo de integração: Processamento, Dados ou Virtual.
|
| Tempo | Especifica o estilo de integração: Processamento, Dados ou Virtual.
|
Integrar o Salesforce com outro sistema
Esta tabela lista os padrões e seus principais aspectos para ajudá-lo a determinar qual padrão atende melhor aos seus requisitos quando sua integração é do Salesforce para outro sistema.
| Tipo | Tempo | Padrão principal a considerar |
|---|---|---|
| Integração de processos | Síncrono | Invoque processo remoto – Solicitação e resposta |
| Integração de processos | Assíncrono | Invocation de processo remoto – Acionar e esquecer |
| Integração de dados | Síncrono | Invoque processo remoto – Solicitação e resposta |
| Integração de dados | Assíncrono | Atualização de UI com base em alterações de dados |
| Integração virtual | Síncrono | Virtualização de dados |
Integrando outro sistema ao Salesforce
Esta tabela lista os padrões e seus principais aspectos para ajudá-lo a determinar o padrão mais adequado aos seus requisitos quando sua integração for de outro sistema para o Salesforce.
| Tipo | Tempo | Padrão principal a considerar |
|---|---|---|
| Integração de processos | Síncrono | Chamada remota |
| Integração de processos | Assíncrono | Chamada remota |
| Integração de dados | Síncrono | Chamada remota |
| Integração de dados | Assíncrono | Sincronização de dados em lote |
Termos e definições do Middleware
Esta tabela lista alguns termos-chave relacionados ao middleware e suas definições com relação a esses padrões.
| Termo | Definição |
|---|---|
| Manipulação de evento | A manipulação de evento é o recibo de uma ocorrência identificável em um destinatário designado ("provedor"). Os principais processos envolvidos na manipulação de eventos incluem:
Lembre-se de que o manipulador de eventos pode encaminhar o evento a um consumidor de evento. Os usos comuns desse recurso com middleware podem ser estendidos para incluir a funcionalidade popular "publicar/assinar" ou "pub/sub". Em um cenário de publicação/assinatura, o middleware encaminha solicitações ou mensagens para assinantes de evento de dados ativos de editores de evento de dados ativos. Esses consumidores com ouvintes ativos então podem recuperar os eventos conforme eles são publicados. Em integrações do Salesforce que usam middleware, a camada de middleware assume o controle do processamento de eventos. Ele coleta todos os eventos relevantes, síncronos ou assíncronos, e gerencia a distribuição para todos os pontos de extremidade, incluindo o Salesforce. Como alternativa, esse recurso pode ser alcançado com a plataforma de mensagens corporativas do Salesforce usando o barramento de eventos com eventos de plataforma. |
| Conversão de protocolo | A conversão de protocolo geralmente é um aplicativo de software que converte o protocolo padrão ou proprietário de um dispositivo no protocolo adequado para outro dispositivo para alcançar a interoperabilidade. No contexto do middleware, a conectividade com um sistema de destino específico pode ser restrita por protocolo. Nesses casos, o formato da mensagem precisa ser convertido ou encapsulado no formato do sistema de destino, em que a carga útil pode ser extraída. Isso também é conhecido como tunnel. Como o Salesforce não oferece suporte à conversão de protocolo nativo, presume-se que esses requisitos sejam atendidos pela camada de middleware ou pelo ponto de extremidade. |
| Tradução e transformação | A transformação é a capacidade de mapear um formato de dados para outro para garantir a interoperabilidade entre os vários sistemas que estão sendo integrados. Em geral, o processo envolve reformatar mensagens a caminho para atender aos requisitos do remetente ou destinatário. Em casos mais complexos, um aplicativo pode enviar uma mensagem em seu próprio formato nativo e dois ou mais outros aplicativos podem receber uma cópia da mensagem em seu próprio formato nativo. As ferramentas de tradução e transformação intermediárias geralmente incluem a capacidade de criar fachadas de serviço para pontos de extremidade legados ou outros não padrão. Essas fachadas de serviço permitem que esses pontos de extremidade apareçam como endereçáveis para serviço. Com integrações do Salesforce, presume-se que esses requisitos sejam atendidos pela camada de middleware ou pelo ponto de extremidade. A transformação de dados pode ser codificada no Apex, mas não é recomendável por razões de manutenção e desempenho. |
| Enfileiramento e buffering | O enfileiramento e o buffering geralmente dependem da passagem de mensagens assíncronas, em vez de uma arquitetura de resposta da solicitação. Em sistemas assíncronos, as filas de mensagens fornecem armazenamento temporário quando o programa de destino está ocupado ou a conectividade é comprometida. Além disso, a maioria dos sistemas de middleware assíncronos fornece armazenamento persistente para fazer backup da fila de mensagens. O principal benefício de um processo de mensagens assíncronas é que, se o aplicativo de destinatário falhar por qualquer motivo, os remetentes poderão continuar sem ser afetados. As mensagens enviadas simplesmente se acumulam na fila de mensagens para processamento posterior quando o destinatário reinicia. O Salesforce fornece apenas o recurso de enfileiramento explícito na forma de mensagens de saída baseadas em fluxo de trabalho. Para fornecer a fila de mensagens verdadeira para outros cenários de integração, incluindo orquestração, coreografia do processo e qualidade do serviço, uma solução de middleware é necessária. |
| Protocolos de transporte síncronos | Os protocolos de transporte síncronos se referem a protocolos que dão suporte a atividades em que "um único thread no chamador envia a mensagem de solicitação, bloqueia para aguardar a mensagem de resposta e então processa a resposta....O thread de solicitação aguardando a resposta implica que há apenas uma solicitação pendente ou que o canal de resposta para essa solicitação é privado para esse thread". |
| Protocolos de transporte assíncrono | Os protocolos de transporte assíncronos se referem a protocolos de suporte a atividades em que "um encadeamento no chamador envia a mensagem da solicitação e configura um retorno para a resposta. Um thread separado escuta as mensagens de resposta. Quando uma mensagem de resposta chega, o encadeamento de resposta chama o retorno de chamada apropriado, que restaura o contexto do chamador e processa a resposta. Essa abordagem habilita várias solicitações pendentes para compartilhar um único segmento de resposta." |
| Roteamento de mediação | O roteamento de mediação é a especificação de um complexo "fluxo" de mensagens de componente para componente. Por exemplo, muitas soluções baseadas em middleware dependem de um sistema de fila de mensagens. Embora algumas implementações permitam que a lógica de roteamento seja fornecida pela própria camada de mensagens, outras dependem de aplicativos clientes para fornecer informações de roteamento ou permitir uma combinação de ambos os paradigmas. Nesses casos complexos, a mediação por parte do middleware simplifica o desenvolvimento, a integração e a validação. ordinator [Mediador] poderia garantir que a mensagem certa chegasse ao consumidor certo." |
| Orquestração de serviço e coreografia do processo | A coreografia do processo e a orquestração de serviço são cada uma das formas de "composição de serviço" em que qualquer número de pontos de extremidade e recursos está sendo coordenado.
A diferença entre coreografia e orquestração de serviço é:
Partes das coreografias de processos de negócios podem ser criadas em fluxos de trabalho do Salesforce ou usando Apex. Recomendamos que todas as orquestrações complexas sejam implementadas na camada de middleware devido a valores de tempo limite do Salesforce e limites do regulador, especialmente em soluções que exigem tratamento de transações verdadeiras. |
| Transacionalidade (criptografia, assinatura, entrega confiável, gerenciamento de transações) | A transacionalidade pode ser definida como a capacidade de dar suporte a transações globais que abrangem todas as operações necessárias em relação a cada recurso necessário. A transacionalidade implica o suporte de todas as quatro propriedades de ÁCID, atomicidade, consistência, isolamento e durabilidade, em que atomicidade garante resultados de tudo ou nada para a unidade de trabalho (transação).
Embora o Salesforce seja transacional em si mesmo, ele não pode participar de transações distribuídas ou transações iniciadas fora do Salesforce. Portanto, supõe-se que, para soluções que exigem transações complexas de vários sistemas, a transacionalidade e os mecanismos de reversão/compensação associados sejam implementados na camada de middleware. |
| Roteamento | O roteamento pode ser definido como especificar o fluxo complexo de mensagens de componente para componente. Em soluções modernas baseadas em serviços, esses fluxos de mensagens podem ser baseados em vários critérios, incluindo cabeçalho, tipo de conteúdo, regra e prioridade.
Com integrações do Salesforce, presume-se que esses requisitos sejam atendidos pela camada de middleware ou pelo ponto de extremidade. O roteamento de mensagens pode ser codificado no Apex, mas não é recomendável por razões de manutenção e desempenho. |
| Extrair, transformar e carregar | Extrair, transformar e carregar (ETL) se refere a um processo que envolve:
O Salesforce agora também oferece suporte à Captura de dados de alteração, que é a publicação de eventos de alteração que representam alterações em registros do Salesforce. Com a Captura de dados alterados, o cliente ou o sistema externo recebe alterações quase em tempo real dos registros do Salesforce. Com essas informações, o cliente ou o sistema externo pode sincronizar os registros correspondentes em um repositório de dados externo. |
| Pesquisa longa | A pesquisa longa, também chamada de programação de Cometa, emula um envio de informações de um servidor para um cliente. Assim como uma pesquisa normal, o cliente conecta e solicita informações do servidor. No entanto, em vez de enviar uma resposta vazia se as informações não estiverem disponíveis, o servidor contém a solicitação e espera até que as informações estejam disponíveis (um evento ocorre). O servidor então envia uma resposta completa ao cliente. O cliente então solicita novamente as informações imediatamente. O cliente mantém continuamente uma conexão com o servidor, portanto, ele está sempre esperando receber uma resposta. Se o tempo limite do servidor expirar, o cliente se conectará novamente e recomeçará. A API de streaming do Salesforce usa o protocolo Bayeux e CometD para pesquisas longas.
|
Contexto
Você usa o Salesforce para rastrear leads, gerenciar seu pipeline, criar oportunidades e capturar detalhes do pedido que convertem leads em clientes. Porém, o sistema do Salesforce não contém nem processa pedidos. Depois que os detalhes do pedido são capturados no Salesforce, o pedido é criado no sistema remoto, que gerencia o pedido até a conclusão.
Quando você implementa esse padrão, o Salesforce chama o sistema remoto para criar o pedido e espera a conclusão bem-sucedida. Se bem-sucedido, o sistema remoto responderá de modo síncrono com o status do pedido e o número do pedido. Como parte da mesma transação, o Salesforce atualiza o número e o status do pedido internamente. O número do pedido é usado como uma chave estrangeira para atualizações subsequentes ao sistema remoto.
Problema
Quando ocorre um evento no Salesforce, como você inicia um processo em um sistema remoto, passa as informações necessárias para esse processo, recebe uma resposta do sistema remoto e então usa esses dados de resposta para fazer atualizações no Salesforce?
Forças
Considere as seguintes forças ao aplicar soluções com base nesse padrão.
- A chamada ao sistema remoto exige que o Salesforce espere uma resposta antes de continuar o processamento? A chamada para o sistema remoto é uma solicitação-resposta síncrona ou uma solicitação assíncrona?
- Se a chamada para o sistema remoto for síncrona, o Salesforce precisará processar a resposta como parte da mesma transação que a chamada inicial?
- O tamanho da mensagem é pequeno ou grande?
- A integração é baseada na ocorrência de um evento específico, como um clique em um botão na interface do usuário do Salesforce, ou em eventos baseados em DML?
- O ponto de extremidade remoto é capaz de responder à solicitação com baixa latência? Quantos usuários provavelmente executarão essa transação durante um período de pico?
Solução
Esta tabela contém soluções para esse problema de integração.
| Solução | Ajuste | Comentários |
|---|---|---|
| Serviços externos chamam uma chamada à API REST | Melhor | Os Serviços externos permitem que você chame um serviço hospedado externamente de maneira declarativa (nenhum código necessário). Esse recurso é melhor usado quando as seguintes condições são atendidas:
|
| Salesforce Lightning – Componente ou página do Lightning inicia uma chamada síncrona do Apex REST ou SOAP.</ Se o ponto de extremidade remoto apresentar um risco de resposta de alta latência (consulte a documentação de limites mais recentes para os limites aplicáveis aqui), recomenda-se uma chamada assíncrona, também chamada de continuação, para evitar atingir os limites do regulador de transações síncronas do Apex. |
Melhor | O Salesforce permite que você consuma um WSDL e gere uma classe do Apex proxy resultante. Essa classe fornece a lógica necessária para chamar o serviço remoto. O Salesforce também permite que você chame serviços HTTP (REST) usando os métodos padrão GET, POST, PUT e DELETE. Uma ação iniciada pelo usuário em uma página do Lightning então chama uma ação do controlador do Apex que então executa essa classe do Apex proxy para realizar a chamada remota. Páginas do Lightning exigem personalização do aplicativo Salesforce. |
| Um acionador síncrono que é chamado de alterações de dados do Salesforce executa uma chamada SOAP ou HTTP assíncrona do Apex. | Suboptimal | Você pode usar acionadores do Apex para realizar automação com base em alterações de dados de registro. Uma classe proxy do Apex pode ser executada como resultado de uma operação DML usando um acionador do Apex. No entanto, todas as chamadas feitas no contexto do acionador devem ser executadas de modo assíncrono a partir do evento de início. Portanto, essa solução não é recomendada para esse problema de integração. Essa solução é mais adequada para o padrão Invocação de processo remoto – acionar e esquecer. |
| Um trabalho do Apex em lote executa uma chamada SOAP ou HTTP síncrona do Apex. | Suboptimal | Você pode fazer chamadas a um sistema remoto de um trabalho em lote. Essa solução permite a execução de processo remoto em lote e o processamento da resposta do sistema remoto no Salesforce. No entanto, um determinado lote tem limites ao número de chamadas. Para obter mais informações, consulte Limites do governador. Uma determinada execução em lote pode executar vários contextos de transação (geralmente em intervalos de 200 registros). Os limites do controlador são redefinidos por contexto da transação. |
Esboço
Este diagrama ilustra uma invocação de processo remoto síncrono usando chamadas do Apex.
A Salesforce está ligando para um sistema remoto
Neste cenário:
- Uma ação é iniciada na página do Lightning (por exemplo, um clique de botão).
- O navegador (por meio de um controlador do lado do cliente no caso de um componente do Lightning) executa um POST HTTP que, por sua vez, executa uma ação no controlador Apex correspondente.
- O controlador chama a chamada real para o serviço remoto da Web.
- A resposta do sistema remoto é devolvida ao controlador do Apex. O controlador processa a resposta, atualiza os dados no Salesforce conforme necessário e renderiza novamente a página.
Nos casos em que o estado subsequente deve ser rastreado, o sistema remoto retorna um identificador exclusivo armazenado no registro do Salesforce.
Resultados
A aplicação das soluções relacionadas a esse padrão permite chamadas de processo remoto iniciadas por evento em que o Salesforce lida com o processamento.
Mecanismos de chamada
O mecanismo de chamada depende da solução escolhida para implementar esse padrão.
| Mecanismo de chamada | Descrição |
|---|---|
| Serviço externo aprimorado integrado a um fluxo ou Componente do Lightning ou Controladores do Apex |
Usado quando o processo remoto é acionado como parte de um processo de ponta a ponta envolvendo a interface do usuário e o resultado deve ser exibido ou atualizado em um registro do Salesforce. Por exemplo, o envio de um pagamento por cartão de crédito para um gateway de pagamento externo e os resultados do pagamento são imediatamente retornados e exibidos ao usuário. |
| Acionadores do Apex | Usado principalmente para invocar processos remotos usando chamadas do Apex de eventos iniciados por DML. Para obter mais informações sobre esse mecanismo de chamada, consulte padrão Invocação de processo remoto – Acionar e esquecer. |
| Classes em lote do Apex | Usado para invocação de processos remotos em lote. Para obter mais informações sobre esse mecanismo de chamada, consulte padrão Invocação de processo remoto – Acionar e esquecer. |
Manuseio e recuperação de erros
É importante incluir uma estratégia de tratamento e recuperação de erros como parte da solução geral.
-
Tratamento de erros – quando ocorre um erro (exceções ou códigos de erro são retornados ao chamador), o chamador gerencia o tratamento de erros. Por exemplo, uma mensagem de erro exibida na página do usuário final ou registrada em uma tabela que requer mais ação.
-
Recuperação – as alterações não são confirmadas no Salesforce até que o chamador receba uma resposta bem-sucedida. Por exemplo, o status do pedido não é atualizado no banco de dados até que uma resposta que indica sucesso seja recebida. Se necessário, o chamador pode tentar a operação novamente.
Considerações sobre design idempotente
Os recursos idempotentes garantem que as invocações repetidas sejam seguras. Se idempotency não for implementado, as invocações repetidas da mesma mensagem poderão ter resultados diferentes, possivelmente resultando em problemas de integridade dos dados. Possíveis problemas incluem a criação de registros duplicados ou o processamento duplicado de transações.
É importante garantir que o procedimento remoto que está sendo chamado seja idempotente. Se a chamada for feita pela interface do usuário, precisaremos cuidar da idempotência na camada de integração, especialmente se não houver garantia de que o Salesforce ligará apenas uma vez.
O método mais típico de criar um destinatário idempotente é rastrear duplicados com base em identificadores de mensagem exclusivos enviados pelo consumidor. O serviço da Web do Apex ou as chamadas REST devem ser personalizadas para enviar um ID de mensagem exclusivo.
Além disso, operações que criam registros no sistema remoto devem verificar itens duplicados antes de inserir. Verifique passando um ID de registro exclusivo do Salesforce. Se o registro existir no sistema remoto, atualize o registro. Na maioria dos sistemas, essa operação é chamada de operação de inserção e atualização.
Considerações de segurança
Qualquer chamada a um sistema remoto deve manter a confidencialidade, a integridade e a disponibilidade da solicitação. As seguintes considerações de segurança são específicas para usar chamadas SOAP e HTTP do Apex nesse padrão.
-
O SSL unidirecional é habilitado por padrão, mas o SSL bidirecional tem suporte com certificados autoassinados e assinados por CA para manter a autenticidade do cliente e do servidor.
-
Para simplificar seu Apex code e simplificar a configuração de chamadas autenticadas, especifique uma credencial nomeada no ponto final de chamada.
-
Considere o uso do OAUTH 2.0 como o mecanismo de autenticação para integração a sistemas externos.
-
Quando necessário, considere usar hashs unidirecionais ou assinaturas digitais usando os métodos de classe do Apex Crypto para garantir a integridade da solicitação.
-
O sistema remoto deve ser protegido implementando os mecanismos de firewall adequados. Consulte Considerações de segurança.
-
No momento, o Salesforce não oferece suporte à Segurança de WS. Embora não gere nativamente esses cabeçalhos complexos do WS-Security ou os imponha automaticamente a partir de um WSDL recebido, você pode construí-los e implementá-los manualmente criando classes do Apex personalizadas para lidar com os cabeçalhos SOAP e tokens de segurança para solicitações recebidas.
Barra lateral
Nenhum.
Tempo
A pontualidade é de importância significativa nesse padrão. Geralmente:
- A solicitação geralmente é invocada na interface do usuário, portanto, o processo não deve manter o usuário esperando.
- O Salesforce tem um tempo limite configurável de até 120 segundos para chamadas do Apex.
- A conclusão do processo remoto é executada de modo oportuno para ser concluída dentro do limite de tempo limite do Salesforce e dentro das expectativas do usuário.
- Chamadas externas estão sujeitas aos limites do regulador de transações síncronas do Apex, portanto, certifique-se de reduzir o risco de instanciar mais de 50 transações que sejam executadas por mais de cinco segundos cada. Além de garantir o desempenho do ponto de extremidade externo, as opções para mitigar o risco de um tempo limite incluem:
- Definir o tempo limite da chamada externa para cinco segundos.
- Usar uma continuação em componentes do Lightning para lidar com transações de execução longa
Volumes de dados
Esse padrão é usado principalmente para atividades em tempo real de pequeno volume, devido aos pequenos valores de tempo limite e tamanho máximo da solicitação ou resposta para a solução de chamada do Apex. Não use esse padrão em atividades de processamento em lote em que a carga de dados está contida na mensagem.
Capacidade de ponto de extremidade e suporte a padrões
A funcionalidade e o suporte padrão para o ponto de extremidade dependem da solução escolhida.
| Solução | Considerações sobre ponto de extremidade |
|---|---|
| Chamadas HTTP do Apex | O ponto de extremidade deve ser capaz de receber chamadas HTTP. O Salesforce deve poder acessar o ponto de extremidade pela Internet pública. Para comunicações privadas e seguras, a Salesforce agora também começou a dar suporte à conexão privada do Salesforce por meio da plataforma Hyperforce com segurança. Consulte Salesforce Private Connect para obter mais detalhes.
Você pode usar chamadas HTTP do Apex para chamar serviços REST usando os métodos padrão GET, POST, PUT, DELETE e PATCH. |
| Chamadas SOAP do Apex | O ponto de extremidade deve ser capaz de receber chamadas HTTP. O Salesforce deve poder acessar o ponto de extremidade pela Internet pública. Para comunicações privadas e seguras, a Salesforce agora também começou a dar suporte à conexão privada do Salesforce por meio da plataforma Hyperforce com segurança. Consulte Salesforce Private Connect para obter mais detalhes.
Essa solução exige que o sistema remoto seja compatível com os padrões compatíveis com o Salesforce. No momento da redação, os padrões de serviço da Web compatíveis com o Salesforce para chamadas SOAP do Apex são:
|
Gestão do Estado
Ao integrar sistemas, as chaves são importantes para o rastreamento de estado contínuo. Há duas opções.
- O Salesforce armazena a chave de substituição primária ou exclusiva do sistema remoto para o registro remoto.
- O sistema remoto armazena o ID de registro exclusivo do Salesforce ou alguma outra chave substituto exclusiva.
Há considerações específicas para lidar com chaves de integração, dependendo do sistema que contém o registro mestre, conforme mostrado na tabela a seguir.
| Mestre | Sistema Descrição |
|---|---|
| Salesforce | O sistema remoto armazena o Salesforce RecordId ou alguma outra chave substituto exclusiva do registro. |
| Sistema remoto | A chamada ao processo remoto retorna a chave exclusiva do aplicativo e o Salesforce armazena esse valor de chave em um campo de registro exclusivo. |
Cenários de integração complexos
Em determinados casos, a solução prescrita por esse padrão pode exigir a implementação de vários cenários de integração complexos. Isso é melhor atendido usando middleware ou fazendo a chamada do Salesforce para um serviço composto. Esses cenários incluem:
- Orquestração de processos de negócios e regras envolvendo lógica de fluxo complexa
- Agregação de chamadas e seus resultados entre chamadas para vários sistemas
- Transformação de mensagens de entrada e de saída
- Manter a integridade transacional em chamadas para vários sistemas
Limites do governador
Para obter informações sobre limites do Apex, consulte Controladores e limites de execução no Guia do desenvolvedor do Apex.
Capacidades do Middleware
A tabela a seguir destaca as propriedades desejáveis de um sistema de middleware que participa desse padrão.
| Propriedade | Obrigatório | Desejável | Não necessário |
|---|---|---|---|
| Manipulação de evento | X | ||
| Conversão de protocolo | X | ||
| Tradução e transformação | X | ||
| Enfileiramento e buffering | X | ||
| Protocolos de transporte síncronos | X | ||
| Protocolos de transporte assíncrono | X | ||
| Roteamento de mediação | X | ||
| Orquestração de serviço e coreografia do processo | X | ||
| Transacionalidade (criptografia, assinatura, entrega confiável, gerenciamento de transações) | X | ||
| Roteamento | X | ||
| Extrair, transformar e carregar | X | ||
| pesquisa longa | X |
Exemplo
Uma empresa de serviços públicos usa o Salesforce e tem um sistema separado que contém informações de faturamento do cliente. Como parte do processo de pedido, novas contas de faturamento devem ser criadas no sistema de faturamento e o Salesforce deve refletir o número da conta de faturamento no processo de ativação do pedido. Eles têm um serviço da Web existente que permite a criação de uma conta de faturamento e retorna o número da conta de faturamento como uma resposta.
Esse requisito pode ser cumprido com a seguinte abordagem.
- O Salesforce consome o serviço de conta de cobrança WSDL de uma classe proxy do Apex.
- Execute a classe proxy do Apex com as informações do cliente passadas para o serviço externo do Apex controlador personalizado ou serviço externo.
- O controlador personalizado então analisa os valores de retorno da chamada do Apex e armazena essas informações no objeto salesforce.
Este exemplo demonstra que:
- O estado do cliente é rastreado com um número de conta armazenado no objeto de conta do Salesforce.
- Processamento subsequente da mensagem de resposta pelo chamador
Contexto
Você usa o Salesforce para rastrear leads, gerenciar seu pipeline, criar oportunidades e capturar detalhes do pedido que convertem leads em clientes. No entanto, como parte dos processos de gerenciamento de pedidos, uma conta de faturamento precisa ser criada no sistema de faturamento para o pedido.
Quando você implementa esse padrão, o Salesforce chama o sistema remoto para criar a conta de faturamento, mas não espera a conclusão bem-sucedida da chamada. O sistema remoto também pode atualizar o Salesforce com a nova conta de faturamento criada em uma transação separada.
Problema
Quando ocorre um evento no Salesforce, como iniciar um processo em um sistema remoto e passar as informações necessárias para esse processo sem esperar uma resposta do sistema remoto?
Forças
Considere as seguintes forças ao aplicar soluções com base nesse padrão.
- A chamada ao sistema remoto exige que o Salesforce espere uma resposta antes de continuar o processamento? A chamada para o sistema remoto é síncrona ou assíncrona?
- Se a chamada para o sistema remoto for síncrona, a resposta precisará ser processada pelo Salesforce como parte da mesma transação que a chamada?
- O tamanho da mensagem é pequeno?
- A integração é baseada na ocorrência de um evento específico, como um clique em um botão na interface do usuário do Salesforce, ou em eventos baseados em DML?
- A entrega garantida de mensagens do Salesforce para o sistema remoto é um requisito?
- O sistema remoto pode participar de uma integração de contrato em primeiro lugar em que o Salesforce especifica o contrato? Em algumas variantes de solução (por exemplo, mensagens de saída), o Salesforce especifica um contrato que o ponto de extremidade do sistema remoto implementa.
- O ponto de extremidade ou o barramento de serviço Enterprise (ESB) oferecem suporte à pesquisa longa?
- Os métodos de configuração declarativa são preferíveis ao desenvolvimento personalizado do Apex? Neste caso, soluções como eventos de plataforma são preferidas às chamadas do Apex.
Solução
A tabela a seguir contém soluções para esse problema de integração.
| Solução | Ajuste | Comentários |
|---|---|---|
| Eventos de plataforma conduzidos por fluxo | Melhor | Crie fluxos declarativamente para implementar eventos de plataforma. A solução recomendada é quando o processo remoto é chamado de um evento de inserção ou atualização. Eventos de plataforma são as mensagens de evento (ou notificações) que seus aplicativos enviam e recebem para realizar mais ações. Os eventos de plataforma simplificam o processo de comunicar alterações e responder a elas sem escrever lógica complexa. Um ou mais assinantes podem ouvir o mesmo evento e realizar ações. Por exemplo, um sistema de software pode enviar eventos contendo informações sobre cartuchos de tinta de impressora. Os assinantes podem assinar os eventos para monitorar os níveis de tinta da impressora e fazer pedidos para substituir cartuchos com níveis baixos de tinta. Aplicativos externos podem ouvir mensagens de evento assinando um canal por meio do CometD. Aplicativos de plataforma, como componentes do Lightning, também podem assinar mensagens de evento com CometD. A API do Salesforce PubSub, que é baseada em gRPC e HTTP/2, também pode ser usada aqui. O Salesforce também oferece suporte a Fluxos acionados por evento de plataforma, que permitem, de modo eficaz, criar um ouvinte usando a interface do Flow Builder. Esse tipo de fluxo começa automaticamente quando uma mensagem de evento de plataforma específica é publicada no barramento de eventos do Salesforce. |
| API Pub/Sub | Melhor | A API Pub/Sub é a maneira recomendada para consumidores externos consumirem os eventos no barramento de eventos. A API Pub/Sub baseada em gRPC:
Depois que um evento de plataforma é definido no Salesforce, ele fica disponível para consumidores internos e externos. |
| Alterar captura de dados | Melhor | A Captura de dados de alteração (CDC) publica eventos para alterações em registros do Salesforce correspondentes a operações de criação, atualização, exclusão e cancelamento de exclusão. Habilitar a Captura de dados de alteração (CDC) no Salesforce é um processo puramente declarativo, sem exigir nenhum Apex code. As mensagens de notificação são enviadas ao barramento de eventos que os clientes podem assinar usando a API Pub/Sub ou acionadores do Apex. Os sistemas conduzidos por evento simplificam a comunicação entre sistemas corporativos distribuídos, aumentam a escalabilidade e entregam dados em tempo real. Por exemplo, se as informações do pedido residem em seu sistema ERP e no Salesforce, você pode transmitir eventos de alteração de pedido do Salesforce para um aplicativo de integração. O aplicativo então sincroniza as alterações no sistema ERP |
| Procedimentos de integração do OmniStudio | Bom | Use os Procedimentos de integração do OmniStudio para automatizar de modo declarativo as interações de dados entre o Salesforce e aplicativos externos de terceiros. Os procedimentos de integração lidam com transformações de dados complexas, chamadas à API e automação conduzida por evento e podem executar várias ações em uma única chamada do servidor. Use Procedimentos de integração quando nenhuma interação do usuário for necessária durante a execução e você quiser:
Confira mais detalhes sobre Procedimentos de integração aqui. |
| Eventos de plataforma conduzidos por personalização | Bom | Semelhante a eventos de plataforma acionados por fluxo, mas os eventos são criados por acionadores ou classes do Apex. Você pode publicar e consumir eventos de plataforma usando o Apex ou uma API. Os eventos de plataforma são integrados à plataforma Salesforce por meio de acionadores do Apex. Os acionadores são os consumidores de evento na Salesforce Platform que escutam mensagens de evento. Quando um aplicativo externo usa a API ou um aplicativo Salesforce nativo usa o Apex para publicar a mensagem do evento, um acionador nesse evento é disparado. Os acionadores executam as ações em resposta às notificações de evento. |
| Mensagens de saída conduzidas por fluxo | Ajuste | A solução recomendada para esse tipo de integração é quando o processo remoto é chamado de um evento de inserção ou atualização. O Salesforce fornece um recurso de mensagens de saída conduzido por fluxo que permite enviar mensagens SOAP a sistemas remotos acionados por uma operação de inserção ou atualização no Salesforce. Essas mensagens são enviadas de modo assíncrono e são independentes da interface de usuário do Salesforce. A mensagem de saída é enviada a um ponto de extremidade remoto específico. O serviço remoto deve poder participar de uma integração de contrato em primeiro lugar em que o Salesforce fornece o contrato. Ao receber a mensagem, se o serviço remoto não responder com uma confirmação positiva, o Salesforce tentará reenviar a mensagem, fornecendo uma forma de entrega garantida. |
| Componente personalizado do Lightning que inicia uma chamada assíncrona SOAP ou HTTP do Apex | Suboptimal | Essa solução geralmente é usada em cenários baseados na interface do usuário, mas requer personalização. Além disso, a solução deve lidar com a entrega garantida da mensagem no código. Semelhante à solução para a solução de padrão de invocação de processo remoto – Solicitar e responder que especifica o uso de um componente do Lightning, juntamente com uma chamada do Apex. A diferença é que, nesse padrão, o Salesforce não espera a conclusão da solicitação antes de entregar o controle ao usuário. Depois de receber a mensagem, o sistema remoto responde e indica o recebimento da mensagem, então processa a mensagem de modo assíncrono. O controle do sistema remoto retorna ao Salesforce antes de ele começar a processar a mensagem; portanto, o Salesforce não precisa esperar a conclusão do processamento. |
| Acionadores do Apex para fazer chamadas assíncronas SOAP ou HTTP do Apex | Suboptimal | Você pode usar acionadores do Apex para realizar automação com base em alterações de dados de registro. Uma classe proxy do Apex pode ser executada como resultado de uma operação DML usando um acionador do Apex. No entanto, todas as chamadas feitas no contexto do acionador devem ser executadas de modo assíncrono. |
| Acionadores do Apex para fazer chamadas assíncronas SOAP ou HTTP do Apex | Suboptimal | Chamadas a um sistema remoto podem ser realizadas de um trabalho em lote. Essa solução permite a execução do processo remoto em lote e o processamento da resposta do sistema remoto no Salesforce. No entanto, há limites ao número de chamadas para um determinado contexto de lote. Para obter mais informações, consulte a Referência rápida de alocações e limites do desenvolvedor do Salesforce.
|
Esboço
O diagrama a seguir ilustra uma chamada do Salesforce para um sistema remoto em que a criação ou atualização de operações em um registro aciona a chamada.
Neste cenário:
- Um sistema remoto assina o evento de plataforma.
- Uma atualização ou inserção ocorre em um determinado conjunto de registros no Salesforce.
- Um Fluxo do Salesforce é acionado quando um conjunto de condições é atendido.
- Esse fluxo cria um evento de plataforma.
- O ouvinte remoto recebe a mensagem do evento e a coloca em uma fila local.
- O aplicativo de enfileiramento encaminha a mensagem para o aplicativo remoto para processamento.
No caso de o sistema remoto precisar realizar operações em relação ao Salesforce, você pode implementar uma operação de retorno opcional.
Resultados
A aplicação das soluções relacionadas a esse padrão permite:
- Interface do usuário – invocações de processo remoto iniciadas em que o resultado da transação pode ser exibido ao usuário final
- Chamadas de processo remoto iniciadas por evento DML em que o resultado da transação pode ser processado pelo processo de chamada
Mecanismos de chamada
O mecanismo de chamada depende da solução escolhida para implementar esse padrão.
| Mecanismo de chamada | Descrição |
|---|---|
| Fluxo | Usado pelas soluções conduzidas por processo e por personalização. Os eventos acionam o processo do Salesforce, que então pode publicar um evento de plataforma para assinatura por um sistema remoto. |
| API Pub/Sub | A API Pub/Sub fornece uma única interface para publicar e assinar eventos de plataforma, incluindo eventos de monitoramento de evento em tempo real e eventos de captura de dados de alteração. Com base em gRPC e HTTP/2, a API Pub/Sub publica e entrega de modo eficiente mensagens de evento binárias no formato Apache Avro. |
| Alterar captura de dados | A Captura de dados de alteração do Salesforce publica eventos de alteração, que representam alterações nos registros do Salesforce. As alterações incluem a criação de um novo registro, atualizações em um registro existente, exclusão de um registro e cancelamento da exclusão de um registro. |
| Componente do Lightning e controladores do Apex | Usado para invocar um processo remoto de modo assíncrono usando uma chamada do Apex. |
| Mensagens de saída conduzidas por fluxo | Usado apenas para a solução de mensagens de saída. Eventos de criação e atualização de DML acionam as regras de fluxo de trabalho do Salesforce, que podem então enviar uma mensagem a um sistema remoto. |
| Acionadores do Apex | Usado para eventos de plataforma acionados por acionador e invocação de processos remotos, usando chamadas do Apex de eventos iniciados por DML. |
| Classes em lote do Apex | Usado para invocação de processos remotos no modo de lote. |
Manuseio e recuperação de erros
Uma estratégia de tratamento e recuperação de erros deve ser considerada como parte da solução geral. O melhor método depende da solução escolhida.
| Solução | Tratamento de erros e estratégia de recuperação |
|---|---|
| Fluxo |
|
| Chamadas do Apex |
|
| Captura de dados de alteração (CDC) / Eventos de plataforma |
|
Considerações sobre design idempotente
Os eventos de plataforma são publicados no barramento apenas uma vez. Não há nova tentativa no lado do Salesforce. Cabe ao ESB solicitar que os eventos sejam reproduzidos. Em uma reprodução, o ID de reprodução do evento de plataforma permanece o mesmo e o ESB pode tentar mensagens duplicadas com base no ID de reprodução.
A idempotência é importante para mensagens de saída porque é assíncrona e as novas tentativas são iniciadas quando nenhuma confirmação positiva é recebida. Portanto, o serviço remoto deve poder lidar com mensagens do Salesforce de maneira idempotente.
As mensagens de saída enviam um ID exclusivo por mensagem e esse ID permanece o mesmo para qualquer nova tentativa. O sistema remoto pode rastrear mensagens duplicadas com base nesse ID exclusivo. O ID de registro exclusivo para cada registro sendo atualizado também é enviado e pode ser usado para evitar a criação de registros duplicados.
As considerações de design idempotente no padrão Invocação de processo remoto – Solicitação e resposta também se aplicam a esse padrão.
Considerações de segurança
Qualquer chamada a um sistema remoto deve manter a confidencialidade, a integridade e a disponibilidade da solicitação. Diferentes considerações de segurança se aplicam, dependendo da solução escolhida.
| Solução | Considerações de segurança |
|---|---|
| Chamadas do Apex | Uma chamada a um sistema remoto deve manter a confidencialidade, a integridade e a disponibilidade da solicitação. A seguir estão as considerações de segurança específicas ao usar chamadas SOAP e HTTP do Apex nesse padrão.
|
| Captura de dados de alteração (CDC) / Eventos de plataforma | Para eventos de plataforma, o sistema externo assinante deve poder se autenticar na API de streaming do Salesforce. Os eventos de plataforma estão de acordo com o modelo de segurança existente configurado na organização do Salesforce. Para assinar um evento, o usuário precisa de acesso de leitura à entidade do evento. Para publicar um evento, o usuário precisa da permissão "criar" na entidade do evento. |
Consulte Considerações de segurança.
Barra lateral
Nenhum.
Tempo
A pontualidade é menos um fator com o padrão de incêndio e esquecimento. O controle é devolvido ao cliente imediatamente ou após uma confirmação positiva de uma transferência bem-sucedida para o sistema remoto. Com as mensagens de saída do Salesforce, a confirmação deve ocorrer dentro de 24 horas (isso pode ser estendido para sete dias); caso contrário, a mensagem expira. Para eventos de plataforma, o Salesforce envia os eventos ao barramento de eventos e não espera uma confirmação ou confirmação do assinante. Se o assinante não selecionar a mensagem, ele poderá solicitar a reprodução do evento usando o ID de resposta do evento. Mensagens de evento de alto volume são armazenadas por 72 horas (três dias). Para recuperar mensagens de evento anteriores, use clientes CometD para assinar um canal.
Volumes de dados
As considerações sobre o volume de dados dependem da solução escolhida. Para os limites de cada solução, consulte a Referência rápida de limites do Salesforce.
Capacidade de ponto de extremidade e suporte a padrões
A funcionalidade e o suporte padrão para o ponto de extremidade dependem da solução escolhida.
| Solução | Considerações sobre ponto de extremidade |
|---|---|
| Chamadas SOAP do Apex | O ponto de extremidade deve ser capaz de processar uma chamada de serviço da Web por HTTP. O Salesforce deve poder acessar o ponto de extremidade pela Internet pública. Essa solução exige que o sistema remoto seja compatível com os padrões compatíveis com o Salesforce. No momento da redação, os padrões de serviço da Web compatíveis com o Salesforce para chamadas SOAP do Apex são:
|
| Chamadas HTTP do Apex | O ponto de extremidade deve poder receber chamadas HTTP e estar acessível pela Internet pública pelo Salesforce. As chamadas HTTP do Apex podem ser usadas para chamar serviços RESTful usando os métodos padrão GET, POST, PUT e DELETE. |
| Captura de dados de alteração (CDC) / Eventos de plataforma |
|
Gestão do Estado
Ao integrar sistemas, identificadores de registro exclusivos são importantes para rastreamento de estado contínuo. Por exemplo, se um registro for criado no sistema remoto, você terá duas opções.
- O Salesforce armazena a chave de substituição primária ou exclusiva do sistema remoto para o registro remoto.
- O sistema remoto armazena o ID de registro exclusivo do Salesforce ou alguma outra chave substituto exclusiva.
A tabela a seguir lista as considerações para gerenciamento de estado nesse padrão.
| Mestre | Sistema Descrição |
|---|---|
| Salesforce | O sistema remoto deve armazenar o RecordId do Salesforce ou alguma outra chave substituto exclusiva no registro do Salesforce. |
| Sistema remoto | O Salesforce deve armazenar uma referência ao identificador exclusivo no sistema remoto. Como o processo é assíncrono, armazenar esse identificador exclusivo não pode fazer parte da transação original. O Salesforce deve fornecer um ID exclusivo na chamada para o processo remoto. O sistema remoto então deve voltar a chamar o Salesforce para atualizar o registro no Salesforce com o identificador exclusivo do sistema remoto, usando o ID exclusivo do Salesforce. O retorno de chamada implica o tratamento de estado específico no aplicativo remoto para armazenar o identificador exclusivo do Salesforce para essa transação usar para o retorno de chamada quando o processamento estiver concluído ou o identificador exclusivo do Salesforce for armazenado no registro do sistema remoto. |
Cenários de integração complexos
Cada solução nesse padrão tem considerações diferentes para cenários de integração complexos, como transformação e orquestração de processo.
| Solução | Considerações |
|---|---|
| Chamadas do Apex | Em determinados casos, as soluções prescritas por esse padrão exigem a implementação de vários cenários de integração complexos mais bem atendidos usando o middleware ou fazendo com que o Salesforce chame um serviço composto. Esses cenários incluem:
|
| Captura de dados de alteração (CDC) / Eventos de plataforma | Dada a natureza estática e declarativa dos eventos, nenhum cenário de integração complexo, como agregação, orquestração ou transformação, pode ser realizado no Salesforce. O sistema remoto ou o middleware devem lidar com esses tipos de operações. |
| Procedimentos de integração do OmniStudio | Os Procedimentos de integração (OmniStudio) fornecem orquestração sem estado no lado do servidor para coordenar vários serviços de back-end enquanto realizam transformações de dados declarativas complexas. Procedimentos de integração encadeiam etapas como Ações HTTP, Extração/Transformação/carregamento do DataRaptor, Definir valores, Loop/If e Pesquisas de matriz para normalizar, aprimorar, agregar e mapear cargas úteis entre contratos de IU e APIs diferentes. Eles oferecem suporte a controles de tempo de execução robustos, como ramificação condicional, paginação, tempos limite, novas tentativas, tratamento de falha parcial e continuidade no erro, bem como otimizações de desempenho, como armazenamento em cache no lado do servidor e modelagem de resposta. Os IPs podem ser chamados de modo síncrono de OmniScripts ou de modo autônomo por meio do REST, habilitando "façadas de integração" reutilizáveis com controle de versão que ocultam a complexidade de back-end dos canais. |
Limites do governador
Devido à natureza multilocatário da Salesforce Platform, há limites para chamadas de saída. Os limites dependem do tipo de chamada de saída e do momento da chamada.
Para ver os limites e as alocações que se aplicam a eventos de plataforma, consulte o Guia do desenvolvedor de eventos de plataforma.
Mensagens confiáveis
Mensagens confiáveis tentam resolver o problema de garantir a entrega de uma mensagem a um sistema remoto em que os componentes individuais são não confiáveis. O método de garantir o recebimento de uma mensagem pelo sistema remoto depende da solução escolhida.
No caso da Captura de dados de alteração do Salesforce, os tipos de eventos de alteração são fornecidos para lidar com situações especiais, como capturar alterações não capturadas nos servidores de aplicativos do Salesforce ou lidar com grandes cargas de alterações.
Em alguns casos, o Salesforce envia eventos de Lacuna em vez de eventos de alteração para informar os assinantes sobre erros ou se não for possível gerar eventos de alteração. Um evento de lacuna contém informações sobre a alteração no cabeçalho, como o tipo de alteração e o ID do registro. Ele não inclui detalhes sobre a alteração, como campos de registro. Para capturar alterações com mais eficiência, eventos de sobrecarga são gerados para transações únicas que excedem um limite. Para mais informações, consulte aqui.
| Solução | Considerações sobre mensagens confiáveis |
|---|---|
| Chamadas do Apex | O Salesforce não oferece suporte explícito para protocolos de mensagens confiáveis (por exemplo, WS-ReliableMessaging). Recomendamos que o ponto de extremidade remoto que recebe a mensagem do Salesforce implemente um sistema de mensagens confiável, como JMS ou MQ. Esse sistema garante a entrega completa completa garantida ao sistema remoto que, por fim, processa a mensagem. No entanto, esse sistema não garante uma entrega garantida do Salesforce para o ponto de extremidade remoto que ele chama. A entrega garantida deve ser tratada por meio de personalizações para o Salesforce. Técnicas específicas, como processar uma confirmação positiva do ponto de extremidade remoto, além da lógica de nova tentativa personalizada, devem ser implementadas. |
| Captura de dados de alteração (CDC) / Eventos de plataforma | Os eventos de plataforma tentam fornecer mensagens confiáveis mantendo temporariamente mensagens de evento no barramento de eventos. Os assinantes podem acompanhar mensagens de evento perdidas repetindo mensagens do barramento de evento usando o ID de reprodução de mensagens de evento. O barramento de eventos é um sistema distribuído e não tem as mesmas garantias de um banco de dados transacional. Como resultado, o Salesforce não pode fornecer uma resposta síncrona para uma solicitação de publicação de evento. Os eventos são colocados em fila e particionados, e o Salesforce tenta publicar os eventos de maneira assíncrona. Em casos raros, a mensagem do evento pode não ser mantida no sistema distribuído durante as tentativas iniciais ou subsequentes. Isso significa que os eventos não são entregues aos assinantes e não são recuperáveis. |
Capacidades do Middleware
A tabela a seguir destaca as propriedades desejáveis de um sistema de middleware que participa desse padrão.
| Propriedade | Obrigatório | Desejável | Não necessário |
|---|---|---|---|
| Manipulação de evento | X | ||
| Conversão de protocolo | X | ||
| Tradução e transformação | X | ||
| Enfileiramento e buffering | X | ||
| Protocolos de transporte síncronos | X | ||
| Protocolos de transporte assíncrono | X | ||
| Roteamento de mediação | X | ||
| Orquestração de serviço e coreografia do processo | X | ||
| Transacionalidade (criptografia, assinatura, entrega confiável, gerenciamento de transações) | X | ||
| Roteamento | X | ||
| Extrair, transformar e carregar | X | ||
| pesquisa longa | X (obrigatório para eventos de plataforma) |
Variante de solução – Eventos de plataforma: Comportamento de publicação e transações
Quando as mensagens de evento de plataforma são publicadas imediatamente, a publicação do evento não respeita os limites da transação do processo de publicação. As mensagens de evento podem ser publicadas antes da conclusão da transação ou mesmo se uma transação falhar. Esse comportamento pode levar a problemas quando um assinante espera encontrar dados que a transação de publicação confirma. Os dados podem não estar presentes quando o assinante recebe a mensagem do evento. Para resolver esse problema, defina o comportamento de publicação de evento de plataforma como Publicar após confirmação na definição de evento. Os comportamentos de publicação que você pode definir em uma definição de evento de plataforma são:
- Publique após a confirmação para que a mensagem do evento seja publicada apenas depois que uma transação for confirmada com sucesso. Selecione essa opção se os assinantes dependem de dados que a transação de publicação confirma. Por exemplo, um processo publica uma mensagem de evento e cria um registro de tarefa. Um segundo processo que é assinado para o evento é acionado e espera localizar o registro da tarefa. Outro motivo para escolher esse comportamento é quando você não deseja que a mensagem do evento seja publicada se a transação falhar.
- Publicar imediatamente para que a mensagem do evento seja publicada quando a chamada de publicação for executada. Selecione essa opção se quiser que a mensagem do evento seja publicada independentemente do sucesso da transação. Também escolha essa opção se o editor e os assinantes forem independentes e os assinantes não dependerem de dados confirmados pelo editor. Por exemplo, o comportamento de publicação imediata é adequado para um evento usado para fins de registro. Com essa opção, um assinante pode receber a mensagem do evento antes que os dados sejam confirmados pela transação do editor.
Exemplo
Uma empresa de telecomunicações quer usar o Salesforce como um front-end para criar contas usando o processo de lead para oportunidade. Um pedido é criado no Salesforce quando a oportunidade é fechada e ganha, mas o sistema ERP de back-end é o mestre de dados. O pedido deve ser salvo no registro de oportunidade do Salesforce e o status da oportunidade mudou para indicar que o pedido foi criado.
As restrições a seguir se aplicam.
- Somente desenvolvimento declarativo pode ser implementado.
- Você não precisa de notificação imediata do número do pedido depois que a oportunidade é convertida em um pedido.
- A organização tem um ESB que dá suporte ao protocolo CometD e é capaz de assinar eventos de plataforma.
Esse exemplo é melhor implementado usando eventos de plataforma do Salesforce, mas exige que o ESB assine o evento de plataforma.
No lado do Salesforce:
- Crie um fluxo para iniciar o evento de plataforma (por exemplo, quando o status da oportunidade mudar para Fechar e ganho).
- Crie um novo evento de plataforma que publique os detalhes da oportunidade.
No lado do sistema remoto:
- O ESB assina o evento da plataforma Salesforce usando o protocolo CometD.
- O ESB recebe uma ou mais notificações indicando que a oportunidade deve ser convertida em um pedido.
- O ESB encaminha a mensagem para o sistema ERP de back-end para que o pedido possa ser criado.
- Depois que o pedido é criado no sistema ERP, um encadeamento separado chama de volta o Salesforce usando SessionId como o token de autenticação. O retorno atualiza a oportunidade com o número e o status do pedido. Você pode fazer esse retorno usando soluções de padrão documentadas, como eventos da plataforma Salesforce, API SOAP do Salesforce, API REST ou um serviço da Web do Apex.
Este exemplo demonstra o seguinte.
- Implementação de um processo remoto invocado de modo assíncrono
- Entrega garantida de ponta a ponta
- Retorno subsequente para o Salesforce para atualizar o estado do registro
Contexto
Você está movendo sua implementação do CRM para o Salesforce e quer:
- Extraia e transforme contas, contatos e oportunidades do sistema CRM atual e carregue os dados no Salesforce (importação inicial de dados).
- Extraia, transforme e carregue dados de faturamento do cliente no Salesforce de um sistema remoto semanalmente (em andamento).
- Extraia informações da atividade do cliente do Salesforce e importe-as para um armazém de dados no local semanalmente (em andamento).
Problema
Como você importa dados para o Salesforce e exporta dados do Salesforce, considerando que essas importações e exportações podem interferir nas operações do usuário final durante o horário comercial e envolver grandes quantidades de dados?
Forças
Há várias forças a serem consideradas ao aplicar soluções com base neste padrão:
- Os dados devem ser armazenados no Salesforce? Caso contrário, há outras opções de integração que um arquiteto pode e deve considerar (mashups, por exemplo).
- Se os dados precisarem ser armazenados no Salesforce, os dados deverão ser atualizados em resposta a um evento no sistema remoto?
- Os dados devem ser atualizados agendadamente?
- Os dados oferecem suporte a processos comerciais principais?
- Há requisitos de análise (relatórios) que são afetados pela disponibilidade desses dados no Salesforce?
Solução
A tabela a seguir contém várias soluções para esse problema de integração.
| Solução | Ajuste | Mestre de dados | Comentários |
|---|---|---|---|
| Replicação por meio da ferramenta ETL de terceiros | Melhor | Sistema remoto | Quando um sistema externo precisa enviar uma grande quantidade de dados para o Salesforce, aproveite uma ferramenta ETL de terceiros que permite executar a captura de dados de alteração em relação aos dados de origem. A ferramenta reage a alterações no conjunto de dados de origem, transforma os dados e chama a API em massa do Salesforce para emitir instruções DML. Isso também pode ser implementado usando as APIs REST do Salesforce se o número de registros for menor. |
| Replicação por meio da ferramenta ETL de terceiros | Bom | Salesforce | Aproveite uma ferramenta ETL de terceiros que permite executar a captura de dados de alteração em conjunto de dados do Salesforce e ERP. Nessa solução, o Salesforce é a fonte de dados, e você pode usar informações de tempo/status em linhas individuais para consultar os dados e filtrar o conjunto de resultados de destino. Isso pode ser implementado usando a API em massa 2.0 ou as APIs REST padrão (se o número de registros for menor ). |
| Assistente de importação de dados e Data Loader | Ajuste | Salesforce/Sistema externo | O Assistente de importação de dados e o Data Loader podem ser usados para importar, exportar e migrar dados. Embora os comandos do Data Loader também possam ser scriptados para automatizar a importação e exportação de dados, a interface de linha de comando é somente para Windows. Nenhuma dessas ferramentas é uma base recomendada para uma estratégia de integração de dados. Em vez disso, eles devem complementar sua estratégia de manutenção e gerenciamento de dados. Para obter mais informações sobre o Data Loader, consulte aqui. |
| Chamada remota | Suboptimal | Sistema remoto | É possível que um sistema remoto chame o Salesforce usando uma das APIs e faça atualizações nos dados conforme eles ocorrem. No entanto, isso causa um tráfego contínuo considerável entre os dois sistemas. Deve ser dada maior ênfase ao gerenciamento e bloqueio de erros. Esse padrão tem o potencial de causar atualizações contínuas, o que pode afetar o desempenho dos usuários finais. |
| Invocação de processo remoto | Suboptimal | Salesforce | É possível que o Salesforce chame um sistema remoto e realize atualizações nos dados conforme eles ocorrem. No entanto, isso causa um tráfego contínuo considerável entre os dois sistemas. Deve ser dada maior ênfase ao gerenciamento e bloqueio de erros. Esse padrão tem o potencial de causar atualizações contínuas, o que pode afetar o desempenho dos usuários finais. |
Esboço
O diagrama a seguir ilustra a sequência de eventos nesse padrão, em que o Salesforce é o mestre de dados.
O diagrama a seguir ilustra a sincronização subsequente de eventos quase em tempo real, em que o Salesforce é o mestre de dados.
Resultados
Você pode integrar dados adquiridos externamente ao Salesforce nos seguintes cenários:
- O sistema externo é o mestre de dados – o Salesforce é um consumidor de dados fornecidos por um único sistema de origem ou vários sistemas. Nesse cenário, é comum ter um armazém de dados ou um data mart que agrega os dados antes de os dados serem importados para o Salesforce.
- O Salesforce é o mestre de dados – o Salesforce é o sistema de registro para determinadas entidades e os aplicativos do cliente de Captura de dados de alteração do Salesforce podem ser informados sobre alterações nos dados do Salesforce.
Em um cenário típico de integração do Salesforce, a equipe de implementação realiza uma das seguintes ações:
- Implemente a captura de dados de alteração no conjunto de dados de origem.
- Implemente um conjunto de estruturas de banco de dados de suporte, conhecidas como tabelas de controle, em um banco de dados no local intermediário.
A ferramenta ETL então é usada para criar programas que:
- Leia uma tabela de controle para determinar o horário de última execução do trabalho e extrair quaisquer outros valores de controle necessários.
- Use os valores de controle acima como filtros e consulte o conjunto de dados de origem.
- Aplique regras de processamento predefinidas, incluindo validação, aprimoramento e assim por diante.
- Use os conectores/funcionalidades de transformação disponíveis da ferramenta ETL para criar o conjunto de dados de destino.
- Escreva o conjunto de dados em objetos do Salesforce.
- Se o processamento for bem-sucedido, atualize os valores de controle na tabela de controle.
- Se o processamento falhar, atualize as tabelas de controle com valores que permitem um novo início e uma saída.
Nota: Recomendamos que você crie as tabelas de controle e as estruturas de dados associadas em um ambiente ao qual a ferramenta ETL tem acesso mesmo que o acesso ao Salesforce não esteja disponível. Isso fornece níveis adequados de resiliência. O Salesforce deve ser tratado como um discurso nesse processo e a infraestrutura ETL é o centro.
Para que uma ferramenta ETL aproveite ao máximo os recursos de sincronização de dados, considere o seguinte:
- Encadeie e sequencie os trabalhos de ETL para proporcionar um processo coeso.
- Use chaves primárias de ambos os sistemas para corresponder os dados recebidos.
- Use métodos de API específicos para extrair apenas dados atualizados.
- Se estiver importando registros filho em um relacionamento entre mestre e detalhes ou de pesquisa, agrupe os dados importados usando sua chave pai na origem para evitar o bloqueio. Por exemplo, se você estiver importando dados de contato, agrupe os dados de contato pela chave da conta pai para que o número máximo de contatos para uma única conta possa ser carregado em uma chamada de API. A falha em agrupar os dados importados geralmente resulta em que o primeiro registro de contato está sendo carregado e os registros de contato subsequentes para essa conta falham no contexto da chamada de API.
- Qualquer processamento pós-importação, como acionadores, deve processar dados apenas de modo seletivo.
- Se o seu cenário envolver grandes volumes de dados, siga as práticas recomendadas deste módulo do Trailhead Práticas recomendadas para implantações com grandes volumes de dados .
Manuseio e recuperação de erros
Uma estratégia de tratamento e recuperação de erros deve ser considerada como parte da solução geral. O melhor método depende da solução escolhida.
| Local do erro | Tratamento de erros e estratégia de recuperação |
|---|---|
| Ler no Salesforce usando a Captura de dados de alteração |
|
| Ler no Salesforce usando um sistema ETL de terceiros |
|
| Escrever no Salesforce |
|
| Sistema mestre externo | Os erros devem ser tratados de acordo com as práticas recomendadas do sistema mestre. |
Considerações de segurança
Qualquer chamada a um sistema remoto deve manter a confidencialidade, a integridade e a disponibilidade da solicitação. Diferentes considerações de segurança se aplicam, dependendo da solução escolhida.
- É necessária uma licença da Plataforma do Lightning com pelo menos permissões de usuário "apenas API" para permitir o acesso de API autenticado à API do Salesforce.
- Recomendamos que a criptografia padrão seja usada para manter o acesso por senha seguro.
- Use o protocolo HTTPS ao fazer chamadas às APIs do Salesforce. Você também pode proxyar o tráfego para as APIs do Salesforce por meio de uma solução de segurança local, se necessário.
Consulte Considerações de segurança.
Barra lateral
Nenhum.
Tempo
A pontualidade não é de importância significativa nesse padrão. No entanto, é preciso ter cuidado para projetar as interfaces de modo que todos os processos em lote sejam concluídos em uma janela em lote designada.
Como acontece com todas as operações orientadas a lotes, recomendamos que você tenha cuidado para isolar os sistemas de origem e destino durante as janelas de processamento em lote. Carregar lotes durante o horário comercial pode resultar em alguma contenção, resultando na falha da atualização de um usuário ou, mais significativamente, na falha de uma carga de lote (ou carga de lote parcial).
Para organizações que têm operações globais, talvez não seja viável executar todos os processos em lote ao mesmo tempo, pois o sistema pode estar em uso continuamente. As técnicas de segmentação de dados que usam tipos de registro e outros critérios de filtragem podem ser usadas para evitar a contenção de dados nesses casos.
Gestão do Estado
Você pode implementar o gerenciamento de estado usando chaves substitutas entre os dois sistemas. Se você precisar de algum tipo de gerenciamento de transações entre entidades do Salesforce, recomendamos usar o padrão de Chamada remota usando o Apex.
O bloqueio de registro otimizado padrão ocorre na plataforma e quaisquer atualizações feitas usando a API exigem que o usuário, que está editando o registro, atualize o registro e inicie a transação. No contexto da API do Salesforce, o bloqueio otimizado se refere a um processo em que:
- O Salesforce não mantém o estado de um registro sendo editado por um usuário específico.
- Ao ler, ele registra a hora em que os dados foram extraídos.
- Se o usuário atualizar o registro e salvá-lo, o Salesforce verificará se outro usuário atualizou o registro no meio do tempo.
- Se o registro tiver sido atualizado, o sistema notificará o usuário de que uma atualização foi feita e o usuário deverá recuperar a versão mais recente do registro antes de prosseguir com as atualizações.
Capacidades do Middleware
As tecnologias externas mais eficazes usadas para implementar esse padrão são ferramentas ETL tradicionais. É importante que as ferramentas de middleware escolhidas ofereçam suporte à API em massa do Salesforce.
É útil, mas não essencial, que as ferramentas de middleware oferecem suporte à função getUpdated(). Essa função fornece a implementação mais próxima da captura de dados de alteração padrão na plataforma Salesforce.
A tabela a seguir destaca as propriedades desejáveis de um sistema de middleware que participa desse padrão.
| Propriedade | Obrigatório | Desejável | Não necessário |
|---|---|---|---|
| Manipulação de evento | X | ||
| Conversão de protocolo | X | ||
| Tradução e transformação | X | ||
| Enfileiramento e buffering | X | ||
| Protocolos de transporte síncronos | X | ||
| Protocolos de transporte assíncrono | X | ||
| Roteamento de mediação | X | ||
| Orquestração de serviço e coreografia do processo | X | ||
| Transacionalidade (criptografia, assinatura, entrega confiável, gerenciamento de transações) | X | ||
| Roteamento | X | ||
| Extrair, transformar e carregar | X | ||
| Pesquisa longa | X (necessário para captura de dados de alteração do Salesforce) |
Exemplo
Uma empresa de serviços públicos usa um processo em lote baseado em mainframe que atribui clientes potenciais a representantes e equipes de vendas individuais. Essas informações precisam ser importadas para o Salesforce diariamente.
O cliente decidiu implementar a captura de dados de alteração nas tabelas de origem usando uma ferramenta ETL comercialmente disponível. A solução funciona da seguinte maneira:
- Um agendador semelhante a cron executa um trabalho em lote que atribui clientes potenciais a usuários e equipes.
- Depois que o trabalho em lote é executado e os dados são atualizados, a ferramenta ETL reconhece essas alterações usando a captura de dados de alteração. A ferramenta ETL compara as alterações do armazenamento de dados.
- O conector ETL usa a API REST do Salesforce para carregar as alterações no Salesforce.
Contexto
Você usa o Salesforce para rastrear leads, gerenciar seu pipeline, criar oportunidades e capturar detalhes do pedido que convertem leads em clientes. O sistema do Salesforce cria os pedidos internamente e então envia esses dados para o sistema de faturamento externo para provisionamento e ativação. Os Pedidos de faturamento são gerenciados por um sistema externo (remote). Esse sistema remoto precisa atualizar o status do pedido no Salesforce quando o pedido ou a entidade de cobrança no status do sistema de cobrança mudar.
Problema
Como um sistema remoto se conecta e autentica com o Salesforce para notificar o Salesforce sobre eventos externos, criar registros e atualizar registros existentes?
Forças
Há várias forças a serem consideradas ao aplicar soluções com base neste padrão:
- O propósito da chamada remota ao Salesforce é notificar o Salesforce de um evento que ocorreu externamente usando uma arquitetura conduzida por evento? Ou o objetivo é realizar operações CRUD em registros específicos? Se você usar uma arquitetura acionada por evento, o produtor de evento (o processo remoto) será desacoplado do consumidor de evento do Salesforce.
- A chamada para o Salesforce exige que o processo remoto aguarde uma resposta antes de continuar o processamento? Chamadas remotas ao Salesforce sempre são solicitação-resposta síncrona, embora o processo remoto possa descartar a resposta se não for necessário para simular uma chamada assíncrona.
- Cada transação opera em um único objeto do Salesforce ou em vários objetos relacionados?
- Qual é o formato da mensagem (por exemplo, SOAP ou REST, ou ambos por HTTP)?
- O tamanho da mensagem é relativamente pequeno ou grande?
- Se o sistema remoto for compatível com SOAP, o sistema remoto poderá participar de uma abordagem de contrato em primeiro lugar, em que o Salesforce determina o contrato? Isso é necessário quando nossa API SOAP é usada, para a qual um WSDL predefinido é fornecido.
- O processamento da transação é obrigatório?
- Até que ponto você é tolerante à personalização no Salesforce?
Solução
Esta tabela contém várias soluções para esse problema de integração.
| Solução | Ajuste | Comentários |
|---|---|---|
| API composta | Melhor | O Salesforce fornece uma API composta que é basicamente uma API REST e oferece suporte a solicitações compostas. Isso pode ser usado por sistemas remotos para:
API síncrona – Depois que a chamada de API é feita, o aplicativo cliente remoto espera até receber uma resposta do serviço. Comportamento de transação/confirmação – Por padrão, a API composta não permite o sucesso parcial se alguns registros estiverem marcados com erros. Isso pode ser alterado marcando o sinalizador "tudo ou nada" como falso, o que permitirá o sucesso parcial. Manipulação de erros: O tratamento adequado de erros deve examinar o corpo da resposta, não apenas códigos de status HTTP. Um ponto de extremidade composto responde com 200 códigos de status HTTP mesmo que dentro do corpo da resposta ele mostre que uma das subsolicitações falhou e a transação precisou ser revertida. |
| API REST | Melhor | Acessibilidade – o Salesforce fornece uma API REST que os sistemas remotos podem usar para:
API síncrona – Depois que a chamada de API é feita, o aplicativo cliente remoto espera até receber uma resposta do serviço. A API REST respeita a segurança em nível de objeto e em nível de campo configurada no Salesforce com base no perfil do usuário conectado. O REST expõe recursos (entidades/objetos) como URIs e usa verbos HTTP para definir operações CRUD nesses recursos. Diferentemente de SOAP, a API REST não requer nenhum contrato predefinido, usa XML e JSON para respostas e tem digitação solta. A API REST é leve e fornece um método simples para interagir com o Salesforce. Suas vantagens incluem facilidade de integração e desenvolvimento, e é uma excelente opção para uso com aplicativos móveis e aplicativos da Web. Comportamento da transação/confirmação – Por padrão, cada registro é tratado como uma transação separada e confirmado separadamente. A falha em uma alteração de registro não causa reversão de outras alterações de registro. Esse comportamento pode ser alterado para um comportamento "tudo ou nada". Use os recursos compostos da API REST para fazer uma série de atualizações em uma chamada de API. Dados em massa – Qualquer operação de dados que inclua mais de 2 mil registros é um bom candidato para a API em massa 2.0 preparar, executar e gerenciar com sucesso um fluxo de trabalho assíncrono que usa a estrutura em massa. |
| API 2.0 em massa | Melhor para operações em massa | A API em massa 2.0 é a API moderna e simplificada do Salesforce para lidar com operações de dados em grande escala. A API em massa 2.0 baseada em REST oferece uma opção programática para inserir, inserir e atualizar, consultar ou excluir de modo assíncrono grandes conjuntos de dados em sua organização do Salesforce. Ele é projetado para eficiência quando você precisa carregar grandes quantidades de dados no Salesforce ou realizar consultas em massa nos dados da sua organização. Diferentemente da API em massa 1.0, a API em massa 2.0 sempre processa lotes em paralelo e não oferece suporte ao modo em série. Isso significa que:
Cada lote na API em massa 2.0 é processado como sua própria transação. Isso significa:
Embora a API SOAP também possa ser usada para processar grandes números de registros, ela se torna menos ideal quando os conjuntos de dados contêm centenas de milhares a milhões de registros. Isso se deve à sobrecarga relativamente alta e às características de desempenho mais baixas.
|
| API Pub/Sub | Melhor |
A API Pub/Sub é a maneira recomendada para editores externos publicar eventos no barramento de eventos. A API Pub/Sub é uma API baseada em gRPC que permite que sistemas externos publiquem eventos de plataforma. A API Pub/Sub:
Depois que um evento de plataforma é definido no Salesforce, ele fica disponível para consumidores internos e externos. |
| Eventos de plataforma | Melhor |
Os eventos de plataforma são definidos da mesma maneira que você define os objetos do Salesforce. Eventos de plataforma podem ser publicados usando diferentes mecanismos, como APIs REST, API em massa e APIs SOAP.
Publicar um evento por meio da API REST é o mesmo que criar um registro do Salesforce. Formato do ponto de extremidade: POST /services/data/vXX.X/sobjects/EventName__e/
Com a API em massa, há suporte apenas para as operações de criação e inserção. Os eventos em um lote são publicados no barramento de evento do Salesforce de modo assíncrono conforme o trabalho em lote é processado. Como os eventos de plataforma são sObjects, há suporte para operações padrão da API SOAP. |
| API SOAP | Ajuste |
Acessibilidade – o Salesforce fornece uma API SOAP que os sistemas remotos podem usar para:
API síncrona – Depois que a chamada de API é feita, o aplicativo cliente remoto espera até receber uma resposta do serviço. Não há suporte para chamadas assíncronas ao Salesforce. WSDL gerado – o Salesforce fornece dois WSDLs para sistemas remotos:
Segurança – o cliente que executa a API SOAP deve ter um login válido e obter uma sessão para realizar qualquer chamada à API. A API respeita a segurança em nível de objeto e em nível de campo configurada no Salesforce com base no perfil do usuário conectado. Comportamento de transação/confirmação – Por padrão, cada chamada de API permite um sucesso parcial se alguns registros forem marcados com erros. Isso pode ser alterado para um comportamento "tudo ou nada", em que todos os resultados são revertidos caso ocorra algum erro. Não é possível estender uma transação entre várias chamadas à API. Para superar essa limitação, é possível que uma única chamada de API afete vários objetos. |
| Serviços da Web do Apex | Suboptimal |
Os métodos da classe Apex podem ser expostos como métodos de serviço da Web a aplicativos externos. Esse método é uma alternativa à API SOAP e geralmente é usado apenas quando os seguintes requisitos adicionais devem ser atendidos.
O benefício de usar um serviço da Web do Apex deve ser ponderado em relação ao código adicional que precisa ser mantido no Salesforce. Não aplicável a eventos de plataforma porque a lógica de pré-inserção de transação no consumidor não se aplica em um arquitetura conduzida por evento. Para notificar uma organização do Salesforce de que um evento ocorreu, use a API SOAP, a API REST ou a API em massa 2.0. |
| Serviços REST do Apex | Suboptimal |
Uma classe do Apex pode ser exposta como recursos REST mapeados para URIs específicos com um verbo HTTP definido (por exemplo, POST ou GET).
Você pode usar recursos compostos da API REST para realizar várias atualizações em uma única transação. Diferentemente do SOAP, o cliente não precisa consumir uma definição/contrato de serviço (WSDL) e gerar fragmento de código do cliente. O sistema remoto requer apenas a capacidade de formar uma solicitação HTTP e processar os resultados retornados (XML ou JSON). Não aplicável a eventos de plataforma porque a lógica de pré-inserção de transação no consumidor não se aplica em um arquitetura conduzida por evento. Para notificar uma organização do Salesforce de que um evento ocorreu, use a API SOAP, a API REST ou a API em massa 2.0. |
Esboço
Os diagramas a seguir ilustram a sequência de eventos quando você implementa esse padrão usando a API REST para notificações de eventos externos ou a API SOAP para consultar um objeto do Salesforce. A sequência de eventos é a mesma ao usar a API REST.
Consulta do sistema remoto do Salesforce via API SOAP
Sistema remoto notifica o Salesforce com eventos por meio da API REST
Resultados
Em uma arquitetura acionada por evento, o sistema remoto chama o Salesforce usando a API SOAP, a API REST ou a API em massa 2.0 para publicar um evento no barramento de evento do Salesforce. Publicar um evento notifica todos os assinantes. Os assinantes de evento podem estar na Salesforce Platform, como Fluxos ou Componentes do Lightning, acionadores do Apex. Os assinantes de evento também podem ser externos à Salesforce Platform, como assinantes do CometD.
Ao trabalhar diretamente com objetos do Salesforce, as soluções relacionadas a esse padrão permitem:
- O sistema remoto chama as APIs do Salesforce para consultar o banco de dados e executar operações de objeto único (criar, atualizar, excluir e assim por diante).
- O sistema remoto para chamar os recursos compostos da API REST do Salesforce para realizar uma série de operações de objeto.
- Sistema remoto para chamar APIs (serviços) do Salesforce personalizadas que podem dar suporte a operações transacionais de vários objetos e lógica de processamento pré/pós personalizada.
Mecanismos de chamada
O mecanismo de chamada depende da solução escolhida para implementar esse padrão.
| Mecanismo de chamada | Descrição |
|---|---|
| API SOAP | O sistema remoto usa o Salesforce Enterprise ou o Partner WSDL para gerar fragmento de código do cliente que, por sua vez, é usado para invocar a API SOAP padrão. |
| API REST | O sistema remoto precisa se autenticar antes de acessar qualquer serviço REST do Apex. O sistema remoto pode usar OAuth 2.0 ou autenticação por nome de usuário e senha. Em ambos os casos, o cliente deve definir o cabeçalho HTTP de autorização com o valor apropriado (um token de acesso OAuth ou um ID de sessão pode ser adquirido por meio de uma chamada de login para a API SOAP). O sistema remoto então gera chamadas REST (solicitações HTTP) com os verbos apropriados e processa os resultados retornados (com suporte a formatos de dados JSON e XML). |
| Serviço da Web do Apex | O sistema remoto consome o WSDL do serviço da Web do Apex personalizado para gerar fragmento de código do cliente que, por sua vez, é usado para invocar o serviço da Web do Apex personalizado. |
| Serviço REST do Apex | De acordo com a API REST, o URI do recurso e os verbos aplicáveis são definidos usando as anotações @RestResource, @HttpGet e @HttpPost. |
| API 2.0 em massa | A API em massa 2.0 é uma API baseada em REST, portanto, os mesmos mecanismos de chamada que a API REST se aplicam. |
| API REST para invocar fluxo | Use a API REST para chamar um ponto de extremidade de ações invocáveis personalizadas para invocar um fluxo iniciado automaticamente. |
Manuseio e recuperação de erros
Uma estratégia de tratamento e recuperação de erros deve ser considerada como parte da solução geral.
- Tratamento de erros – Todos os métodos de chamada remota, APIs padrão ou personalizadas, exigem que o sistema remoto lide com quaisquer erros subsequentes, como tempos limite e o gerenciamento de novas tentativas. O middleware pode ser usado para fornecer a lógica para tratamento e recuperação de erros.
- Recuperação – um mecanismo de nova tentativa personalizado precisa ser criado se os requisitos de qualidade do serviço o ditarem. Nesse caso, é importante garantir características de design idempotentes. O evento de plataforma permite que os assinantes usem o ID de reprodução para buscar mensagens dentro de um determinado período após a publicação dessas mensagens.
Considerações sobre design idempotente
Os recursos idempotentes garantem que as invocações repetidas sejam seguras e não terão um efeito negativo. Se idempotency não for implementado, as invocações repetidas da mesma mensagem poderão ter resultados diferentes, possivelmente resultando em problemas de integridade de dados, por exemplo, criação de registros duplicados, processamento duplicado de transações e assim por diante.
O sistema remoto deve gerenciar várias chamadas (duplicadas), no caso de erros ou tempos limite, para evitar inserções duplicadas e atualizações redundantes (especialmente se acionadores downstream e regras de fluxo de trabalho forem disparados). Embora seja possível gerenciar algumas dessas situações no Salesforce (especialmente no caso de serviços SOAP e REST personalizados), recomendamos que o sistema remoto (ou middleware) gerencie o tratamento de erros e o design idempotente.
Considerações de segurança
Diferentes considerações de segurança se aplicam, dependendo da solução de padrão escolhida. Em todos os casos, a plataforma usa os direitos de acesso do usuário conectado (por exemplo, configurações de perfil, regras de compartilhamento, conjuntos de permissões etc.). Além disso, as restrições de IP de perfil podem ser usadas para restringir o acesso à API para um intervalo de endereços IP específico.
| Solução | Considerações de segurança |
|---|---|
| API SOAP | O alesforce oferece suporte aos protocolos Secure Sockets Layer v3 (SSL) e Transport Layer Security (TLS). As criptografias devem ter pelo menos 128 bits de comprimento de chave. O sistema remoto deve fazer login usando credenciais válidas para obter um ID de sessão. Se o sistema remoto já tiver um ID de sessão válido, ele poderá chamar a API sem um login explícito. Isso é usado em padrões de retorno de chamada abordados anteriormente neste documento, em que uma mensagem de saída anterior do Salesforce continha um ID de sessão e um ID de registro para uso subsequente. Recomendamos que os clientes que chamam o cache da API SOAP reutilizem o ID da sessão para maximizar o desempenho, em vez de obter um novo ID da sessão para cada chamada. |
| API REST | Recomendamos que o sistema remoto estabeleça um Trust do OAuth para autorização. As chamadas REST podem então ser feitas em recursos específicos usando verbos HTTP. Também é possível fazer chamadas REST com um ID de sessão válido que pode ter sido obtido por outros meios (por exemplo, recuperado chamando a API SOAP ou fornecido por meio de uma mensagem de saída). Recomendamos que os clientes que chamam o cache da API REST e reutilizem o ID da sessão para maximizar o desempenho, em vez de obter um novo ID da sessão para cada chamada. |
| Serviço da Web do Apex | Recomendamos que o sistema remoto estabeleça um Trust do OAuth para autorização. |
| Serviço REST do Apex | Recomendamos que o sistema remoto estabeleça um Trust do OAuth para autorização. |
| API 2.0 em massa | Recomendamos que o sistema remoto estabeleça um Trust do OAuth para autorização. |
Consulte Considerações de segurança.
Barra lateral
Nenhum.
Tempo
A API SOAP e a API de serviço da Web do Apex são síncronas. Os seguintes tempos limite se aplicam:
- Tempo limite da sessão – a sessão expira se não houver nenhuma atividade com base na configuração de tempo limite da sessão da organização do Salesforce.
- Tempo limite de consulta – cada consulta SOQL tem um limite de tempo limite individual de 120 segundos.
Volumes de dados
As considerações sobre o volume de dados dependem da solução e do tipo de comunicação escolhidos.
| Solução | Tipo de comunicação | Limites |
|---|---|---|
| API SOAP ou API REST | Síncrono |
|
| API 2.0 em massa | Assíncrono | A API em massa 2.0 é otimizada para importar e exportar grandes conjuntos de dados de modo assíncrono. Qualquer operação de dados que inclua mais de 2 mil registros é um bom candidato para a API em massa 2.0 preparar, executar e gerenciar com sucesso um fluxo de trabalho assíncrono que usa a estrutura em massa. Trabalhos com menos de 2 mil registros devem envolver chamadas síncronas "em massa" em REST (por exemplo, Composto) ou SOAP. A API em massa 2.0 é síncrona ao enviar a solicitação em lote e os dados associados. O processamento real dos dados ocorre de modo assíncrono. Para obter mais informações sobre os limites de processamento de API e lote, consulte Limites. |
Capacidade de ponto de extremidade e suporte a padrões
A funcionalidade e o suporte padrão para o ponto de extremidade dependem da solução escolhida.
| Solução | Considerações sobre ponto de extremidade |
|---|---|
| API SOAP | O sistema remoto deve ser capaz de implementar um cliente que possa chamar a API SOAP do Salesforce com base em um formato de mensagem predefinido pelo Salesforce. O sistema remoto (cliente) deve participar de uma implementação de contrato em primeiro lugar em que o contrato é fornecido pelo Salesforce (por exemplo, WSDL corporativo ou parceiro). |
| API REST | O sistema remoto deve ser capaz de implementar um cliente REST que invoque serviços REST definidos do Salesforce e processe os resultados XML ou JSON. |
| Serviço da Web do Apex | O sistema remoto deve ser capaz de implementar um cliente que possa invocar mensagens SOAP de um formato predefinido, conforme definido pelo Salesforce. O sistema remoto deve participar de uma implementação de código em primeiro lugar, em que o contrato é fornecido pela Salesforce após a implementação do serviço da Web do Apex. Cada serviço da Web do Apex tem seu próprio WSDL. |
| Serviço REST do Apex | As mesmas considerações de ponto de extremidade que a API REST se aplicam. |
Gestão do Estado
Ao integrar sistemas, as chaves são importantes para rastreamento de estado contínuo, por exemplo, se um registro for criado no sistema remoto, para dar suporte a atualizações contínuas desse registro. Há duas opções:
- O Salesforce armazena a chave de substituição primária ou exclusiva do sistema remoto para o registro remoto.
- O sistema remoto armazena o ID de registro exclusivo do Salesforce ou alguma outra chave substituto exclusiva. Há considerações específicas para lidar com chaves de integração nesse padrão síncrono.
| Mestre | sistema Descrição |
|---|---|
| Salesforce | Nesse cenário, o sistema remoto armazena o Salesforce RecordId ou alguma outra chave substituto exclusiva do registro. |
| Sistema remoto | Nesse cenário, o Salesforce armazena uma referência ao identificador exclusivo no sistema remoto. Como o processo é síncrono, a chave pode ser fornecida como parte da mesma transação usando campos de ID externo. |
Cenários de integração complexos
Cada solução nesse padrão tem diferentes considerações ao lidar com cenários de integração complexos, como transformação e orquestração de processo.
| Solução | Considerações |
|---|---|
| API SOAP ou API REST | A API SOAP e a API REST fornecem transações simples em objetos. Cenários de integração complexos, como agregação, orquestração e transformação, não podem ser realizados no Salesforce. Esses cenários devem ser tratados pelo sistema remoto ou middleware, com middleware como o método preferencial. |
| Serviço da Web do Apex ou serviço REST do Apex | Os serviços da Web personalizados podem fornecer funcionalidade de objetos cruzados, lógica personalizada e suporte a transações mais complexas. Essa solução deve ser usada com cuidado e você sempre deve considerar a adequação do middleware para qualquer lógica de transformação, orquestração e tratamento de erros. |
Limites do governador
Devido à natureza multilocatário da Salesforce Platform, há limites ao usar as APIs.
| Solução | Limites |
|---|---|
| API SOAP, API REST e APIs personalizadas do Apex |
|
| API 2.0 em massa | Consulte Barra lateral Volumes de dados para obter mais informações. |
| Eventos de plataforma |
|
Mensagens confiáveis
Mensagens confiáveis tentam resolver o problema de garantir a entrega de uma mensagem a um sistema remoto em que os componentes individuais podem não ser confiáveis. A API SOAP do Salesforce e a API REST são síncronas e não oferecem suporte explícito para nenhum protocolo de mensagens confiável por si só (por exemplo, WS-ReliableMessaging).
Recomendamos que o sistema remoto implemente um sistema de mensagens confiável para garantir que cenários de erro e tempo limite sejam gerenciados com sucesso. A publicação de eventos de plataforma de sistemas externos depende das APIs do Salesforce, portanto, as mesmas considerações se aplicam à API SOAP e à API REST.
Capacidades do Middleware
Esta tabela destaca as propriedades desejáveis de um sistema de middleware que participa deste padrão:
| Propriedade | Obrigatório | Desejável | Não necessário |
|---|---|---|---|
| Manipulação de evento | X | ||
| Conversão de protocolo | X | ||
| Tradução e transformação | X | ||
| Enfileiramento e buffering | X | ||
| Protocolos de transporte síncronos | X | ||
| Protocolos de transporte assíncrono | X | ||
| Roteamento de mediação | X | ||
| Orquestração de serviço e coreografia do processo | X | ||
| Transacionalidade (criptografia, assinatura, entrega confiável, gerenciamento de transações) | X | ||
| Roteamento | X | ||
| Extrair, transformar e carregar | X (para massa/lotes) |
Exemplo
Uma empresa de serviços e suprimentos de impressão usa o Salesforce como um front-end para criar e gerenciar suprimentos e pedidos de impressora. Os registros de ativos do Salesforce que representam impressoras são atualizados periodicamente com estatísticas de uso de impressão (status de tinta, nível de papel) do Sistema de gerenciamento de impressora (PMS) no local, que monitora regularmente as impressoras em sites de clientes. Ao atingir um valor de limite definido (por exemplo, baixo status de tinta ou baixo/nível de papel vazio inferior a 30%), vários aplicativos/processos (variável) interessados no evento são notificados, alertas por email ou Chatter são enviados e um registro de Pedido é criado. O PMS armazena o ID do Salesforce (o Salesforce é o mestre do registro do ativo).
As seguintes restrições se aplicam:
- O PMS pode participar de uma integração de contrato em primeiro lugar, em que o Salesforce fornece o contrato e o PMS atua como um cliente (consumidor) do serviço do Salesforce (definido por meio do WSDL Enterprise ou Partner).
- Não deve haver desenvolvimento personalizado no Salesforce.
Este exemplo é melhor implementado usando a API SOAP do Salesforce ou a API REST para publicar eventos e automação declarativa (Fluxo) no Salesforce. O principal motivo para usar eventos de plataforma é o número variável e não limitado de assinantes; no entanto, para atualizações simples em uma lista finita de registros, como pedidos, use a API SOAP ou REST para atualizar os registros.
No Salesforce:
- Defina um evento de plataforma no Salesforce para conter os dados de notificação provenientes do PMS.
- Crie um fluxo acionado pela notificação de evento de impressora. O processo atualiza o ativo de impressora e cria um pedido (usando um Fluxo iniciado automaticamente).
- Baixe o WSDL Enterprise ou Partner e forneça-o ao sistema remoto.
No sistema remoto:
- Crie um fragmento de código de cliente usando o WSDL Enterprise ou Partner.
- Autenticar no Salesforce (por meio do servidor da Web do OAuth ou do fluxo de token do portador) usando as credenciais do usuário de integração.
- No evento de status da impressora, o PMS chama a API para criar o evento de plataforma de status da impressora (com estatísticas de uso da impressora). O barramento de evento do Salesforce notifica o assinante do Fluxo e todos os outros assinantes.
Quando você usa eventos de plataforma, o barramento de eventos permite que você repita eventos por 72 horas para eventos de plataforma de alto volume. Publicar esses eventos usando uma solução de middleware pode ajudar a incorporar o tratamento de erros no lado da publicação. No entanto, você poderá implementar o tratamento de erros no lado da assinatura se precisar de mais confiabilidade.
Este exemplo demonstra o seguinte:
- Implementação de um cliente de API síncrona do Salesforce (consumidor).
- Um retorno para o Salesforce para publicar um evento de plataforma (alinhado aos padrões de evento de plataforma de resposta/solicitação cobertos anteriormente).
Contexto
Você usa o Salesforce para gerenciar casos do cliente. Um representante de atendimento ao cliente está no telefone com um cliente trabalhando em um caso. O cliente faz um pagamento e o representante de atendimento ao cliente precisa ver uma atualização em tempo real no aplicativo Salesforce do aplicativo de processamento de pagamento, indicando que o cliente pagou com sucesso o valor pendente do pedido.
Problema
Quando ocorre um evento no Salesforce, como o usuário pode ser notificado na interface de usuário do Salesforce sem precisar atualizar a tela e, possivelmente, perder o trabalho?
Forças
Há várias forças a serem consideradas ao aplicar soluções com base neste padrão:
- Os dados que estão sendo executados precisam ser armazenados no Salesforce?
- É possível criar uma camada da interface do usuário personalizada para visualizar esses dados?
- O usuário terá acesso para invocar a interface de usuário personalizada?
Solução
A solução recomendada para esse problema de integração é usar eventos de plataforma que garantem eventos quase em tempo real no Salesforce. Os Eventos de plataforma fornecem uma carga útil estruturada e flexível independente de qualquer objeto do Salesforce. Também garante tópicos duráveis com uma janela de repetição de 72 horas. Isso garante que os eventos estejam disponíveis mesmo que um consumidor offline fique disponível mais tarde. Essa solução é composta pelos seguintes componentes:
- Acionador ou fluxos do Apex com uma lógica para publicar um evento de plataforma em um tópico
- Um tópico que permite publicar um evento a partir do Acionador do Apex ou do Fluxo
- Uma implementação baseada em JavaScript do protocolo de Bayeux (atualmente CometD ) que pode ser usada pela interface do usuário
- Um componente do Lightning
- Uma biblioteca JavaScript incluída como um recurso estático
Esboço
O diagrama a seguir ilustra como a API de streaming pode ser implementada para transmitir notificações para a interface do usuário do Salesforce. Essas notificações são acionadas por alterações de registro no Salesforce.
Atualização de interface do usuário no Salesforce acionada por uma alteração de dados
Resultados
Benefícios
A aplicação da solução relacionada a esse padrão tem os seguintes benefícios:
- Elimina a necessidade de escrever mecanismos de pesquisa personalizados
- Elimina a necessidade de um loop de feedback iniciado pelo usuário
Requisitos não suportados
A solução tem as seguintes limitações:
- Não há garantia de entrega de notificações.
- A ordem das notificações não é garantida.
- As notificações não são geradas de alterações de registro feitas pela API em massa.
Considerações de segurança
A segurança em nível da organização padrão do Salesforce é respeitada. Recomenda-se usar o protocolo HTTPS para se conectar à API de streaming. Consulte Considerações de segurança
Barra lateral
A solução ideal envolve a criação de uma interface de usuário personalizada no Salesforce. É imperativo que você considere um contêiner de interface de usuário adequado que possa ser usado para renderizar a interface de usuário personalizada. Os navegadores com suporte estão listados no Guia do desenvolvedor da API de streaming
Exemplo
Uma empresa de telecomunicações usa o Salesforce para gerenciar casos de clientes. Os gerentes de atendimento ao cliente querem ser notificados quando um caso é fechado com sucesso por um de seus representantes de atendimento ao cliente.
Ao implementar a solução prescrita por esse padrão, o cliente deve:
- Crie um Acionador do Apex PushTopic que envie um evento de plataforma quando um caso for salvo com um Status de "Fechado" e Resolução de "Sucedido".
- Crie uma interface de usuário personalizada disponível para gerentes de atendimento ao cliente. Essa interface do usuário assina o barramento de eventos para consumir eventos de plataforma.
- Implemente a lógica na interface de usuário personalizada que mostra alertas gerados pelos representantes de atendimento ao cliente do gerente.
Contexto
Você usa o Salesforce para rastrear leads, gerenciar seu pipeline, criar oportunidades e capturar detalhes do pedido que convertem leads em clientes. No entanto, o Salesforce não é o sistema que contém ou processa pedidos. Os pedidos são gerenciados por um sistema externo (remote). Porém, os representantes de vendas querem visualizar e atualizar informações do pedido em tempo real no Salesforce sem precisar aprender nem usar o sistema externo.
Problema
No Salesforce, como você visualiza, pesquisa e modifica dados armazenados fora do Salesforce sem mover os dados do sistema externo para o Salesforce?
Forças
Há várias forças a serem consideradas ao aplicar soluções com base neste padrão:
- Deseja criar uma integração de saída declarativa/apontar e clicar ou mashup de interface do usuário no Salesforce?
- Você tem uma grande quantidade de dados que não deseja copiar para sua organização do Salesforce?
- Você precisa acessar pequenas quantidades de dados do sistema remoto a qualquer momento?
- Você precisa de acesso em tempo real aos dados mais recentes?
- Você armazena seus dados na nuvem ou em um sistema de back-office, mas deseja exibir ou processar esses dados em sua organização do Salesforce?
- Você tem preocupações sobre a residência de dados para armazenar determinados tipos de dados no Salesforce?
Solução
A tabela a seguir contém várias soluções para esse problema de integração.
| Solução | Ajuste | Comentários |
|---|---|---|
| Salesforce Connect | Melhor | Use o Salesforce Connect para acessar dados de fontes externas, junto com seus dados do Salesforce. Obtenha dados de sistemas como SAP, Microsoft, Oracle e outros sistemas baseados em nuvem, como Snowflake, em tempo real sem fazer uma cópia dos dados no Salesforce. O Salesforce Connect mapeia tabelas de dados em sistemas externos para objetos externos em sua organização. Objetos externos são semelhantes a objetos personalizados, mas são mapeados para dados localizados fora da sua organização do Salesforce. O Salesforce Connect usa uma conexão ativa com dados externos para manter os objetos externos sempre atualizados. Acessar um objeto externo busca os dados do sistema externo em tempo real. O Salesforce Connect permite:
Para acessar dados armazenados em um sistema externo usando o Salesforce Connect, use um dos seguintes adaptadores:
|
| Solicitação e resposta | Suboptimal |
Use as APIs de serviço da Web do Salesforce para fazer solicitações de dados ad-hoc para acessar e atualizar dados do sistema externo. Essa solução inclui as seguintes abordagens:
Use a API SOAP do Salesforce. Uma página ou botão personalizado inicia uma chamada REST/SOAP do Apex de maneira síncrona. No Salesforce, você pode consumir um WSDL e gerar uma classe do Apex proxy resultante. Essa classe fornece a lógica necessária para chamar o serviço remoto. Uma ação iniciada pelo usuário em uma página então chama uma ação do controlador do Apex que executa essa classe do Apex proxy para realizar a chamada remota. As páginas exigem personalização do aplicativo Salesforce. Use a API REST do Salesforce. Uma página ou botão personalizado inicia uma chamada HTTP do Apex (serviço REST) de maneira síncrona. No Salesforce, você pode invocar serviços HTTP usando os métodos padrão GET, POST, PUT e DELETE. Para obter mais informações sobre essa solução, consulte Invocação do processo remoto – Solicitação e resposta. |
Esboço
O diagrama a seguir ilustra como você pode usar o Salesforce Connect para extrair dados de um sistema externo usando um adaptador OData.
Neste cenário:
- O navegador realiza uma chamada AJAX que, por sua vez, executa uma ação no adaptador de objeto externo correspondente.
- O adaptador traduz a ação em uma solicitação OData e faz uma solicitação GET HTTP para o sistema remoto por meio das camadas de Integração e Serviços.
- O sistema remoto retorna uma resposta JSON ao Salesforce por meio das camadas de Integração e Serviços.
- A resposta é traduzida do OData para um objeto externo e apresentada de volta ao navegador.
Resultados
A aplicação das soluções relacionadas a esse padrão permite invocações iniciadas pela interface do usuário em que o resultado da transação pode ser exibido ao usuário final.
Mecanismos de chamada
O mecanismo de chamada depende da solução escolhida para implementar esse padrão.
| Mecanismo de chamada | Descrição |
|---|---|
| Objetos externos | O Salesforce Connect mapeia objetos externos do Salesforce a tabelas de dados em sistemas externos. Em vez de copiar os dados para a sua organização, o Salesforce Connect acessa os dados sob demanda e em tempo real. Mesmo que os dados sejam armazenados fora da sua organização, o Salesforce Connect oferece uma integração perfeita com a Plataforma do Lightning. Objetos externos estão disponíveis para ferramentas do Salesforce, como pesquisa global, relacionamentos de pesquisa, feeds de registro e o aplicativo Salesforce móvel. Objetos externos também estão disponíveis para consultas do Apex, SOSL, SOQL, APIs do Salesforce e implantação por meio da API de metadados, conjuntos de alterações e pacotes. |
| Componentes de iluminação | Usado quando o processo remoto é acionado como parte de um processo de ponta a ponta envolvendo a interface do usuário e o resultado deve ser exibido ou atualizado em um registro do Salesforce. Por exemplo, um processo que envia pagamentos por cartão de crédito a um gateway de pagamento externo e retorna imediatamente os resultados de pagamento exibidos ao usuário. A integração acionada por eventos da interface do usuário geralmente requer a criação de componentes personalizados do Lightning. |
Tratamento de erros
É importante incluir o tratamento de erros como parte da solução geral. Quando ocorre um erro (exceções ou códigos de erro são retornados ao chamador), o chamador gerencia o tratamento do erro. O Salesforce Connect Validator é uma ferramenta gratuita para executar algumas consultas comuns e tipos de erro de aviso e causas de falha.
Benefícios
Alguns dos benefícios de usar uma solução do Salesforce Connect são:
- Essa solução não consome o armazenamento de dados no Salesforce.
- Os usuários não precisam se preocupar com a sincronização regular de dados entre o sistema externo e o Salesforce.
- Uma configuração declarativa que pode ser alcançada rapidamente com OData, ou um adaptador entre organizações, ou usando um código mínimo com um adaptador Apex personalizado.
- Os usuários podem acessar dados externos com a mesma funcionalidade que objetos personalizados na forma de objetos externos.
- Capacidade de fazer uma pesquisa federada no sistema externo conectado usando a pesquisa global.
- Capacidade de executar relatórios que acessam dados externos de fontes na nuvem e no local. Consulte as considerações sobre relatórios abaixo.
Considerações sobre o Salesforce Connect
A solução Salesforce Connect tem as seguintes considerações:
- Objetos externos se comportam como objetos personalizados, mas alguns recursos não estão disponíveis para objetos externos. Para obter mais informações, consulte Considerações sobre a compatibilidade do Salesforce para Salesforce Connect.
- Objetos externos podem afetar o desempenho do relatório. Para obter mais informações, consulte Considerações sobre relatórios para Salesforce Connect.
- Consulte Considerações adicionais sobre o uso de adaptadores do Salesforce Connect em Considerações sobre o Salesforce Connect – Todos os adaptadores.
- Se estiver considerando usar um adaptador entre organizações, consulte Considerações sobre o Salesforce Connect – adaptador entre organizações.
- Se estiver considerando usar um adaptador OData, consulte Considerações sobre o Salesforce Connect – adaptadores OData 2.0 e 4.0.
- Se estiver considerando usar um adaptador do Apex personalizado, consulte Considerações sobre o Salesforce Connect – adaptador personalizado.
Considerações de segurança
As soluções para esse padrão devem cumprir a segurança em nível da organização padrão do Salesforce. Recomenda-se usar o protocolo HTTPS para se conectar a qualquer sistema remoto. Para obter mais detalhes, consulte Considerações de segurança
Se você estiver usando um conector OData, entenda os comportamentos especiais, limitações e recomendações para a Falsificação de solicitação entre sites (CSRF) em fontes de dados externas OData. Para obter mais informações, consulte Considerações sobre CSRF para Salesforce Connect – adaptadores OData 2.0 e 4.0.
Barra lateral
Nenhum.
Tempo
A pontualidade é de importância significativa nesse padrão. Lembre-se dos seguintes pontos:
- A solicitação geralmente é invocada na interface do usuário, portanto, o processo não deve manter o usuário esperando.
- Dependendo da disponibilidade e da conexão com o sistema externo, pode levar muito tempo para recuperar dados externos. O Salesforce tem um valor de tempo limite máximo de 120 segundos configurável para aguardar uma resposta do sistema externo.
- A conclusão do processo remoto deve ser executada em tempo hábil e concluída dentro do limite de tempo limite do Salesforce e dentro das expectativas do usuário.
Volumes de dados
Esse padrão é usado principalmente para atividades em tempo real de pequeno volume, devido aos pequenos valores de tempo limite e tamanho máximo da solicitação ou resposta para a solução de chamada do Apex. Não use esse padrão em atividades de processamento em lote em que a carga de dados está contida na mensagem.
Capacidade de ponto de extremidade e suporte a padrões
O suporte de funcionalidade e padrões para o ponto de extremidade depende da solução escolhida.
| Solução | Considerações sobre ponto de extremidade |
|---|---|
| Salesforce Connect | APIs OData – Use o Open Data Protocol para acessar dados armazenados fora do Salesforce. Os dados externos devem ser expostos através dos produtores OData. Outras APIs – Use o Apex Connector Framework para desenvolver seu próprio adaptador personalizado quando os outros adaptadores disponíveis não forem adequados às suas necessidades. Um adaptador personalizado pode obter dados de qualquer origem. Por exemplo, alguns dados podem ser recuperados da Internet por meio de chamadas, enquanto outros dados podem ser manipulados ou até mesmo gerados programaticamente. Conectar-se ao Salesforce – Usa a API REST da Plataforma do Lightning para acessar dados armazenados em outras organizações do Salesforce. Conectar via Middleware Conectar por meio do Middleware — O ecossistema de parceiros do Salesforce Connect trabalhou em estreita colaboração com a Salesforce para garantir que seus gateways de middleware exponham pontos de extremidade OData do serviço para que a Salesforce possa se conectar a eles sem escrever código adicional. |
| Solicitação e resposta | Chamadas SOAP do Apex - O ponto de extremidade deve poder receber uma chamada de serviço da Web por HTTP. Chamadas HTTP do Apex - O ponto de extremidade deve ser capaz de receber chamadas HTTP. Você pode usar chamadas HTTP do Apex para chamar serviços RESTful usando os métodos padrão GET, POST, PUT e DELETE |
Gestão do Estado
Ao integrar sistemas, as chaves são importantes para o rastreamento de estado contínuo. Por exemplo, se um registro for criado no sistema remoto, geralmente o registro precisará de algum tipo de chave de identificação para dar suporte a atualizações em andamento. Há duas opções para armazenar chaves.
- O Salesforce armazena a chave substituto primária ou exclusiva para o registro remoto.
- O sistema remoto armazena o ID de registro exclusivo do Salesforce ou alguma outra chave substituto exclusiva. Há considerações específicas para lidar com chaves de integração nesse padrão síncrono.
| Sistema mestre | Descrição |
|---|---|
| Salesforce | O sistema remoto armazena o ID do registro do Salesforce ou alguma outra chave substituto exclusiva do registro. |
| Sistema remoto | A chamada ao processo remoto retorna a chave exclusiva do aplicativo e o Salesforce armazena esse valor de chave em um campo de registro exclusivo. |
Integrações complexas
Em determinados casos, a solução prescrita por esse padrão pode exigir a implementação de um cenário de integração complexo. Esses cenários costumam ser resolvidos usando middleware.
- Agregação de chamadas e seus resultados entre chamadas para vários sistemas
- Transformação de mensagens de entrada e de saída
- Manter a integridade transacional em chamadas para vários sistemas
- Outras atividades de orquestração de processo entre o Salesforce e o sistema externo
Limites regulatórios
Diferentes limites se aplicam a diferentes adaptadores. Para obter mais detalhes, consulte Limites gerais do Salesforce Connect.
Capacidades do Middleware
A tabela a seguir destaca as propriedades desejáveis de um sistema de middleware que participa desse padrão.
| Propriedade | Obrigatório | Desejável | Não necessário |
|---|---|---|---|
| Manipulação de evento | X | ||
| Conversão de protocolo | X | ||
| Tradução e transformação | X | ||
| Enfileiramento e buffering | X | ||
| Protocolos de transporte síncronos | X | ||
| Protocolos de transporte assíncrono | X | ||
| Roteamento de mediação | X | ||
| Orquestração de serviço e coreografia do processo | X | ||
| Transacionalidade (criptografia, assinatura, entrega confiável, gerenciamento de transações) | X | ||
| Roteamento | X | ||
| Extrair, transformar e carregar | X | ||
| Pesquisa longa | X |
Relacionamentos de objetos externos
Os objetos externos oferecem suporte a relacionamentos de pesquisa padrão, que usam o ID de registro do Salesforce de 18 caracteres para associar registros relacionados. No entanto, os dados armazenados fora da sua organização do Salesforce geralmente não contêm esses IDs de registro. Portanto, dois tipos especiais de relacionamentos de pesquisa estão disponíveis para objetos externos: pesquisas externas e pesquisas indiretas.
Esta tabela resume os tipos de relacionamentos que estão disponíveis para objetos externos.
| Relacionamento | Objetos filho permitidos | Objetos pai permitidos | Campo pai para registros correspondentes |
|---|---|---|---|
| Pesquisa | Padrão, Personalizado, Externo | Padrão, Personalizado | O ID de registro do Salesforce de 18 caracteres |
| Pesquisa externa | Padrão, Personalizado, Externo | Externo | O campo padrão ID externo |
| Pesquisa indireta | Externo | Padrão, Personalizado | Selecione um campo personalizado com os atributos ID externo e Exclusivo |
Considerações sobre alto volume de dados para o Salesforce Connect – adaptadores OData 2.0 e 4.0
Se sua organização atingir os limites de taxa ao acessar objetos externos, considere selecionar a opção Alto volume de dados nas origens de dados externas associadas. Fazer isso ignora a maioria dos limites de taxa, mas alguns comportamentos e limitações especiais se aplicam. Para obter mais informações, consulte Considerações sobre alto volume de dados para o Salesforce Connect
Página acionada pelo cliente e pelo servidor para Salesforce Connect – adaptadores OData 2.0 e 4.0
É comum que as consultas do Salesforce Connect de dados externos tenham um grande conjunto de resultados dividido em lotes ou páginas menores. Você decide se o comportamento de paginação será controlado pelo sistema externo (acionado pelo servidor) ou pelo adaptador OData 2.0 ou 4.0 para Salesforce Connect (acionado pelo cliente). O campo Paginação acionada pelo servidor na origem de dados externa especifica se deseja usar a paginação acionada pelo cliente ou pelo servidor. Se você habilitar a paginação acionada pelo servidor em uma origem de dados externa, o Salesforce ignorará os tamanhos de página solicitados, incluindo o tamanho de lote queryMore() padrão de 500 linhas. As páginas retornadas pelo sistema externo determinam os lotes, mas cada página não pode exceder 2.000 linhas. No entanto, os limites dos adaptadores OData para Salesforce Connect ainda se aplicam.
Exemplo
Uma empresa de manufatura usa o Salesforce para gerenciar casos do cliente. Os agentes de atendimento ao cliente querem acessar as informações do pedido em tempo real do sistema ERP no back-office para obter uma visão completa do cliente sem precisar aprender e executar manualmente relatórios no ERP.
Para implementar a solução prescrita por esse padrão, você deve:
- Configure sua origem de dados externa com um ponto de extremidade OData. Seu aplicativo remoto pode incluir suporte nativo para OData. Para outras aplicações, os principais fornecedores de integração, como Dell Boomi, Informatica, Jitterbit, MuleSoft e Progress Software, colaboraram com a Salesforce no Salesforce Connect para criar adaptadores.
- Aponte o Salesforce Connect no ponto de extremidade OData diretamente ou por meio de uma solução de middleware.
- Sincronize suas tabelas de banco de dados externos com objetos externos no Salesforce. Quando um usuário acessa uma página com dados desses objetos externos, o Salesforce Connect faz chamadas em tempo real para seus aplicativos de back-end.
Documentação do desenvolvedor
-
Ajuda do Salesforce: Conceder aos usuários de integração acesso apenas à API
-
Limites e alocações de desenvolvedores do Salesforce Referência rápida
-
Guia do desenvolvedor do Apex: Salesforce Connect
Trailhead
Para ser membros efetivos do portfólio corporativo, todos os aplicativos devem ser criados e integrados a mecanismos de segurança relevantes. Estratégias de TI modernas usam uma combinação de serviços locais e baseados em nuvem.
Embora a integração de serviços de nuvem para nuvem geralmente se concentre em serviços da Web e autorização associada, a conexão de serviços locais e de nuvem geralmente introduz maior complexidade. Esta seção descreve ferramentas de segurança, técnicas e considerações específicas do Salesforce.
Servidor proxy reverso
Um proxy reverso é um servidor que fica em frente a servidores da Web e encaminha solicitações de clientes (por exemplo, navegador da Web) a esses servidores da Web. Os proxies reversos geralmente são implementados para ajudar a aumentar a segurança, o desempenho e a confiabilidade.
É um tipo de servidor proxy que recupera recursos em nome de um cliente de um ou mais servidores. Esses recursos então são devolvidos ao cliente como se tivessem se originado do próprio servidor proxy. Diferentemente de um proxy encaminhado, que é um intermediário para seus clientes associados entrarem em contato com qualquer servidor, um proxy reverso é um intermediário para seus servidores associados serem contatados por qualquer cliente.
Em implementações do Salesforce, esse serviço costuma ser fornecido por meio de um produto de gateway externo. Por exemplo, opções de código aberto, como Apache HTTP, lightttpd e nginix, podem ser usadas. Produtos comerciais incluem IBM WebSeal e Computer Associates SiteMinder. Esses produtos podem ser facilmente configurados para proxy e gerenciar todas as solicitações do Salesforce de saída em nome do solicitante interno.
Criptografia
Algumas empresas exigem que as transações ou campos de dados selecionados sejam criptografados entre uma combinação de aplicativos locais e baseados em nuvem. Se sua organização precisar cumprir requisitos de conformidade adicionais, você poderá implementar alternativas, incluindo:
-
Serviços de gateway de criptografia comercial local, incluindo os próprios do Salesforce, o CipherCloud, o IBM DataPower e os Associados de computador. Para cada solução, o mecanismo ou o gateway de criptografia são invocados no limite da transação ao enviar e receber uma carga útil criptografada ou ao criptografar ou descriptografar campos de dados específicos antes da execução da solicitação HTTP(S).
-
Opções baseadas em nuvem, como o Salesforce Shield Platform Encryption. A Shield Platform Encryption dá aos seus dados uma nova camada de segurança, preservando a funcionalidade crítica da plataforma. Os dados selecionados são criptografados em repouso usando um sistema avançado de derivação de chave. Você pode proteger seus dados com mais segurança do que nunca. Consulte a ajuda do Salesforce online para obter mais informações.
Suporte especializado de protocolo WS-*
Para lidar com os requisitos de protocolos de segurança (como WS-*), recomendamos estas alternativas.
-
Gateway de segurança/XML – Injecte credenciais de segurança WS (IBM WebSeal ou Datapower, Layer7, TIBCO e assim por diante) no próprio fluxo de transações. Essa abordagem não requer alterações a serviços da Web no nível do aplicativo ou chamadas de serviço da Web do Salesforce. Você também pode reutilizar essa abordagem em toda a instalação do Salesforce. No entanto, ele requer design, configuração, teste e manutenção adicionais para gerenciar a injeção adequada de WS-Security na abordagem de gateway de segurança existente.
-
Criptografia em nível de transporte – criptografe o canal de comunicação usando restrições de SSL e IP bidirecionais. Embora essa abordagem não implemente diretamente o protocolo WS-* sozinha, ela protege o canal de comunicação entre os aplicativos locais e o Salesforce sem passar um nome de usuário e senha. Também não requer alterações a classes geradas pelo Salesforce. No entanto, algumas modificações de serviços da Web locais podem ser necessárias (no próprio aplicativo ou na camada de middleware/ESB).
-
Desenvolvimento personalizado do Salesforce – Adicione cabeçalhos do WS-Security à solicitação SOAP de saída por meio do utilitário WSDL2Apex. Isso gera uma classe do Apex semelhante a Java do arquivo WSDL usado para invocar o serviço interno. Embora essa abordagem não exija alterações a serviços da Web de back-end ou componentes adicionais no DMZ, ela exige:
- um maior esforço de criação e teste
- um processo relativamente complexo e manual para codificar manualmente os atributos WS-Security (incluindo serialização XML dentro do Apex code)
- um esforço de manutenção de longo prazo maior
Nota: A última opção não é recomendada devido à sua complexidade e ao risco de que essas integrações precisem de revisões periódicas com base em atualizações regulares no Salesforce.
Outras considerações de segurança
-
Credenciais nomeadas: Criada para proteger e simplificar chamadas de API autenticadas para sistemas externos, uma credencial nomeada especifica o URL de um ponto final de chamada e seus parâmetros de autenticação necessários em uma definição. Para simplificar seu Apex code e simplificar a configuração de chamadas autenticadas, especifique uma credencial nomeada como o ponto final de chamada. Para mais detalhes veja aqui.
-
OAUTH 2.0: O OAuth 2.0 é uma estrutura de autorização padrão do setor que permite que um usuário conceda acesso limitado a seus recursos protegidos a um aplicativo de terceiros sem compartilhar suas credenciais (como senhas). Em vez de uma troca de senha direta, o usuário aprova uma solicitação de token de acesso, que o aplicativo então usa para acessar os dados do usuário de um servidor de recurso. Esse processo separa o aplicativo cliente da identidade e senha do usuário, aprimorando a segurança fornecendo uma "chave" temporária específica do escopo para acessar recursos. Para mais informações, consulte aqui.
-
Conexão privada: Quando você integra sua organização do Salesforce a aplicativos hospedados em serviços de nuvem de terceiros, é essencial poder enviar e receber o tráfego HTTP/s com segurança. Com a Conexão privada, aumente a segurança em suas integrações da Amazon Web Services (AWS) configurando uma conexão de rede totalmente gerenciada entre sua organização do Salesforce e sua AWS Virtual Private Cloud (VPC). Em seguida, encaminhe seu tráfego entre nuvens pela conexão, em vez de pela Internet pública, para reduzir a exposição a ameaças à segurança de terceiros. A Conexão privada está disponível em parceria com a AWS por meio de um recurso chamado AWS PrivateLink. A conexão privada é bidirecional: você pode iniciar o tráfego de entrada e de saída. Com conexões de entrada, você pode enviar tráfego para o Salesforce usando as APIs padrão. Com as conexões de saída, você pode enviar o tráfego do Salesforce por meio de recursos como chamadas do Apex, serviços externos e objetos externos. Para mais informações sobre VPC, por favor, aqui.
O Salesforce Event Bus com Eventos de plataforma, Captura de dados de alteração (CDC) e API Pub/Sub permite que as empresas criem arquiteturas de estilo conduzidas por evento (EDAs).
Um EDA desconecta os consumidores de mensagens de evento (assinantes) dos produtores de mensagens de evento (publicadores), permitindo maior escala e flexibilidade. Os padrões específicos são abordados neste documento como parte da estrutura de padrões existente que compara e contrasta alternativas ou opções relacionadas. No entanto, obter uma compreensão holística da arquitetura conduzida por evento e como os padrões interagem pode ajudá-lo a selecionar o padrão certo para suas necessidades.
Khalid Mohammed é um destacado líder de arquitetos nos Serviços profissionais da Salesforce. Desde que entrou para a Salesforce em 2015, ele aproveitou seu amplo conhecimento em Arquitetura e Aplicativo Enterprise, aprimorado por várias transformações do cliente antes de seu mandato na Salesforce. Khalid lidera o Conselho de arquitetura de entrega e também é reconhecido como um líder de arquiteto técnico certificado.
Gulal Kumar é um arquiteto de engenharia de software na Salesforce, com foco em arquitetura de integração e dados. Com mais de 20 anos de experiência em integração e APIs, programas de modernização, segurança e iniciativas AIML, ele traz uma grande quantidade de conhecimento. O Gulal está empenhado em promover iniciativas de transformação de negócios, aprimorar a segurança e a resiliência, promover a excelência de arquitetura e liderar iniciativas de AIML em vários domínios.
Sushant é um arquiteto técnico na Salesforce, especializado em arquitetura de soluções e entrega completa de plataformas do Salesforce. Com profundo conhecimento em governança de plataforma, desenvolvimento de aplicativos, integração e DevOps, ele liderou vários programas de transformação do cliente em vários setores. A Sushant está comprometida em promover a excelência de entrega e resultados arquitetônicos escalonáveis.