Delphi + Enterprise Connectors + DataSnap = Salesforce native client for iOS and Android

Enterprise Connectors allows you to connect from Delphi and C++ Builder to 80+ enterprise data sources: https://www.embarcadero.com/products/enterprise-connectors.

Between these datasources, we have Salesforce, probably the #1 CRM in the world.

To demonstrate how easy is to use the Enterprise Connectors with FireDAC, I decided to build a native Salesforce mobile client for Android and iOS, using Delphi and Firemonkey on the client side, and DataSnap/FireDAC on the server side.

Solution overview

In summary, the idea is to allow the mobile application to display data from Salesforce cases, a kind of support case management that is part of their CRM solution.

To accomplish this task we’ll have an FireDAC Salesforce connection in the DataSnap server, which will allows us to validate the user credentials, as well to query the cases entries directly from the Salesforce in the clouds.

The cool thing from the Enterprise Connectors is that, you basically can issue standard SQL ANSI queries against any supported data source, easy as 1,2,3.

Server Implementation

Our server application is an standard Datasnap REST server application. Before starting, I have installed the Salesforce driver from the Enterprise Connectors collection that are available in the GetIt as a trial: https://community.embarcadero.com/blogs/entry/enterprise-connectors-are-now-live

 

As you can see in the image, it’s a standard FireDAC implementation, the only difference from connecting a regular database are the parameters. In this case, for Salesforce, you can create an developer account in https://developer.salesforce.com.

Our server has only two methods, one to authenticate the user, and another one to grab some Salesforce data:

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.

Mobile Client Implementation

Our client application has a login form, a ListView using the Dynamic Appearance style to display the cases data, and an third tab that shows all the selected case details.

 

The data is de-serialized back to a TFDMemTable using the FireDAC reflection classes, as you can see in the excerpts below:

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;

There are some other details in the client application, like saving the login information, the general app workflow, look&feel and etc., that you can review downloading the samples in the link by the end of this post.

 

All the source code from this sample is located here, in my personal GitHub: https://github.com/flrizzato/CDATA

And stay tuned, next week I’ll show how you can easily connect an real SAP/R3 implementation directly from an Delphi or C++ Builder, and display/modify some data from the ERP, with almost no code!

ps: in order to run the sample, you’ll need to create an Salesforce developer account and add the login information and security token in the FireDAC connection before trying to run.

 

 

Advertisements

Delphi Academy: Prototipos de UI

Esta semana llevamos al aire otro episodio sobre desarrollo de apps en el Delphi Academy. En este episodio presentamos algunos ejemplos que pueden ser utilizados como base para la creación de nuevas aplicaciones, los llamados prototipos.

El objetivo fue concentrar en estos ejemplos el conocimiento obtenido en los episodios anteriores sobre desarrollo móvil, en busca de modelos profesionales de apps.

También hablamos sobre diálogos modales, y aplicaciones con múltiples formularios, entonces si tiene dudas en esta área, vale la pena una visita a nuestro playlist aquí!

Aquí hay algunos ejemplos de los proyectos que se han puesto a disposición en nuestro repositorio de fuentes:

Realmente espero que sea útil de alguna manera, y en el próximo episodio, hablaremos de entrada de datos en FMX!

Inscripciones siempre abiertas, 24×7!

Delphi Academy: Protótipos de UI

Esta semana levamos ao ar mais um episódio sobre desenvolvimento de apps no Delphi Academy. Neste episódio apresentamos alguns exemplos os quais podem ser utilizados como base para a criação de novas apps, os chamados protótipos.

O objetivo foi concentrar nestes exemplos o conhecimento obtido nos episódios anteriores sobre desenvolvimento mobile, em busca de modelos profissionais de apps.

Também falamos sobre diálogos modais, e aplicações com múltiplos formulários, então caso tenha dúvidas nesta área, vale a pena uma visita ao nosso playlist aqui!

Eis aqui alguns exemplos dos projetos que foram disponibilizados em nosso repositório de fontes:

Realmente espero que seja útil de alguma forma, e no próximo episódio, falaremos de entrada de dados em FMX!

Inscrições sempre abertas, 24×7!

Desarrollo Mobile en Delphi Academy

La agenda de este semestre de Delphi Academy se centra principalmente en el desarrollo de aplicaciones móviles.

Empezamos el semestre hablando sobre las mejores prácticas para la interfaz de usuario, con el episodio “Aplicaciones móviles: Aciertos/Errores en el UI“, el cual fue al aire en 11/08:

Este episodio tiene algunos ejemplos interesantes, los cuales se pueden encontrar en nuestro repositorio Git: https://github.com/flrizzato/DelphiAcademy/tree/master/30-MobileYesNo

En la secuencia hablamos sobre los Sensores disponibles en los dispositivos móviles, los cuales deben ser ampliamente empleados en sus aplicaciones. Este episodio, llamado “Aplicaciones móviles: Sensores y Dispositivos” fue al aire el 25/08:

