Artigos Internos

Estender o Salesforce com Outsystems

Como estabelecer a ligação de integração com a Salesforce

Com o crescimento do Salesforce para se tornar a plataforma de gestão de relações com o cliente (CRM) líder mundial, chega o momento em que precisamos de integrar as nossas aplicações personalizadas da Outsystems para ampliar as funcionalidades do Salesforce com aplicações novas e dinâmicas, capazes de oferecer mais flexibilidade e ferramentas para ajudar os utilizadores no seu dia-a-dia. Isto permitirá utilizar o armazenamento de dados do Salesforce como base de dados principal e tirar partido de todas as capacidades das aplicações da Outsystems.

Neste artigo iremos abordar vários tópicos, tais como:

  • Integração com Salesforce
  • Seleção de Tabelas e Campos do Salesforce
  • Criar uma Ligação para a Integração
  • Sincronização massiva
  • Sincronização de filas

 

Integração com Salesforce

Para estabelecer a ligação de integração com a Salesforce, terá de aceder Constructor de Integração e ligue-se ao ambiente de desenvolvimento com o seu utilizador Outsystems.

Em seguida, na Página de Integrações, clique em novo Criar Integração e selecione Salesforce. Uma vez que estaremos na fase de desenvolvimento e não queremos afetar os dados de produção do Salesforce, recomendamos ter pelo menos um ambiente de Teste para além do ambiente de Produção.

Conecte-se com o Salesforce através da Sandbox e isto irá redirecioná-lo para a página de Login do Salesforce para que possa iniciar sessão com a Conta de Serviço que obterá e gravará dados deste ambiente.

Seleção de tabelas e campos do Salesforce

Dando continuidade ao processo iniciado no primeiro tópico, iremos agora selecionar os Objetos que pretendemos sincronizar com o Outsystems.

Para uma melhor compreensão, aqui poderá selecionar as Tabelas e na secção de Campo terá acesso à nomenclatura convencional do campo, bem como à nomenclatura interna no Salesforce.

Continue o assistente, reveja tudo e implemente a Integração.

Criar uma Ligação para a Integração

Para criar uma Ligação para a Integração, necessitará de:

  • Navegar para o Gestor de Integração (https:///OSIntegrationManager/)
  • Na página Ligações clicará em Criar Ligação.
  • Após selecionar a ligação Salesforce, selecionará se é o ambiente de Produção ou Sandbox e clicará em Autorizar Gestor de Integração ser redirecionado para a página de Início de Sessão da Salesforce.
  • Após terminar o estabelecimento da Ligação, regresse ao Gestor de Integração, clique na sua Integração e selecione a Ligação criada anteriormente.

Sincronização Massiva

Voltando ao Outsystems Service Studio, notará que foi criado um módulo de serviço com o sufixo “_IS” com todos os serviços fornecidos pela Integração: Count[Tabela], Get[Tabela], Search[Tabela], Sync[Tabela]PickLists, etc.

Para realizar um lançamento de dados nas suas próprias tabelas, existem alguns passos a seguir:

  • Criar Ação para sincronizar PickLists.
  • Criar Lógica para Obter e Normalizar Dados – Criar Server Action para obter registos de [Tabela] do Salesforce em lotes e com os filtros desejados. Por exemplo, se pretender fazer um lançamento por País, terá de ter o País previamente selecionado, que será introduzido como parâmetro de entrada para os filtros.
  • Incorpore a primeira Lógica num nível superior da Lógica para poder reutilizar a ação de buscar dados e, de seguida, introduza o ciclo de criação de dados na sua base de dados.
  • Realize os dois primeiros passos para tantas tabelas quantas quiser sincronizar.
  • Crie o nível mais alto da Lógica e refira a Ação SyncPickLists e as Ações Sync de [Tabela].
  • Crie um Temporizador sem Agendamento para ser executado apenas quando um novo *rollout* for feito e utilize a Ação criada no ponto acima.
  • Aplicar as melhores práticas do Timer.
  • Definir as Propriedades corretas do Site, como o País.
  • Executar o temporizador.

Sincronização de Filas

Para ter uma sincronização próxima do tempo real e para não sobrecarregar o servidor com chamadas concorrentes para escrita na base de dados, necessitamos de implementar uma Sincronização em Fila (Queue Synchronization) de Salesforce para Outsystems. Para tal, teremos de seguir os seguintes passos:

  • Criar uma Entidade de Fila com a seguinte estrutura (Id, SalesforceRecordId, SalesforceTableId, OperationTypeId (Criar/Atualizar/Eliminar))
  • Criar uma API REST POST para ser chamada pelo Salesforce em cada criação ou modificação de registo.
  • Reutilizar a lógica criada para a Sincronização em Massa, mas em vez de ir buscar um lote de registos, irá ir buscar um único registo por SalesforceRecordId.
  • Crie a Ação para processar a fila, onde pretende receber o SalesforceRecordId, SalesforceTableId e OperationTypeId. O SalesforceTableId será utilizado para escolher a ação do ponto acima que pretende chamar. Após a obtenção do registo utilizando o SalesforceRecordId, utilize o OperationType para escolher qual a ação que pretende executar (Criar, Atualizar ou Eliminar).
  • Crie um temporizador a decorrer a cada poucos minutos com uma Ação para ler a Entidade da Fila em lotes e enviar a informação do registo para a ação mencionada no ponto acima.
  • Aplicar as melhores práticas do Timer.
  • Ativar temporizador.

Tanto para Sincronização de Filas como para Sincronização em Massa, é muito importante construir um sistema de registo bem definido para ser facilmente monitorizado relativamente a possíveis problemas que possam ocorrer. Para tal, recomendamos:

  • Criar tabela específica para registos.
  • Definir todas as exceções que podem ocorrer no seu código (por exemplo, Campo Obrigatório no OS, mas não obrigatório no Salesforce).
  • Estruturar a mensagem de log corretamente (ModuleName, ActionName, Mensagem da Levanta Exceção, JSON do Registo).
  • Criar um procedimento diário por e-mail para notificar as descobertas do dia.
  • Criar Ecrã de Registo.

Agora que tem uma réplica dos seus dados mestres no Outsystems, pode alavancar as capacidades do Outsystems para desenvolver aplicações melhores e mais performantes, mantendo a integridade dos dados mestres no Salesforce.

 

Gonçalo Condeça

Líder Técnico OutSystems

Líder de Equipa na AdvanceWorks, com 6 anos de experiência em Outsystems, focado em alavancar as capacidades do Outsystems na entrega de soluções de ponta aos clientes.

Artigos Internos

Artigos Relacionados