SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
Antonio	
  Musarra's	
  Blog	
   Document Revision:1.0-IT
The	
  ideal	
  solution	
  for	
  a	
  problem	
   Blog:	
  http://www.dontesta.it	
  
LinkedIn:	
  http://it.linkedin.com/in/amusarra	
  	
  
Google+:	
  https://plus.google.com/+AntonioMusarra	
  
Mail:	
  antonio.musarra@gmail.com	
  
	
  
09/04/14	
   1	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
	
  
	
  
SugarCRM	
  REST	
  API:	
  Un’applicazione	
  
in	
  appena	
  dieci	
  minuti	
  
Mi	
   capita	
   abbastanza	
   spesso	
   di	
   navigare	
   e	
   rispondere	
   a	
   quesiti	
   posti	
   sul	
  
portale	
  Stack	
  Overflow1.	
  In	
  una	
  passata	
  recente	
  sera,	
  mi	
  sono	
  imbattuto	
  su	
  una	
  
questione	
   cui	
   ho	
   risposto	
   e	
   in	
   seguito	
   preso	
   spunto	
   per	
   quest’articolo.	
   La	
  
domanda2	
  	
  posta	
  su	
  Stack	
  Overflow	
  da	
  cui	
  ho	
  preso	
  spunto	
  recita	
  esattamente:	
  
	
  
“I	
   am	
   trying	
   to	
   login	
   to	
   SugarCRM	
   using	
  
jQuery	
  and	
  Sugar	
  REST	
  API	
  and	
  i	
  want	
  to	
  create	
  a	
  html	
  5	
  
app	
  please	
  tell	
  me	
  how	
  to	
  authenticate	
  to	
  sugarCRM	
  in	
  
my	
  html	
  file.”	
  
	
  
Da	
  questa	
  domanda	
  è	
  nato	
  quasi	
  immediatamente	
  il	
  titolo	
  dell’articolo	
  che	
  
sintetizza	
  ciò	
  che	
  poi	
  sarà	
  il	
  risultato	
  finale	
  dell’idea,	
  in	
  altre	
  parole,	
  realizzare	
  
un’applicazione	
   (semplice)	
   HTML	
   5	
   (costruita	
   veramente	
   in	
   dieci	
   minuti)	
   che	
  
interagisca	
  con	
  il	
  sistema	
  SugarCRM	
  sfruttando	
  le	
  API	
  REST;	
  in	
  un	
  certo	
  senso	
  ho	
  
appena	
  espresso	
  un	
  requisito	
  utente.	
  Il	
  risultato	
  finale	
  della	
  nostra	
  applicazione	
  
sarà	
  simile	
  a	
  quanto	
  indicato	
  nel	
  mockup	
  di	
  Figura	
  1.	
  
	
  
	
  
	
  	
  	
  	
  	
  Figura	
  1	
  Mockup	
  dell’applicazione	
  HTML	
  5	
  SugarCRM	
  REST	
  API	
  Application.	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
1	
  Stack	
  Overflow	
  è	
  un	
  sito	
  web	
  che	
  fa	
  parte	
  della	
  rete	
  Stack	
  Exchange	
  in	
  cui	
  si	
  possono	
  porre	
  domande	
  riguardo	
  a	
  vasti	
  
argomenti	
  di	
  programmazione.	
  
2	
  I	
  dettagli	
  sulla	
  domanda	
  SugarCRM	
  REST	
  API	
  and	
  jquery	
  mobile	
  sono	
  disponibili	
  all’URL	
  2	
  I	
  dettagli	
  sulla	
  domanda	
  SugarCRM	
  REST	
  API	
  and	
  jquery	
  mobile	
  sono	
  disponibili	
  all’URL	
  
http://stackoverflow.com/questions/20904378/sugarcrm-­‐rest-­‐api-­‐and-­‐jquery-­‐mobile	
  
Antonio	
  Musarra's	
  Blog	
   Document Revision:1.0-IT
The	
  ideal	
  solution	
  for	
  a	
  problem	
   Blog:	
  http://www.dontesta.it	
  
LinkedIn:	
  http://it.linkedin.com/in/amusarra	
  	
  
Google+:	
  https://plus.google.com/+AntonioMusarra	
  
Mail:	
  antonio.musarra@gmail.com	
  
	
  
09/04/14	
   2	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
	
  
	
  
1. Da	
  dove	
  partire?	
  
Il	
   titolo	
   del	
   paragrafo	
   è	
   proprio	
   il	
   classico	
   bel	
   domandone,	
   la	
   prima	
  
domanda	
  che	
  sicuramente	
  tutti	
  pongono	
  a	
  se	
  stessi	
  nel	
  momento	
  in	
  cui	
  si	
  parte	
  
con	
  un	
  progetto	
  nuovo.	
  
