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

Results from the Embarcadero Academic Program in Brazil

v-deo-satc-cria-aplicativo-para-movimentar-protese-de-mao

Fábio Feltrin da Silveira and João Mota Neto

Embarcadero has a Academic Program. Basically, any formal school can have Embarcadero tools available in their labs, and for all their students, paying a symbolic price per unit. If you want to know more, please contact Embarcadero or a distributor/reseller in your region.

Here in Brazil we are adding more and more universities to the program, and the first results are showing up. I’m here to share one of these cases.

SATC is one of our affiliated. They are teaching Delphi inside their regular programming course, and also using the tool in some researches, like this one reported here:
http://www.engeplus.com.br/noticia/tecnologia/2016/v-deo-satc-cria-aplicativo-para-movimentar-protese-de-mao/

The text above is in brazilian portuguese, but in short, it says:

After six months of study, research with a prosthetic hand developed in Satc creates application able to make an artificial hand to move by an smartphone. The tool enables the registration of several movements that make fingers and forearm to move by means of voice command.

The artificial hand was created in Satc by 3D printing method. The voice command smartphone was developed in Delphi, which allows the application to run on any platform.

Here you have two videos showing the prototype in action:
https://www.youtube.com/watch?v=z2Hb91mCJDc
https://www.youtube.com/watch?v=yOvD4JanJLU

I’d like to congratulate the university and all the team involved in this project (Fábio Feltrin da Silveira and his coordinator, João Mota Neto) by this incredible achievement, and please, keep us informed about the project status!

Finally, If you are a teacher or a student in any part of the world, and want to have Embarcadero tools in your school, please contact us (or any partner in your region) and let’s innovate together!

Delphi Academy Latinoamérica – Nuevos Temas

banner_spanish

Delphi Academy ha sido un gran éxito! Estamos en el episodio número 5, y debido a tal receptividad, ya tenemos más 5 episodios en la agenda, a saber:

* 01/07 – Visualización de Datos con FireMonkey 3D
* 15/07 – Comprender y utilizar layouts FireMonkey
* 29/07 – Uso de efectos, animaciones y transiciones en FireMonkey
* 12/08 – Acceso a datos con FireDAC
* 26/08 – La migración de BDE y DBX a FireDAC

Si quieres puedes encontrar lo que ha pasado, todos los episodios están disponibles en este enlace: http://embt.co/DelphiAcademyLatAmReplay. En esta playlist se encuentran los siguientes temas:

  • Control de una aplicación Windows desde una aplicación móvil con AppTethering
  • LiveBindings: desde lo básico hasta técnicas avanzadas
  • Integración de servicios en la nube con REST/JSON
  • Introducción a NoSQL con MongoDB y FireDAC
  • Uso del Windows Runtime (WinRT) y la Universal Windows Platform (UWP) en Windows 10

En la descripción de cada uno de los videos, hay un enlace para los ejemplos (y también la presentación en PDF). O usted puede todavía encontrar todos los ejemplos directamente aquí: http://cc.embarcadero.com/Author/4821.

Y no termina ahí! Usted está invitado a contribuir con sugerencias sobre los temas que le gustaría ver en Delphi Academy. Deje sus comentarios sobre este artículo y haremos todo lo posible para servirle!

Antes de terminar, una vez más, estás invitado a las próximas presentaciones. Simplemente haga clic aquí http://embt.co/DelphiAcademyLatAm y regístrate, recordando que debe registrarse para cada uno de los temas de interés.

Bluestacks como emulador Android para Delphi/C++ Builder

Um tema recorrente nas rodas de conversa sobre mobile é a performance (ou não performance) do emulador Android do Google (utilizado por default pelo Delphi e C++ Builder).

Eis que surge uma solução muito interessante (e de ótima performance): a utilização de máquinas virtuais com Android.

