A solução Enterprise Connectors permite que você se conecte a mais de 80 fontes de dados, utilizando o Delphi e o C++ Builder: https://www.embarcadero.com/products/enterprise-connectors.

Entre essas fontes, nós temos o Salesforse, provavelmente o CRM número 1 no mundo.

Para demonstrar como é fácil usar o Enterpise Connectors com o FireDAC, decidi criar um cliente Salesforce mobile nativo para Android e iOS, usando o Delphi e o Firemonkey do lado cliente, e DataSnap/FireDAC do lado servidor.

Visão geral da solução

Em linhas gerais, a ideia é permitir que a aplicação mobile exiba dados do Salesforce, um tipo de gerenciamento de suporte, que faz parte da solução de CRM deles.

Para realizar esta tarefa, teremos uma conexão FireDAC Salesforce no servidor DataSnap, o que nos permitirá validar as credenciais do usuário, bem como consultar as entradas de casos diretamente do Salesforce na nuvem.

A parte legal do Enterprise Connectors é que você, basicamente, pode emitir consultas SQL ANSI padrão de qualquer fonte de dados suportada, tão fácil como contar até 3.

Implementação do Servidor

Nossa aplicação servidor é uma aplicação Datasnap REST servidor standard. Antes de começar, eu tive que instalar o driver Salesforce da coleção Enterprise Connectors disponível para trial no GetIt: https://community.embarcadero.com/blogs/entry/enterprise-connectors-are-now-live

Como você pode ver na imagem, essa é uma implementação FireDAC padrão, a única diferença de conectar uma base de dados regular são os parâmetros. Neste caso, para o Salesforce, você pode criar uma conta desenvolvedor em https://developer.salesforce.com.

Nosso servidor tem apenas dois métodos, um para autenticar o usuário, e outro para pegar alguns dados do Salesforce:

function TServerMethods1.DoUserLogin(fUserName, fPassword: string): boolean; begin FDCnn.Params.UserName := fUserName; FDCnn.Params.Password := fPassword; try // open the connection to validate the user/pass FDCnn.Open; Result := True; // close the connection after the validation FDCnn.Close; except on E: Exception do raise Exception.Create(‘UserLogin: ‘ + E.Message); end; end; function TServerMethods1.GetSFCases(fUserName, fPassword: string) : TFDJSONDataSets; begin // active the connection FDCnn.Params.UserName := fUserName; FDCnn.Params.Password := fPassword; FDCnn.Open; // serialize the dataset CaseTable.Close; Result := TFDJSONDataSets.Create; TFDJSONDataSetsWriter.ListAdd(Result, CaseTable); end;

Again, it’s a standard DataSnap/FireDAC server, serializing and returning the JSON data to the client, in this case an multi device application with FMX.

Novamente, este é um servidor DataSnap/FireDAC padrão, serializando e retornando os dados JSON para o cliente, neste caso uma aplicação multidispositivo com FMX.

Implementação cliente mobile

Nossa aplicação cliente tem um formulário de login, um ListView usando o estilo Dynamic Appearance para exibir os dados de casos, e uma terceira aba que mostra todos os detalhes do caso selecionado.

Os dados são de-serializados de volta para um TFDMemTable usando as classes de reflexão FireDAC, como você pode ver nos trechos abaixo:

function TMainDM.UserLogin: boolean; begin Result := False; DSRestCnn.Host := fServerIP; if ServerMethods1Client.DoUserLogin(fUserName, fPassword) then begin SaveLoginData; Result := True; end; end; procedure TMainDM.LoadSFCases; var LDataSetList: TFDJSONDataSets; begin DSRestCnn.Host := FServerIP; LDataSetList := ServerMethods1Client.GetSFCases(fUserName, fPassword); CaseMemTable.Close; CaseMemTable.AppendData(TFDJSONDataSetsReader.GetListValue(LDataSetList, 0)); CaseMemTable.Open; end;

Existem ainda outros detalhes na aplicação cliente, como salvar a informação de login, o fluxo de trabalho geral do aplicativo, o look&feel, entre outros que você pode ver fazendo o download dos exemplos no link no final desta publicação.

Toda a fonte de códigos deste exemplo está disponível aqui, no meu GitHub: https://github.com/flrizzato/CDATA

Obs.: No lugar de executar o exemplo, você deverá criar uma conta de desenvolvedor no Salesforce e adicionar a informação de login e token de segurança na conexão FireDAC antes de tentar executar.

Patrícia Teves

Embarcadero lança novo Programa Acadêmico Gratuito Preview do Linux e desconto de até 20% para linha RAD só na Embarcadero Conference