Non	
   vorrei	
   porre	
   troppa	
   attenzione	
   al	
   codice	
   necessario	
   per	
   realizzare	
  
l’applicazione,	
  al	
  contrario,	
  ritengo	
  più	
  importante	
  fare	
  insieme	
  la	
  lista	
  di	
  quali	
  
sono	
   gli	
   strumenti	
   fondamentali	
   da	
   mettere	
   nella	
   propria	
   borsa	
   degli	
   attrezzi	
  
per	
   l’implementazione	
   di	
   questo	
   requisito.	
   Generalmente	
   tra	
   gli	
   strumenti	
   che	
  
consentono	
  di	
  realizzare	
  un	
  progetto	
  è	
  possibile	
  annoverare	
  i	
  seguenti	
  elementi:	
  
	
  
• Linguaggi;	
  
• Tecnologie;	
  
• Framework.	
  
	
  	
  
Il	
  titolo	
  del	
  requisito	
  stesso	
  contiene	
  già	
  molti	
  indizi	
  che	
  ci	
  consentono	
  di	
  
fare	
  uno	
  schema	
  del	
  genere:	
  
	
  
• L’applicazione	
  deve	
  essere	
  in	
  HTML	
  5:	
  
o HTML	
  5	
  è	
  linguaggio	
  base	
  per	
  la	
  realizzazione	
  della	
  struttura	
  
per	
  la	
  nostra	
  applicazione;	
  
o CSS3	
  è	
  la	
  base	
  per	
  lo	
  style	
  che	
  la	
  nostra	
  applicazione	
  deve	
  
avere.	
  
• L’applicazione	
  deve	
  interagire	
  con	
  alcuni	
  servizi	
  REST	
  esposti	
  da	
  
SugarCRM:	
  
o Java	
   Script	
   è	
   il	
   linguaggio	
   con	
   cui	
   si	
   scriverà	
   il	
   codice	
  
necessario	
  per	
  interagire	
  con	
  i	
  servizi	
  REST	
  di	
  SugarCRM;	
  
o Ajax	
   è	
   la	
   tecnologia	
   alla	
   base	
   dell’interazione	
   tra	
   la	
   nostra	
  
applicazione	
  HTML	
  5	
  e	
  i	
  servizi	
  remoti	
  REST	
  di	
  SugarCRM.	
  
	
  
Ci	
   siamo	
   quasi.	
   Lo	
   schema	
   di	
   dettaglio	
   precedente	
   riporta	
   le	
   chiavi	
  
linguaggi	
  e	
  tecnologie,	
  all’appello	
  sono	
  però	
  ancora	
  assenti	
  questi	
  benedetti	
  (e	
  lo	
  
sono	
   davvero)	
   framework.	
   Per	
   questi	
   ultimi	
   attrezzi	
   ho	
   deciso	
   mettere	
   dentro	
  
due	
  “grandi	
  nomi”:	
  
	
  	
  	
  
• Bootstrap:	
  è	
  possibile	
  affermare	
  che	
  sia	
  il	
  re	
  dei	
  framework	
  per	
  lo	
  
sviluppo	
   d’interfacce	
   web	
   e	
   lo	
   standard	
   di	
   fatto	
   come	
   punto	
   di	
  
partenza	
   per	
   la	
   realizzazione	
   di	
   template	
   HTML	
   preconfezionati,	
  
soprattutto	
   in	
   ottica	
   del	
   Responsive	
  Web	
  Design	
  (RWD).	
   Nel	
  nostro	
  
caso	
  frutteremo	
  quindi	
  le	
  basi	
  di	
  questo	
  framework	
  per	
  costruire	
  con	
  
pochissimo	
  sforzo	
  il	
  layout	
  della	
  nostra	
  applicazione;	
  
• jQuery:	
  è	
  il	
  più	
  popolare	
  framework	
  Java	
  Script	
  cross-­‐browser	
  che	
  si	
  
propone	
  come	
  obiettivo	
  quello	
  di	
  semplificare	
  la	
  programmazione	
  
lato	
   client	
   di	
   applicazioni	
   HTML.	
   Nel	
   nostro	
   caso	
   sfrutteremo	
  
principalmente	
   il	
   componente	
   Ajax	
   responsabile	
   del	
   colloquio	
   tra	
   la	
  
nostra	
  applicazione	
  e	
  i	
  servizi	
  remoti	
  REST	
  di	
  SugarCRM.	
  
Antonio	
  Musarra's	
  Blog	
   Document Revision:1.0-IT
The	
  ideal	
  solution	
  for	
  a	
  problem	
   Blog:	
  http://www.dontesta.it	
  
LinkedIn:	
  http://it.linkedin.com/in/amusarra	
  	
  
Google+:	
  https://plus.google.com/+AntonioMusarra	
  
Mail:	
  antonio.musarra@gmail.com	
  
	
  