Uma delas é o BlueStacks (http://www.bluestacks.com/). A instalação não tem segredo algum, basicamente um NNF (Next-Next-Finish).

Se você está utilizando um PC com Windows, basta reiniciar o “adb” (debug bridge, parte do SDK do Android), e sua VM Android já estará disponível para a IDE do Delphi ou C++ Builder, devidamente listada como um emulador.

Reiniciando o adb, diretamente via comando de linha:

adb.exe kill-server
adb.exe devices

Caso esteja rodando seu Delphi em uma VM Windows, em um equipamento MAC, o ideal é instalar o BlueStacks no sistema root, ou seja, no OSX. Neste caso, para que a IDE (dentro da VM Windows) consiga “ver” o emulador, é necessário um pequeno truque utilizando o Putty (emulador de terminais), descrito com riqueza de detalhes neste post do Jim McKeeth: http://delphi.org/2013/09/debugging-against-a-remote-android-emulator/. É exatamente a mesma técnica a ser aplicada ao BlueStacks.

E por fim, mas não menos importante:

O BlueStacks é um emulador Intel (não ARM), porém vem equipado com o LibHoudini (camada de emulação ARM para processadores mobile Intel). Este projeto é mantido pela própria Intel, para resolver a disponibilidade de apps para Android/Intel. Em outras palavras, este emulador roda normalmente apps ARM (geradas pelo Delphi e pelo C++).

O único detalhe é, antes de tentar executar a aplicação, vá até a opção deployment, e desmarque o assembly de checagem automática de plataforma, incorporado pela IDE a sua aplicação:

<missing image>

E aqui o resultado, uma app Delphi com IBLite rodando no BlueStacks:

<missing image>

Lembrando que alguma incompatibilidade ainda pode aparecer (não testei todas as apps que tenho), e que não é oficialmente suportado pela Embarcadero neste momento, recomendo a todos que estão desenvolvendo para mobile reservar algum tempo para testar, em algumas ocasiões me pareceu ainda mais rápido que um device físico!

Até a próxima!

Dados no dispositivo é uma necessidade!

Você já teve uma app que parou de funcionar em seu smartphone ou tablet porque você ficou sem conexão? Existe algo mais frustrante que perder algo crítico que está quase pronto devido a uma perda de conexão de rede? Por que não ter uma app com dados locais, ou ao menos com um cache de dados locais? Aí você me pergunta: e a segurança desses dados? Já ouviu sobre criptografia AES de 256 bit? Devem ser necessários ao menos 10 bilhões de anos para quebrar esse tipo de esquema!

Então por que não utilizamos mais desta técnica? Qual a razão de nos preocuparmos com perdas de dados como esta onde um laptop foi perdido, ou esta de uma importante companhia da área de saúde, se os dados estivessem propriamente protegidos com um mecanismo de criptografia de 256 bit?

Normalmente “protegemos” nossos dados utilizando um usuário/senha e mantendo os dados remotos… porque não colocar os dados no device e ter uma aplicação mais robusta? Dessa maneira podemos nos livrar do medo da temida 1 barra de conectividade, ou dispositivos perdidos ou roubados. Por que não usar a criptografia AES de 256 bits para proteger o seu bem mais precioso… os seus dados?

Interbase DB é um banco de dados (server ou embedded) que suporta criptografia de 256 bit para proteger campos, linhas ou todo o banco de dados de olhos curiosos indesejados. SQLite por sua vez, não possui este nível de granularidade de criptografia, normalmente comportando-se como um arquivo texto. Interbase ocupa muito pouco espaco (3 MB), tornando-o perfeito para devices, smartphones, tablets, IoT, equipamentos médicos, etc. Por falar nisso, o Interbase atualmente suporta iOS, Android, Windows, Linux e OSX.

A coisa mais legal é que o InterBase usa o mesmo formato de dados através de todas estas plataformas diferentes. Por que é tão legal você pergunta? Você pode literalmente copiar o arquivo de banco de dados do iOS para o Android para o Windows, etc., sem modificar um único bit de dados. Considere o tempo que você vai ganhar testando em diferentes plataformas!

Vamos lá arquitetos de dados e desenvolvedores de software, não tenham medo de colocar os dados no dispositivo com o InterBase DB e usar a criptografia AES de 256 bits para os dados que você não pode se dar ao luxo de perder. Comece por fazer o download da versão de avaliação gratuita e siga a página de webinars e exemplos do Interbase.

Tour de RAD Studio XE7 en México y Colombia

Este post es sólo para registrar nuestro tour por Colombia y México, mostrando el nuevo RAD Studio XE7!

En nombre de nuestros socios, GOPAC (http://www.gopac.com.mx) y IT Tools (http://www.ittools.co), y también de Embarcadero (http://www.embarcadero.com/es), me gustaría decir un “muchísimas gracias” a todos los miembros de nuestra gran comunidad!

En este enlace se pueden descargar todas las muestras (y algunas más):

http://cc.embarcadero.com/item/30002

Y aquí se tiene una copia de la presentación:

http://www.slideshare.net/fernandoluizrizzato/rad-studio-xe7-live-world-tour-esp

Y, por supuesto, algunas fotos de nuestras paradas!

Delphi Tour 2014: Participe!

Você está convidado a conhecer de perto todas as novidades do RAD Studio XE6 (Delphi, C++ Builder e HTML5 Builder) durante o Delphi Tour 2014!

Razões para participar? Vou citar apenas algumas!

Você sabia que…

… seus aplicativos VCL serão capazes de acessar sensores,  utilizar novos componentes e funcionalidades como o Visual LiveBindings, e ainda novos estilos da VCL?

… você pode criar aplicações móveis complementares, e aplicativos de controle remoto, que se conectam com seus aplicativos de desktop VCL, via novos componentes para Tethering?

… você pode monetizar seus aplicativos móveis com o novo suporte para a compra de aplicativos e de publicidade no ​​iOS e Android?

… você pode usar a nova integração de serviços em nuvem para incorporar as notificações push, o armazenamento de arquivos em nuvem e a funcionalidade de gerenciamento de usuários em seus aplicativos via BaaS (Backend as a Service), utilizando os provedores mais populares do mercado?

… agora você conta com recursos exclusivos em C++, incluindo a capacidade de criar aplicações Android e iOS a partir de um único projeto, e suporte para pacotes de 64 bits para Windows?

Entusiasmado tanto quanto eu? Então não deixe para depois, pois as vagas são limitadas. Faça já sua inscrição para a cidade mais próxima!

http://www.embarcaderobr.com.br/tour/

Aguardamos sua presença!