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 y C++

Un tema recurrente en el desarrollo móvil es el rendimiento (o falta de rendimiento) del emulador Android de Google (utilizado de forma predeterminada por Delphi y C++ Builder).

Aquí viene una solución muy interesante (con un rendimiento óptimo): el uso de máquinas virtuales con Android.

Uno de ellos es el BlueStacks (http://www.bluestacks.com). La instalación tiene ningún secreto, básicamente un NNF (Next-Next-Finish).

Si usted está utilizando un PC con Windows, solo tiene que reiniciar el “adb” (puente de depuración, que es parte del SDK de Android), y su Android VM ya está disponible para el IDE de Delphi o C++, debidamente enumerado como un emulador.

Reiniciando el “adb” desde la línea de comandos:

adb.exe kill-server
adb.exe devices

Pero, si está ejecutando su Delphi en una máquina virtual de Windows en un equipo MAC, lo ideal es instalar BlueStacks en el sistema host, es decir, en OS X. En este caso, para que el IDE (dentro de la máquina virtual de Windows) puede “ver” el emulador, se requiere un pequeño truco utilizando Putty (emulador de terminal), que se describe con todo detalle en este post de Jim McKeeth: http://delphi.org/2013/09/debugging-against-a-remote-android-emulator. Es exactamente la misma técnica que se aplicará a el BlueStacks.

Y por último, pero no menos importante:

El BlueStacks es un emulador se mantiene (no “ARM”), pero viene equipado con LibHoudini (capa de emulación ARM para los procesadores móviles de Intel). Este proyecto se mantiene por Intel directamente, para hacer frente a la disponibilidad de aplicaciones para esta plataforma. En otras palabras, este emulador es capaz de ejecutar normalmente aplicaciones ARM (generados por Delphi y C ++).

El único detalle que se debe poner atención, antes de intentar ejecutar la aplicación: Ir a las opciones de despliegue (Project/Deployment), y desactive el “assembly” de verificación automática de plataforma, que se añadió automáticamente en su aplicación durante la creación del proyecto:

<missing image>

Y aquí está el resultado, una aplicación Delphi con IBLite corriendo directamente en BlueStacks:

<missing image>

Recordando que alguna incompatibilidad aún puede surgir (no he probado todas las aplicaciones que tengo), y que no está soportado oficialmente por Embarcadero en este momento, recomiendo a todos los que se están desarrollando para móvil, dedique algo de tiempo para probar, a veces parece más rápido que un dispositivo físico!

¡Hasta la próxima!

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!