09/04/14	
   3	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
	
  
	
  
	
  
Molto	
   bene,	
   direi	
   che	
   la	
   nostra	
   borsa	
   degli	
   attrezzi	
   è	
   completa	
   da	
   poter	
  
consentire	
  l’avvio	
  dell’implementazione	
  del	
  progetto.	
  In	
  Tabella	
  1	
  ho	
  indicato	
  il	
  
riepilogo	
  degli	
  strumenti	
  necessari	
  per	
  l’implementazione	
  del	
  progetto.	
  
	
  
Nome	
  Applicazione	
   SugarCRM	
  REST	
  API	
  Application	
  
Tipo	
   Client	
  Side	
  (via	
  Browser	
  Web)	
  
Linguaggi	
   HTML	
  5/CSS3/Java	
  Script	
  
Tecnologie	
   Ajax,	
  REST	
  
Framework	
   Bootstrap,	
  jQuery	
  Core,	
  jQuery	
  UI	
  
Tabella	
  1	
  Caratteristiche	
  tecniche	
  dell’applicazione	
  da	
  realizzare.	
  
In	
  linea	
  generale	
  l’utilizzo	
  di	
  strumenti	
  adeguati	
  per	
  la	
  realizzazione	
  di	
  un	
  
progetto,	
   consente	
   il	
   raggiungimento	
   dell’obiettivo	
   nel	
   minor	
   tempo	
   possibile	
  
aumentando	
   la	
   qualità	
   del	
   progetto	
   stesso	
   soprattutto	
   in	
   termini	
   di	
  
manutenibilità.	
  
	
  
2. Interazione	
  con	
  i	
  servizi	
  REST	
  
I	
   dati	
   della	
   nostra	
   applicazione	
   d’esempio	
   provengono	
   dal	
   sistema	
  
SugarCRM,	
   richiesti	
   tramite	
   l’interfaccia	
   REST	
   (SugarCRM)	
   che	
   SugarCRM	
  
pubblicamente	
  espone.	
  
I	
   requisiti	
   della	
   nostra	
   applicazione	
   riguardo	
   all’accesso	
   ai	
   dati	
   di	
  
SugarCRM	
  sono	
  i	
  seguenti:	
  
	
  
• Login	
  sul	
  sistema	
  SugarCRM	
  su	
  base	
  Username	
  e	
  Password;	
  
• Visualizzazione	
   d’informazioni	
   circa	
   il	
   sistema	
   SugarCRM	
   cui	
   si	
  
compie	
  la	
  connessione;	
  
• Visualizzazione	
   di	
   una	
   serie	
   di	
   dati	
   riguardante	
   l’utente	
   che	
   ha	
  
eseguito	
  l’accesso	
  a	
  SugarCRM;	
  
• Visualizzazione	
   delle	
   attività	
   (calls,	
   task,	
   opportunities)	
   in	
   carico	
  
all’utente	
  che	
  ha	
  eseguito	
  l’accesso	
  a	
  SugarCRM:	
  
o Per	
   ogni	
   attività	
   deve	
   essere	
   possibile	
   aprire	
   il	
   dettaglio	
  
direttamente	
   dall’interfaccia	
   di	
   SugarCRM	
   e	
   senza	
   eseguire	
  
nuovamente	
  l’accesso.	
  
	
  
Le	
  informazioni	
  estratte	
  da	
  SugarCRM	
  saranno	
  visualizzate	
  tramite	
  l’ausilio	
  
del	
   modulo	
   UI	
   widgets	
   accordion (The jQuery Foundation., 2014).	
   I	
   dati	
   che	
   i	
  
servizi	
  REST	
  restituisco,	
  sono	
  in	
  formato	
  JSON	
  (ECMA International, 2013).	
  
	
  
Le	
  chiamate	
  alle	
  “operazioni”	
  REST	
  (SugarCRM)	
  che	
  l’applicazione	
  indirizza	
  
a	
  SugarCRM	
  (via	
  Ajax)	
  sono	
  le	
  seguenti:	
  
	
  
• login(user_auth,	
  application_name,	
  name_value_list)	
  
Antonio	
  Musarra's	
  Blog	
   Document Revision:1.0-IT
The	
  ideal	
  solution	
  for	
  a	
  problem	
   Blog:	
  http://www.dontesta.it	
  
LinkedIn:	
  http://it.linkedin.com/in/amusarra	
  	
  
Google+:	
  https://plus.google.com/+AntonioMusarra	
  
Mail:	
  antonio.musarra@gmail.com	
  
	
  
09/04/14	
   4	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
	
  
	
  
• get_server_info()	
  
• get_entry(session,module_name,	
  id,	
  select_fields,	
  
link_name_to_fields_array,	
  track_view)	
  
• seamless_login(session)	
  