Los ejemplos de esta presentación son básicamente los mismos que acompañan al producto (Delphi y C++ Builder), de todos modos están organizados en nuestro repositorio también: https://github.com/flrizzato/DelphiAcademy/tree/master/31-MobileSensors

Esta serie sobre móviles se inició en el primer semestre de este año, con tres episodios enfocados en mostrar los conceptos básicos del desarrollo FireMonkey (“Empezando con Aplicaciones Móviles en Delphi y C ++ Builder”, “Aplicaciones Móviles: Buenas Prácticas de UI” y “Aplicaciones Móviles: Acceso a Datos“). Si no los ha encontrado, vaya directamente a este enlace: http://embt.co/AcademyLA-replay

Para la próxima semana, vamos a intentar poner todo este aprendizaje en un ejemplo integrado, el cual podrá ser reutilizado como base para nuevos proyectos. ¡Entonces nos vemos el viernes!

ps: No se olvide de inscribirse => http://embt.co/AcademyLA

 

Desenvolvimento Mobile no Delphi Academy

A agenda deste semestre do Delphi Academy está focada principalmente em desenvolvimento de aplicações mobile.

Iniciamos o semestre falando de boas práticas para a interface do usuário, com o episódio “Aplicações Mobile: Acertos/Erros na UI“, o qual foi ao ar em 08/08:

Este episódio possui alguns exemplos interessantes, os quais podem ser encontrados em nosso repositório Git: https://github.com/flrizzato/DelphiAcademy/tree/master/30-MobileYesNo

Na sequência falamos sobre os Sensores disponíveis nos dispositivos móveis, os quais devem ser amplamente empregados em suas aplicações. Este episódio, chamado de “Aplicações Mobile: Sensores e Devices” foi ao ar em 22/08:

Os exemplos desta apresentação são basicamente os mesmos que acompanham o produto (Delphi e C++ Builder), de qualquer maneira eles estão organizados em nosso repositório também: https://github.com/flrizzato/DelphiAcademy/tree/master/31-MobileSensors

Esta série sobre mobile teve inicio ainda no primeiro semestre deste ano, com três episódios focados em mostrar os conceitos básicos do desenvolvimento FireMonkey (“Iniciando com Aplicações Mobile em Delphi e C++ Builder”, “Aplicações Mobile: Boas Práticas de UI” e “Aplicações Mobile: Acesso a Dados”). Caso não os tenha encontrado, vá direto a este link: http://embt.co/AcademyBR-replay

Para a próxima semana, vamos tentar colocar todo este aprendizado em um exemplo integrado, o qual poderá ser reutilizado como base para novos projetos. Então nos vemos na terça-feira!

ps: não deixe de se inscrever => http://embt.co/AcademyBR

 

RAD Studio Tokyo Release 1 Disponible

Embarcadero acaba de liberar el RAD Studio Tokyo Release 1 (formalmente 10.2.1)

Overview   Embarcadero Website(1).png

Usted puede leer más sobre el lanzamiento en este artículo de Marco Cantu, publicado en nuestro portal para desarrolladores:
https://community.embarcadero.com/article/16556-rad-studio-10-2-1-released-today

En esta página usted encuentra toda la documentación de este release, incluyendo enlaces para descargar, y la lista macro de cuestiones solucionadas y mejoras:
http://docwiki.embarcadero.com/RADStudio/Tokyo/es/10.2_Tokyo_-_Release_1

Para obtener una descripción más detallada de todos los temas cubiertos por este release, por favor visite esta página:
http://edn.embarcadero.com/article/44763

Tokyo Release 1 significa un esfuerzo significativo en la solución de problemas causados ​​por actualizaciones en los sistemas operativos compatibles, como los cambios en el  Windows 10 Creators Update, y también la eliminación de APIs en la última versión estable de Xcode.

Estamos muy contentos con este release, al permitir que nuestros clientes continúen entregando software de alto rendimiento en tiempo récord!

RAD Studio Tokyo Release 1 Disponível

A Embarcadero acaba de disponibilizar o RAD Studio Tokyo Release 1 (formalmente 10.2.1)

Overview   Embarcadero Website.png
Você pode ler mais sobre o lançamento neste artigo de Marco Cantu publicado em nosso portal para desenvolvedores:
https://community.embarcadero.com/article/16556-rad-studio-10-2-1-released-today

Nesta página você encontra toda a documentação desta release, incluindo links para download, e a lista macro de questões solucionadas e melhorias:
http://docwiki.embarcadero.com/RADStudio/Tokyo/pt/10.2_Tokyo_-_Release_1

Para obter uma descrição mais detalhada de todos os issues cobertos por esta release, por favor visite esta página:
http://edn.embarcadero.com/article/44763

O Tokyo Release 1 significa um esforço significativo na solução de problemas causados por atualizações nos sistemas operacionais suportados, como as mudanças no mecanismo de thread do Windows 10 Creators Update, e também a remoção de APIs na última versão estável do Xcode.

Estamos muito felizes com esta release, ao permitir que nossos clientes continuem entregando software de alta performance em tempo recorde!