• get_upcoming_activities(session)	
  
	
  
Le	
  figure	
  a	
  seguire	
  mostrano	
  l’applicazione	
  appena	
  realizzata	
  in	
  esecuzione,	
  
dove	
  sono	
  evidenti	
  i	
  requisiti	
  implementati	
  definiti	
  in	
  precedenza.	
  L’applicazione	
  
visualizzata	
  nelle	
  figure	
  che	
  seguono	
  è	
  in	
  esecuzione	
  su	
  di	
  un	
  iPad	
  e	
  come	
  potete	
  
vedere	
   non	
   sono	
   evidenziati	
   problemi	
   di	
   visualizzazione,	
   questa	
   possibilità	
   è	
  
gratuitamente	
   offerta	
   dal	
   framework	
   Bootstrap	
   grazie	
   al	
   pieno	
   supporto	
   del	
  
Responsive	
  Web	
  Design	
  (RWD),	
  e	
  noi	
  evitiamo	
  di	
  scrivere	
  noiose	
  righe	
  di	
  codice.	
  
	
  
L’applicazione	
   realizzata	
   è	
   disponibile	
   live	
   e	
   raggiungibile	
   all’indirizzo	
  
http://amusarra.github.io/Project/SugarCRM/REST/ClientApplication/HTMLSug
arCRMRESTApplication.html	
  
L’istanza	
  SugarCRM	
  di	
  riferimento	
  (Community	
  Edition	
  6.5	
  su	
  PostgreSQL)	
  
a	
   cui	
   l’applicazione	
   si	
   connette	
   è	
   live	
   e	
   raggiungibile	
   all’indirizzo	
  
http://sugarcrmpgsql-­‐shiruslabs.rhcloud.com	
  
	
  	
  
	
  
	
  
Figura	
  2	
  Errore	
  durante	
  l’accesso	
  a	
  SugarCRM	
  (fase	
  di	
  login).	
  
Antonio	
  Musarra's	
  Blog	
   Document Revision:1.0-IT
The	
  ideal	
  solution	
  for	
  a	
  problem	
   Blog:	
  http://www.dontesta.it	
  
LinkedIn:	
  http://it.linkedin.com/in/amusarra	
  	
  
Google+:	
  https://plus.google.com/+AntonioMusarra	
  
Mail:	
  antonio.musarra@gmail.com	
  
	
  
09/04/14	
   5	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
	
  
	
  
	
  
Figura	
  3	
  Accesso	
  a	
  SugarCRM	
  avvenuto	
  con	
  successo.	
  
	
  
	
  
Figura	
  4	
  Visualizzazione	
  delle	
  informazioni	
  di	
  sistema	
  cui	
  si	
  è	
  connessi.	
  
	
  
Antonio	
  Musarra's	
  Blog	
   Document Revision:1.0-IT
The	
  ideal	
  solution	
  for	
  a	
  problem	
   Blog:	
  http://www.dontesta.it	
  
LinkedIn:	
  http://it.linkedin.com/in/amusarra	
  	
  
Google+:	
  https://plus.google.com/+AntonioMusarra	
  
Mail:	
  antonio.musarra@gmail.com	
  
	
  
09/04/14	
   6	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
	
  
	
  
	
  
Figura	
  5	
  Visualizzazione	
  delle	
  informazioni	
  sull’utente	
  che	
  ha	
  eseguito	
  l’accesso.	
  
	
  
	
  
Figura	
  6	
  Visualizzazione	
  delle	
  attività	
  in	
  carico	
  all’utente	
  che	
  ha	
  eseguito	
  l’accesso	
  a	
  SugarCRM.	
  
	
  
Antonio	
  Musarra's	
  Blog	
   Document Revision:1.0-IT
The	
  ideal	
  solution	
  for	
  a	
  problem	
   Blog:	
  http://www.dontesta.it	
  
LinkedIn:	
  http://it.linkedin.com/in/amusarra	
  	
  
Google+:	
  https://plus.google.com/+AntonioMusarra	
  
Mail:	
  antonio.musarra@gmail.com	
  
	
  
09/04/14	
   7	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
	
  
	
  
	
  
Figura	
  7	
  Accesso	
  alla	
  visualizzazione	
  della	
  scheda	
  di	
  dettaglio	
  da	
  My	
  Upcoming	
  Activities.	
  
3. Conclusioni	
  
Con	
  gli	
  strumenti	
  adeguati	
  abbiamo	
  avuto	
  modo	
  di	
  costatare	
  come	
  in	
  questi	
  
ultimi	
   anni	
   in	
   particolare	
   sia	
   divenuto	
   semplice	
   e	
   quasi	
   immediato	
   realizzare	
  
applicazioni	
   web,	
   che	
   interagiscono	
   con	
   servizi	
   prettamente	
   di	
   tipo	
   REST	
   per	
  
attingere	
   ai	
   dati.	
   L’utilizzo	
   di	
   framework	
   commisurati	
   al	
   progetto	
   influisce	
  
positivamente	
   sul	
   risparmio	
   di	
   tempo	
   necessario	
   per	
   l’implementazione,	
   non	
  
considerando	
  ovviamente	
  il	
  tempo	
  necessario	
  per	
  l’apprendimento	
  dell’uso	
  dello	
  
strumento.	
  	
  
La	
   stesura	
   di	
   quest’articolo	
   ha	
   però	
   richiesto	
   più	
   dieci	
   minuti,	
   tempo	
  
sicuramente	
  ben	
  speso.	
  
Bibliography	
  
ECMA	
  International.	
  (2013,	
  October).	
  ECMA-­‐404	
  The	
  JSON	
  Data	
  Interchange	
  
Standard.	
  ECMA-­‐404	
  The	
  JSON	
  Data	
  Interchange	
  Standard	
  .	
  
SugarCRM.	
  (s.d.).	
  Method	
  Calls.	
  Tratto	
  da	
  SugarCRM	
  Support	
  Portal:	
  
http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_D
eveloper_Guide_6.5/02_Application_Framework/Web_Services/05_Method_Calls
/	
  
SugarCRM.	
  (s.d.).	
  Web	
  Services.	
  Tratto	
  da	
  SugarCRM	
  Support	
  Portal:	
  
http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_D
eveloper_Guide_6.5/02_Application_Framework/Web_Services/	
  
The	
  jQuery	
  Foundation.	
  (2014).	
  Accordion.	
  Tratto	
  da	
  JQuery	
  User	
  Interface	
  (UI):	
  
http://jqueryui.com/accordion/	
  
	
  

Contenu connexe

Tendances

Tendances (16)

Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo Episodio
 
Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
 
Costruire un client Java per SugarCRM
Costruire un client Java per SugarCRMCostruire un client Java per SugarCRM
Costruire un client Java per SugarCRM
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
Costruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMCostruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRM
 
J-SugarCRM UserSync 1.0
J-SugarCRM UserSync 1.0J-SugarCRM UserSync 1.0
J-SugarCRM UserSync 1.0
 
TYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novitaTYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novita
 
Running Kettle Job by API
Running Kettle Job by APIRunning Kettle Job by API
Running Kettle Job by API
 
Configure Kettle debug session
Configure Kettle debug sessionConfigure Kettle debug session
Configure Kettle debug session
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.com
 
ORM Java - Hibernate
ORM Java - HibernateORM Java - Hibernate
ORM Java - Hibernate
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
PHP Documentation APIs on the fly
PHP Documentation APIs on the flyPHP Documentation APIs on the fly
PHP Documentation APIs on the fly
 

Similaire à SugarCRM REST API: Un’applicazione in appena dieci minuti

Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
Giorgio Carpoca
 
Io Programmo - Android Programming - Andrea Galeazzi
Io Programmo - Android Programming - Andrea GaleazziIo Programmo - Android Programming - Andrea Galeazzi
Io Programmo - Android Programming - Andrea Galeazzi
Andrea Galeazzi
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
Whymca
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
DotNetCampus
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
Luca Milan
 

Similaire à SugarCRM REST API: Un’applicazione in appena dieci minuti (20)

Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Io Programmo - Android Programming - Andrea Galeazzi
Io Programmo - Android Programming - Andrea GaleazziIo Programmo - Android Programming - Andrea Galeazzi
Io Programmo - Android Programming - Andrea Galeazzi
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
Lamp Ld2008
Lamp Ld2008Lamp Ld2008
Lamp Ld2008
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?
 
Swagger per tutti
Swagger per tuttiSwagger per tutti
Swagger per tutti
 
7. Applicazioni Web e CMS
7. Applicazioni Web e CMS7. Applicazioni Web e CMS
7. Applicazioni Web e CMS
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
 
07 - Web apps e CMS
07 - Web apps e CMS07 - Web apps e CMS
07 - Web apps e CMS
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
WordPress REST API
WordPress REST APIWordPress REST API
WordPress REST API
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
Html5
Html5Html5
Html5
 
Rich Internet Application con Flex, AIR e Java
Rich Internet Application con Flex, AIR e JavaRich Internet Application con Flex, AIR e Java
Rich Internet Application con Flex, AIR e Java
 
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOChrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
 

Plus de Antonio Musarra

Come configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per OracleCome configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per Oracle
Antonio Musarra
 

Plus de Antonio Musarra (13)

Liferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cLiferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
 
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
 
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cCome installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
 
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
 
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseCome installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
 
JAX-WS e JAX-RS
JAX-WS e JAX-RSJAX-WS e JAX-RS
JAX-WS e JAX-RS
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 
How to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRM
 
Building a Client .NET for SugarCRM
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRM
 
Come configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per OracleCome configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per Oracle
 
HOW TO SAML Password Management (Note)
HOW TO SAML Password Management (Note)HOW TO SAML Password Management (Note)
HOW TO SAML Password Management (Note)
 
J-SugarCRM UserSync TechnicalGuide
J-SugarCRM UserSync TechnicalGuideJ-SugarCRM UserSync TechnicalGuide
J-SugarCRM UserSync TechnicalGuide
 

SugarCRM REST API: Un’applicazione in appena dieci minuti

  • 1. Antonio  Musarra's  Blog   Document Revision:1.0-IT The  ideal  solution  for  a  problem   Blog:  http://www.dontesta.it   LinkedIn:  http://it.linkedin.com/in/amusarra     Google+:  https://plus.google.com/+AntonioMusarra   Mail:  antonio.musarra@gmail.com     09/04/14   1   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike       SugarCRM  REST  API:  Un’applicazione   in  appena  dieci  minuti   Mi   capita   abbastanza   spesso   di   navigare   e   rispondere   a   quesiti   posti   sul   portale  Stack  Overflow1.  In  una  passata  recente  sera,  mi  sono  imbattuto  su  una   questione   cui   ho   risposto   e   in   seguito   preso   spunto   per   quest’articolo.   La   domanda2    posta  su  Stack  Overflow  da  cui  ho  preso  spunto  recita  esattamente:     “I   am   trying   to   login   to   SugarCRM   using   jQuery  and  Sugar  REST  API  and  i  want  to  create  a  html  5   app  please  tell  me  how  to  authenticate  to  sugarCRM  in   my  html  file.”     Da  questa  domanda  è  nato  quasi  immediatamente  il  titolo  dell’articolo  che   sintetizza  ciò  che  poi  sarà  il  risultato  finale  dell’idea,  in  altre  parole,  realizzare   un’applicazione   (semplice)   HTML   5   (costruita   veramente   in   dieci   minuti)   che   interagisca  con  il  sistema  SugarCRM  sfruttando  le  API  REST;  in  un  certo  senso  ho   appena  espresso  un  requisito  utente.  Il  risultato  finale  della  nostra  applicazione   sarà  simile  a  quanto  indicato  nel  mockup  di  Figura  1.                Figura  1  Mockup  dell’applicazione  HTML  5  SugarCRM  REST  API  Application.                                                                                                                   1  Stack  Overflow  è  un  sito  web  che  fa  parte  della  rete  Stack  Exchange  in  cui  si  possono  porre  domande  riguardo  a  vasti   argomenti  di  programmazione.   2  I  dettagli  sulla  domanda  SugarCRM  REST  API  and  jquery  mobile  sono  disponibili  all’URL  2  I  dettagli  sulla  domanda  SugarCRM  REST  API  and  jquery  mobile  sono  disponibili  all’URL   http://stackoverflow.com/questions/20904378/sugarcrm-­‐rest-­‐api-­‐and-­‐jquery-­‐mobile  
  • 2. Antonio  Musarra's  Blog   Document Revision:1.0-IT The  ideal  solution  for  a  problem   Blog:  http://www.dontesta.it   LinkedIn:  http://it.linkedin.com/in/amusarra     Google+:  https://plus.google.com/+AntonioMusarra   Mail:  antonio.musarra@gmail.com     09/04/14   2   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike       1. Da  dove  partire?   Il   titolo   del   paragrafo   è   proprio   il   classico   bel   domandone,   la   prima   domanda  che  sicuramente  tutti  pongono  a  se  stessi  nel  momento  in  cui  si  parte   con  un  progetto  nuovo.   Non   vorrei   porre   troppa   attenzione   al   codice   necessario   per   realizzare   l’applicazione,  al  contrario,  ritengo  più  importante  fare  insieme  la  lista  di  quali   sono   gli   strumenti   fondamentali   da   mettere   nella   propria   borsa   degli   attrezzi   per   l’implementazione   di   questo   requisito.   Generalmente   tra   gli   strumenti   che   consentono  di  realizzare  un  progetto  è  possibile  annoverare  i  seguenti  elementi:     • Linguaggi;   • Tecnologie;   • Framework.       Il  titolo  del  requisito  stesso  contiene  già  molti  indizi  che  ci  consentono  di   fare  uno  schema  del  genere:     • L’applicazione  deve  essere  in  HTML  5:   o HTML  5  è  linguaggio  base  per  la  realizzazione  della  struttura   per  la  nostra  applicazione;   o CSS3  è  la  base  per  lo  style  che  la  nostra  applicazione  deve   avere.   • L’applicazione  deve  interagire  con  alcuni  servizi  REST  esposti  da   SugarCRM:   o Java   Script   è   il   linguaggio   con   cui   si   scriverà   il   codice   necessario  per  interagire  con  i  servizi  REST  di  SugarCRM;   o Ajax   è   la   tecnologia   alla   base   dell’interazione   tra   la   nostra   applicazione  HTML  5  e  i  servizi  remoti  REST  di  SugarCRM.     Ci   siamo   quasi.   Lo   schema   di   dettaglio   precedente   riporta   le   chiavi   linguaggi  e  tecnologie,  all’appello  sono  però  ancora  assenti  questi  benedetti  (e  lo   sono   davvero)   framework.   Per   questi   ultimi   attrezzi   ho   deciso   mettere   dentro   due  “grandi  nomi”:         • Bootstrap:  è  possibile  affermare  che  sia  il  re  dei  framework  per  lo   sviluppo   d’interfacce   web   e   lo   standard   di   fatto   come   punto   di   partenza   per   la   realizzazione   di   template   HTML   preconfezionati,   soprattutto   in   ottica   del   Responsive  Web  Design  (RWD).   Nel  nostro   caso  frutteremo  quindi  le  basi  di  questo  framework  per  costruire  con   pochissimo  sforzo  il  layout  della  nostra  applicazione;   • jQuery:  è  il  più  popolare  framework  Java  Script  cross-­‐browser  che  si   propone  come  obiettivo  quello  di  semplificare  la  programmazione   lato   client   di   applicazioni   HTML.   Nel   nostro   caso   sfrutteremo   principalmente   il   componente   Ajax   responsabile   del   colloquio   tra   la   nostra  applicazione  e  i  servizi  remoti  REST  di  SugarCRM.  
  • 3. Antonio  Musarra's  Blog   Document Revision:1.0-IT The  ideal  solution  for  a  problem   Blog:  http://www.dontesta.it   LinkedIn:  http://it.linkedin.com/in/amusarra     Google+:  https://plus.google.com/+AntonioMusarra   Mail:  antonio.musarra@gmail.com     09/04/14   3   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike         Molto   bene,   direi   che   la   nostra   borsa   degli   attrezzi   è   completa   da   poter   consentire  l’avvio  dell’implementazione  del  progetto.  In  Tabella  1  ho  indicato  il   riepilogo  degli  strumenti  necessari  per  l’implementazione  del  progetto.     Nome  Applicazione   SugarCRM  REST  API  Application   Tipo   Client  Side  (via  Browser  Web)   Linguaggi   HTML  5/CSS3/Java  Script   Tecnologie   Ajax,  REST   Framework   Bootstrap,  jQuery  Core,  jQuery  UI   Tabella  1  Caratteristiche  tecniche  dell’applicazione  da  realizzare.   In  linea  generale  l’utilizzo  di  strumenti  adeguati  per  la  realizzazione  di  un   progetto,   consente   il   raggiungimento   dell’obiettivo   nel   minor   tempo   possibile   aumentando   la   qualità   del   progetto   stesso   soprattutto   in   termini   di   manutenibilità.     2. Interazione  con  i  servizi  REST   I   dati   della   nostra   applicazione   d’esempio   provengono   dal   sistema   SugarCRM,   richiesti   tramite   l’interfaccia   REST   (SugarCRM)   che   SugarCRM   pubblicamente  espone.   I   requisiti   della   nostra   applicazione   riguardo   all’accesso   ai   dati   di   SugarCRM  sono  i  seguenti:     • Login  sul  sistema  SugarCRM  su  base  Username  e  Password;   • Visualizzazione   d’informazioni   circa   il   sistema   SugarCRM   cui   si   compie  la  connessione;   • Visualizzazione   di   una   serie   di   dati   riguardante   l’utente   che   ha   eseguito  l’accesso  a  SugarCRM;   • Visualizzazione   delle   attività   (calls,   task,   opportunities)   in   carico   all’utente  che  ha  eseguito  l’accesso  a  SugarCRM:   o Per   ogni   attività   deve   essere   possibile   aprire   il   dettaglio   direttamente   dall’interfaccia   di   SugarCRM   e   senza   eseguire   nuovamente  l’accesso.     Le  informazioni  estratte  da  SugarCRM  saranno  visualizzate  tramite  l’ausilio   del   modulo   UI   widgets   accordion (The jQuery Foundation., 2014).   I   dati   che   i   servizi  REST  restituisco,  sono  in  formato  JSON  (ECMA International, 2013).     Le  chiamate  alle  “operazioni”  REST  (SugarCRM)  che  l’applicazione  indirizza   a  SugarCRM  (via  Ajax)  sono  le  seguenti:     • login(user_auth,  application_name,  name_value_list)  
  • 4. Antonio  Musarra's  Blog   Document Revision:1.0-IT The  ideal  solution  for  a  problem   Blog:  http://www.dontesta.it   LinkedIn:  http://it.linkedin.com/in/amusarra     Google+:  https://plus.google.com/+AntonioMusarra   Mail:  antonio.musarra@gmail.com     09/04/14   4   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike       • get_server_info()   • get_entry(session,module_name,  id,  select_fields,   link_name_to_fields_array,  track_view)   • seamless_login(session)   • get_upcoming_activities(session)     Le  figure  a  seguire  mostrano  l’applicazione  appena  realizzata  in  esecuzione,   dove  sono  evidenti  i  requisiti  implementati  definiti  in  precedenza.  L’applicazione   visualizzata  nelle  figure  che  seguono  è  in  esecuzione  su  di  un  iPad  e  come  potete   vedere   non   sono   evidenziati   problemi   di   visualizzazione,   questa   possibilità   è   gratuitamente   offerta   dal   framework   Bootstrap   grazie   al   pieno   supporto   del   Responsive  Web  Design  (RWD),  e  noi  evitiamo  di  scrivere  noiose  righe  di  codice.     L’applicazione   realizzata   è   disponibile   live   e   raggiungibile   all’indirizzo   http://amusarra.github.io/Project/SugarCRM/REST/ClientApplication/HTMLSug arCRMRESTApplication.html   L’istanza  SugarCRM  di  riferimento  (Community  Edition  6.5  su  PostgreSQL)   a   cui   l’applicazione   si   connette   è   live   e   raggiungibile   all’indirizzo   http://sugarcrmpgsql-­‐shiruslabs.rhcloud.com           Figura  2  Errore  durante  l’accesso  a  SugarCRM  (fase  di  login).  
  • 5. Antonio  Musarra's  Blog   Document Revision:1.0-IT The  ideal  solution  for  a  problem   Blog:  http://www.dontesta.it   LinkedIn:  http://it.linkedin.com/in/amusarra     Google+:  https://plus.google.com/+AntonioMusarra   Mail:  antonio.musarra@gmail.com     09/04/14   5   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike         Figura  3  Accesso  a  SugarCRM  avvenuto  con  successo.       Figura  4  Visualizzazione  delle  informazioni  di  sistema  cui  si  è  connessi.    
  • 6. Antonio  Musarra's  Blog   Document Revision:1.0-IT The  ideal  solution  for  a  problem   Blog:  http://www.dontesta.it   LinkedIn:  http://it.linkedin.com/in/amusarra     Google+:  https://plus.google.com/+AntonioMusarra   Mail:  antonio.musarra@gmail.com     09/04/14   6   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike         Figura  5  Visualizzazione  delle  informazioni  sull’utente  che  ha  eseguito  l’accesso.       Figura  6  Visualizzazione  delle  attività  in  carico  all’utente  che  ha  eseguito  l’accesso  a  SugarCRM.    
  • 7. Antonio  Musarra's  Blog   Document Revision:1.0-IT The  ideal  solution  for  a  problem   Blog:  http://www.dontesta.it   LinkedIn:  http://it.linkedin.com/in/amusarra     Google+:  https://plus.google.com/+AntonioMusarra   Mail:  antonio.musarra@gmail.com     09/04/14   7   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike         Figura  7  Accesso  alla  visualizzazione  della  scheda  di  dettaglio  da  My  Upcoming  Activities.   3. Conclusioni   Con  gli  strumenti  adeguati  abbiamo  avuto  modo  di  costatare  come  in  questi   ultimi   anni   in   particolare   sia   divenuto   semplice   e   quasi   immediato   realizzare   applicazioni   web,   che   interagiscono   con   servizi   prettamente   di   tipo   REST   per   attingere   ai   dati.   L’utilizzo   di   framework   commisurati   al   progetto   influisce   positivamente   sul   risparmio   di   tempo   necessario   per   l’implementazione,   non   considerando  ovviamente  il  tempo  necessario  per  l’apprendimento  dell’uso  dello   strumento.     La   stesura   di   quest’articolo   ha   però   richiesto   più   dieci   minuti,   tempo   sicuramente  ben  speso.   Bibliography   ECMA  International.  (2013,  October).  ECMA-­‐404  The  JSON  Data  Interchange   Standard.  ECMA-­‐404  The  JSON  Data  Interchange  Standard  .   SugarCRM.  (s.d.).  Method  Calls.  Tratto  da  SugarCRM  Support  Portal:   http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_D eveloper_Guide_6.5/02_Application_Framework/Web_Services/05_Method_Calls /   SugarCRM.  (s.d.).  Web  Services.  Tratto  da  SugarCRM  Support  Portal:   http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_D eveloper_Guide_6.5/02_Application_Framework/Web_Services/   The  jQuery  Foundation.  (2014).  Accordion.  Tratto  da  JQuery  User  Interface  (UI):   http://jqueryui.com/accordion/