SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
Document Revision: 1.0




J-­‐SugarCRM	
  UserSync	
  1.0	
  
               	
  
               	
                                                             	
  
Technical	
  Guide	
  
Il	
  documento	
  illustra	
  com’è	
  stato	
  realizzato	
  il	
  plugin	
  J-­‐SugarCRM	
  UserSync	
  sfruttando	
  il	
  
framework	
  messo	
  a	
  disposizione	
  da	
  Joomla.	
  Sono	
  inoltre	
  affrontati	
  i	
  temi	
  che	
  riguardano	
  
l’integrazione	
  con	
  il	
  sistema	
  di	
  CRM	
  Open	
  Source	
  SugarCRM.	
  	
  




A n t o n i o 	
   M u s a r r a 	
  
W e b : 	
   h t t p : / / m u s a r r a . w o r d p r e s s . c o m 	
  
P r o d u c t 	
   P a g e : 	
   h t t p : / / m u s a r r a . w o r d p r e s s . c o m / J -­‐ S u g a r C R M U s e r S y n c                                                	
  




                            This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  

                                                                                                                   	
  
Antonio	
  Musarra	
              2	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
  
                                                                                                                                                                                           	
   1.0	
  
                                                                                                                                                                                           Rev.	
  
   	
  
   1.	
   Introduzione	
  ................................................................................................................................	
  3	
  
   2.	
   Introduzione	
  a	
  Joomla	
  Framework	
  ....................................................................................	
  3	
  
         2.1	
   Introduzione	
  a	
  Joomla	
  Plugin	
               ........................................................................................	
  4	
  
   3.	
   Obiettivi	
  del	
  plugin	
  J-­‐SugarCRM	
  UserSync	
                       ......................................................................	
  6	
  
   4.	
   Struttura	
  del	
  plugin	
  J-­‐SugarCRM	
  UserSync	
  ....................................................................	
  7	
  
   5.	
   Integrazione	
  con	
  il	
  CRM	
  ........................................................................................................	
  11	
  
   6.	
   Client	
  SOAP	
  .................................................................................................................................	
  13	
  
   Bibliography	
  .......................................................................................................................................	
  14	
  
   	
  
   	
                                                	
  




This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  
Antonio	
  Musarra	
              3	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
  
                                                                                                                                                                                           	
   1.0	
  
                                                                                                                                                                                           Rev.	
  
   	
  
           1. Introduzione	
  
           J-­‐SugarCRM	
  UserSync	
  è	
  un	
  plugin	
  Joomla	
  da	
  definire	
  d’integrazione	
  poiché	
  
   consente	
  l’interazione	
  tra	
  due	
  sistemi:	
  Joomla	
  e	
  il	
  CRM	
  Open	
  Source	
  SugarCRM.	
  
   L’oggetto	
   dell’integrazione	
   sono	
   gli	
   utenti	
   del	
   sistema	
   Joomla,	
   che	
   attraverso	
   il	
  
   plugin	
  sono	
  sincronizzati	
  con	
  i	
  rispettivi	
  utenti	
  del	
  CRM	
  SugarCRM,	
  tutto	
  questo	
  
   avviene	
  fruttando	
  la	
  tecnologia	
  che	
  è	
  alla	
  base	
  dei	
  Web	
  Service.	
  
   	
  
           Lo	
  scopo	
  di	
  questo	
  documento	
  è	
  di	
  descrivere	
  tecnicamente	
  (mantenendo	
  
   un	
  basso	
  livello	
  di	
  dettaglio)	
  com’è	
  stato	
  costruito	
  il	
   plugin	
  J-­‐SugarCRM	
  UserSync	
  
   sfruttando	
   il	
   framework	
   messo	
   a	
   disposizione	
   da	
   Joomla	
   stesso.	
   Sono	
   inoltre	
  
   affrontati	
  i	
  temi	
  che	
  riguardano	
  l’integrazione	
  con	
  il	
  sistema	
  di	
  CRM	
  SugarCRM.	
  Il	
  
   documento	
   è	
   rivolto	
   a	
   quelle	
   figure	
   tecniche	
   che	
   sono	
   interessate	
   ad	
  
   approfondire	
  la	
  struttura	
  del	
  plugin	
  e	
  lo	
  scenario	
  d’integrazione.	
  	
  
   	
  
           	
  


           2. Introduzione	
  a	
  Joomla	
  Framework	
  
            Nella	
   produzione	
   del	
   software,	
   il	
   framework	
   è	
   una	
   struttura	
   di	
   supporto	
   su	
  
   cui	
  un	
  software	
  può	
  essere	
  organizzato	
  e	
  progettato.	
  Alla	
  base	
  di	
  un	
  framework	
  c'è	
  
   sempre	
   una	
   serie	
   di	
   librerie	
   di	
   codice	
   utilizzabili	
   con	
   uno	
   o	
   più	
   linguaggi	
   di	
  
   programmazione,	
   spesso	
   corredate	
   da	
   una	
   serie	
   di	
   strumenti	
   di	
   supporto	
   allo	
  
   sviluppo	
   del	
   software,	
   come	
   ad	
   esempio	
   un	
   IDE,	
   un	
   debugger,	
   o	
   altri	
   strumenti	
  
   ideati	
  per	
  aumentare	
  la	
  velocità	
  di	
  sviluppo	
  del	
  prodotto	
  finito (Wikipedia, 2010).	
  
            	
  
            Joomla	
  è	
  un	
  sistema	
  costituito	
  da	
  tre	
  livelli,	
  quali:	
  
                   • Extensions	
   layer,	
   un	
   insieme	
   di	
   estensioni	
   per	
   il	
   framework	
   di	
  
                        Joomla	
  che	
  includono	
  tre	
  applicazioni:	
  
                             o Modules	
  
                             o Components	
  
                             o Templates	
  
                   • Application	
  layer,	
  un	
  insieme	
  di	
  applicazioni	
  che	
  estendono	
  la	
  classe	
  
                        JApplication	
  del	
  framework	
  Joomla.	
  Le	
  attuali	
  applicazioni	
  sono:	
  
                             o JInstallation	
  
                             o JAdministrator	
  
                             o JSite	
  
                             o XML-­‐RPC	
  
                   • Framework	
  layer,	
  costituito	
  da:	
  
                             o Classi	
  core	
  del	
  framework	
  Joomla	
  
                             o Librerie	
  richieste	
  dal	
  framework	
  o	
  installate	
  da	
  terze	
  parti	
  
                             o Plugins	
  che	
  estendono	
  le	
  funzionalità	
  del	
  framework	
  
   	
  
            	
  
            	
  
            	
  
            	
  
            	
  


This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  
Antonio	
  Musarra	
              4	
  
                                                                                                                                                                                                                                                                                     J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                                                                                                                                                                 Technical	
  Guide	
  
                                                                                                                                                                                                                                                                                                                                  	
   1.0	
  
                                                                                                                                                                                                                                                                                                                                  Rev.	
  
   	
  
          E’	
  possibile	
  schematizzare	
  lo	
  schema	
  di	
  cui	
  sopra	
  attraverso	
  il	
  diagramma	
  
   illustrato	
  in	
  Figura	
  1.	
  
   	
  
                                             Modules	
                                                                                                                                            Components	
                                               Templates	
             Extension	
  Layer	
  


                                                                                                                                                                                                      Application	
                                                                  Application	
  Layer	
  



                                          Libraries	
                                                                                                                                                Framework	
                                              Plugins	
              Framework	
  Layer	
  

                                                                                                                                                                                                                                                                                       	
  
   Figura	
  1	
  Modello	
  a	
  tre	
  livelli	
  del	
  sistema	
  Joomla.	
  

        Il	
  livello	
  dove	
  trova	
  posto	
  il	
  plugin	
  J-­‐SugarCRM	
  UserSync	
  è	
  quello	
  più	
  basso	
  
   (bottom	
  layer),	
  il	
  framework	
  layer,	
  in	
  particolare	
  il	
  plugin	
  vive	
  dentro	
  la	
  “scatola”	
  
   Plugins.	
  Per	
  maggiori	
  dettagli	
  fare	
  riferimento	
  a	
  (Joomla, 2010).	
  
        	
  

                              2.1 Introduzione	
  a	
  Joomla	
  Plugin	
  
             I	
   Plugin1	
  di	
   Joomla	
   permettono	
   in	
   maniera	
   molto	
   semplice	
   di	
   estendere	
   le	
  
   funzionalità	
  del	
  sistema	
  consentendo	
  l’esecuzione	
  di	
  codice	
  custom	
  in	
  risposta	
  a	
  
   certi	
   eventi	
   che	
   si	
   possono	
   verificare	
   all’interno	
   del	
   sistema	
   stesso.	
   E’	
   possibile	
  
   affermare	
   che	
   Joomla	
   è	
   per	
   la	
   quasi	
   totalità	
   un	
   sistema	
   Event	
   Driven	
   (guidato	
  
   dagli	
   eventi)	
   e	
   i	
   cosiddetti	
   event	
  handlers	
   non	
   sono	
   altro	
   che	
   i	
   plugin	
   di	
   Joomla	
  
   (vedere	
  Figura	
  2).	
  
   	
  
   	
                                                         Framework	
  
   	
  
                                                                  Events	
  
   	
                                                           Generator	
  

                                                                                                                                                                                                                                                Events	
  


                                                                                                                                                                                                                                      Dispatcher	
  




                                                                                                                                                                                       Handler	
  1	
                                 Handler	
  2	
              Handler	
  n	
  

   	
  	
  Figura	
  2	
  Schema	
  generico	
  di	
  un	
  sistema	
  Event	
  Driven	
  basato	
  su	
  di	
  un	
  Framework	
  (Joomla).	
  	
  

   	
  
        L’architettura	
   a	
   plugin	
   implementata	
   da	
   Joomla	
   segue	
   il	
   design	
   pattern	
  
   Observer (Wikipedia, 2007).	
   La	
   classe	
   base	
   per	
   tutti	
   i	
   plugin	
   è	
   JPlugin,	
   questa	
   è	
  
   derivata	
  dalla	
  classe	
  JObserver,	
  quest’ultima	
  fornisce	
  i	
  servizi	
  di	
  registrazione	
  del	
  
   plugin	
  per	
  rispondere	
  agli	
  eventi	
  core	
  o	
  custom.	
  La	
  classe	
  JDispatcher	
  è	
  derivata	
  

   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
   1	
  Il	
  termine	
  "plug-­‐in"	
  o	
  "plugin"	
  è	
  spesso	
  usato	
  per	
  indicare	
  un	
  elemento	
  software	
  che	
  può	
  essere	
  inserito	
  (installato)	
  in	
  
   uno	
   strumento	
   di	
   uso	
   generale	
   nato	
   per	
   eseguire	
   specifiche	
   attività.	
   Ad	
   esempio,	
   se	
   il	
   browser	
   non	
   sa	
   come	
   aprire	
   i	
   file	
   di	
  
   un	
   particolare	
   tipo,	
   è	
   possibile	
   scaricare	
   e	
   installare	
   un	
   browser	
   plugin	
   per	
   quel	
   tipo	
   di	
   file.	
   Eclipse	
   è	
   un	
   framework	
  
   general-­‐purpose	
  pluggable	
  in	
  cui	
  è	
  possibile	
  inserire	
  le	
  estensioni	
  per	
  diversi	
  linguaggi	
  di	
  programmazione.	
  E	
  così	
  via.	
  
   2	
  SOAP	
  (Simple	
  Object	
  Access	
  Protocol)	
  è	
  un	
  protocollo	
  leggero	
  basato	
  su	
  XML	
  per	
  lo	
  scambio	
  di	
  messaggi	
  tra	
  componenti	
  



This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                                                                                                                                                           	
  
   	
  
Antonio	
  Musarra	
              5	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
  
                                                                                                                                                                                           	
   1.0	
  
                                                                                                                                                                                           Rev.	
  
   	
  
   dalla	
   classe	
   JObservable,	
   quest’ultima	
   è	
   un	
   gestore	
   di	
   eventi	
   che	
   richiama	
   tutti	
   i	
  
   plugin	
  registrati	
  per	
  un	
  determinato	
  evento	
  quando	
  tale	
  evento	
  è	
  scatenato.	
  	
  In	
  
   Figura	
   3	
   è	
   illustrato	
   il	
   diagramma	
   delle	
   classi	
   che	
   gestiscono	
   tutto	
   ciò	
   che	
  
   riguarda	
  gli	
  eventi	
  all’interno	
  di	
  Joomla.	
  
   	
  
   	
  




                                                                                                                                                         	
  
   	
  Figura	
  3	
  Diagramma	
  delle	
  classi	
  per	
  la	
  gestione	
  degli	
  eventi	
  Joomla.	
  

   	
  
        Joomla	
   gestisce	
   una	
   serie	
   di	
   eventi	
   core	
   che	
   sono	
   organizzati	
   in	
   cinque	
  
   gruppi	
  fondamentali:	
  
                • System	
  events	
  (Joomla, 2011)	
  
                • User	
  events	
  (Joomla, 2010)	
  
                • Editor	
  events	
  (Joomla, 2009)	
  
                • Content	
  events	
  (Joomla, 2009)	
  
                • Contact	
  events	
  (Joomla, 2009)	
  
   	
  
        Il	
   gruppo	
   di	
   eventi	
   interessato	
   dal	
   plugin	
   J-­‐SugarCRM	
  UserSync	
   è	
   quello	
   che	
  
   riguarda	
  gli	
  utenti	
  del	
  sistema	
  (User	
  events)	
  e	
  che	
  ingloba	
  i	
  seguenti	
  eventi:	
  
                • onLoginUser	
  
                • onLogoutUser	
  
                • onAuthenticate	
  
                • onAuthenticateFailure	
  
                • onBeforeStoreUser	
  
                • onAfterStoreUser	
  
                • onBeforeDeleteUser	
  
                • onAfterDeleteUser	
  
   	
  
        Gli	
   eventi	
   per	
   i	
   quali	
   interverrà	
   il	
   plugin	
   J-­‐SugarCRM	
   UserSync	
   sono:	
  
   onAfterStoreUser	
  e	
  onAfterDeleteUser.	
  
   	
  

This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  
Antonio	
  Musarra	
              6	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
  
                                                                                                                                                                                           	
   1.0	
  
                                                                                                                                                                                           Rev.	
  
   	
  
           3. Obiettivi	
  del	
  plugin	
  J-­‐SugarCRM	
  UserSync	
  
             Il	
  plugin	
  definito	
  d’integrazione	
  nel	
  capitolo	
  introduttivo	
  soddisfa	
  una	
  serie	
  
   di	
   requisiti	
   funzionali	
   che	
   ruotano	
   nell’intorno	
   degli	
   utenti	
   di	
   Joomla.	
   In	
   breve,	
   le	
  
   macro	
  funzionalità	
  introdotte	
  dal	
  plugin	
  sono:	
  
           • Quando	
   su	
   Joomla	
   è	
   creata	
   un’utenza	
   (tramite	
   la	
   form	
   di	
   richiesta	
  
                   pubblica	
  o	
  direttamente	
  dal	
  pannello	
  di	
  amministrazione)	
  la	
  stessa	
  deve	
  
                   essere	
  migrata	
  sull’istanza	
  SugarCRM	
  definita	
  in	
  fase	
  di	
  configurazione;	
  
           • Le	
   operazioni	
   di	
   aggiornamento	
   sulle	
   utenze	
   di	
   Joomla	
   devono	
   essere	
  
                   migrate	
   sull’istanza	
   SugarCRM	
   definita	
   in	
   fase	
   di	
   configurazione.	
   Gli	
  
                   attributi	
  dell’utente	
  soggetti	
  alla	
  sincronizzazione	
  sono:	
  Password,	
  Email	
  
                   e	
  Status;	
  
           • Il	
   processo	
   di	
   attivazione/disattivazione	
   delle	
   utenze	
   di	
   Joomla	
   deve	
  
                   essere	
   propagato	
   anche	
   sull’istanza	
   SugarCRM	
   definita	
   in	
   fase	
   di	
  
                   configurazione.	
  La	
  disattivazione	
  è	
  intesa	
  come	
  sospensione	
  temporanea	
  
                   dell’utenza;	
  
           • Quando	
   un’utenza	
   è	
   sottoposta	
   a	
   eliminazione,	
   la	
   stessa	
   deve	
   essere	
  
                   eliminata	
   sull’istanza	
   SugarCRM	
   definita	
   in	
   fase	
   di	
   configurazione.	
  
                   L’eliminazione	
   di	
   un	
   utente	
   su	
   SugarCRM	
   è	
   sempre	
   logica,	
   è	
   possibile	
  
                   quindi	
  recuperare	
  l’utente	
  e	
  i	
  dati	
  a	
  esso	
  associati.	
  

         In	
   Figura	
   4	
   è	
   illustrato	
   un	
   use	
   case	
   diagram	
   che	
   descrive	
   le	
   funzioni	
   o	
   i	
  
   servizi	
  indicati	
  nel	
  precedente	
  schema.	
  
                                                                       	
  




                                                                                                                                                                                	
  
   Figura	
  4	
  Descrizione	
  delle	
  funzionalità	
  introdotte	
  dal	
  plugin.	
  

   	
  
        In	
   Figura	
   5	
   è	
   illustrato	
   ad	
   alto	
   livello	
   il	
   processo	
   dietro	
   la	
   creazione	
   di	
   un	
  
   utente	
   su	
   Joomla	
   a	
   fronte	
   della	
   richiesta	
   esplicita	
   dello	
   stesso	
   utente.	
   Lo	
   stesso	
  
   processo,	
   con	
   una	
   leggera	
   differenza,	
   si	
   applica	
   anche	
   al	
   caso	
   in	
   cui	
   l’utente	
   sia	
  
   creato	
  direttamente	
  dal	
  pannello	
  di	
  amministrazione.	
  
   	
  

This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  
Antonio	
  Musarra	
                                7	
  
                                                                                                                                                                                                                  J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                                                                                              Technical	
  Guide	
  
                                                                                                                                                                                                                                                                                 	
   1.0	
  
                                                                                                                                                                                                                                                                                 Rev.	
  
   	
  



              (Joomla	
  Context)	
                  •  L'utente	
  internet	
  
            Compilazione	
  form	
  di	
                effettua	
  la	
  registrazione	
  
                                                        dal	
  portale	
  Joomla.	
  
           richiesta	
  nuovo	
  utente.	
  




                                                         (Joomla	
  Context)	
              •  Joomla	
  acquisisce	
  la	
  
                                                                                               nuova	
  utenza	
  
                                               Utenza	
  registrata	
  su	
  Joomla	
          mettendola	
  nello	
  stato	
  
                                                e	
  in	
  attesa	
  di	
  attivazione.	
      disabilitato.	
  




                                                                                                 (SugarCRM	
  Context)	
                  •  L'utenza	
  rimarrà	
  non	
  
                                                                                                                                             attiva	
  nino	
  a	
  quando	
  
                                                                                               L'utenza	
  è	
  stata	
  creata	
  su	
      non	
  sarà	
  attivata	
  su	
  
                                                                                              SugarCRM	
  e	
  resa	
  non	
  attiva.	
   Joomla.	
  




                                                                                                                                              (Joomla	
  Context)	
                      •  Joomla	
  resta	
  in	
  attesa	
  
                                                                                                                                                                                            della	
  richiesta	
  di	
  
                                                                                                                                         Invio	
  della	
  mail	
  all'utente	
             attivazione	
  da	
  parte	
  
                                                                                                                                             appena	
  registrato.	
  	
                    dell'utente.	
  




                                                                                                                                                                                         (Joomla	
  Context)	
  
                                                                                                                                                                                     Attivazione	
  dell'utenza	
  
                                                                                                                                                                                    richiesta	
  tramite	
  il	
  link	
  di	
  
                                                                                                                                                                                    attivazione	
  presente	
  sulla	
  
                                                                                                                                                                                                  mail.	
  




                                                                                                                                                                                                                                      (SugarCRM	
  Context)	
  
                                                                                                                                                                                                                                  L'attivazione	
  viene	
  migrata	
  
                                                                                                                                                                                                                                    anche	
  su	
  SugarCRM.	
  Da	
  
                                                                                                                                                                                                                                   questo	
  momento	
  l'utente	
  
                                                                                                                                                                                                                                    potrà	
  accedere	
  al	
  CRM.	
  




                                                                                                                                                                                                                                                                                 	
  
   Figura	
  5	
  Processo	
  di	
  creazione	
  di	
  una	
  nuova	
  utenza	
  da	
  portale	
  Joomla.	
  

   	
  


           4. Struttura	
  del	
  plugin	
  J-­‐SugarCRM	
  UserSync	
  
            Il	
  plugin	
  J-­‐SugarCRM	
  UserSync	
  rientra	
  nel	
  gruppo	
  User	
  Events	
  (è	
  tipo	
  User)	
  e	
  
   risponde	
   ai	
   due	
   eventi	
   onAfterStoreUser	
   e	
   onAfterDeleteUser.	
   Il	
   primo	
   evento	
   è	
  
   scatenato	
   quando	
   sono	
   richieste	
   le	
   operazioni	
   di	
   creazione	
   e	
   aggiornamento	
  
   dell’utenza	
   Joomla,	
   il	
   secondo	
   è	
   invece	
   scatenato	
   quando	
   è	
   richiesta	
   l’operazione	
  
   di	
  eliminazione	
  dell’utenza	
  Joomla.	
  Il	
  plugin	
  è	
  costituito	
  dai	
  seguenti	
  elementi:	
  
   	
  
          • Classe	
   plgUserSugarCRMUserSync	
   che	
   estende	
   la	
   classe	
   JPlugin.	
   La	
   classe	
  
               implementa	
  la	
  gestione	
  degli	
  eventi	
  onAfterStoreUser	
  e	
  onAfterDeleteUser;	
  
          • Insieme	
   di	
   classi	
   e	
   interfacce	
   che	
   gestisco	
   la	
   comunicazione	
   verso	
   il	
  
               sistema	
  SugarCRM;	
  
          • Manifest	
  file	
  (in	
  formato	
  XML)	
  che	
  contiene	
  descrizione	
  e	
  caratteristiche	
  
               del	
  plugin.	
  Il	
  manifest	
  file	
  è	
  richiesto	
  per	
  la	
  fase	
  d’installazione;	
  

This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                                                                                                          	
  
   	
  
Antonio	
  Musarra	
              8	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
  
                                                                                                                                                                                           	
   1.0	
  
                                                                                                                                                                                           Rev.	
  
   	
  
         Nel	
   resto	
   del	
   paragrafo	
   è	
   affrontato	
   ogni	
   elemento	
   indicato	
   nello	
   schema	
  
   precedente.	
  In	
  Figura	
  6	
  è	
  illustrata	
  una	
  parte	
  del	
  class	
  diagram	
  del	
  plugin,	
  sono	
  
   indicati	
  anche	
  i	
  rispettivi	
  package.	
  	
  	
  
   	
  




                                                                                                                                                                                	
  
   	
  
   Figura	
  6	
  Class	
  diagram	
  di	
  base	
  del	
  plugin.	
  

   	
  
         La	
   classe	
   plgUserSugarCRMUserSync	
   indicata	
   in	
   Figura	
   6	
   ha	
   i	
   due	
   metodi	
  
   onAfterStoreUser	
   e	
   onAfterDeleteUser	
   che	
   gestisco	
   i	
   rispettivi	
   eventi	
   visti	
   in	
  
   precedenza.	
   Nel	
   prossimo	
   class	
   diagram	
   di	
   Figura	
   7	
   sono	
   mostrate	
   classi	
   e	
  
   interfacce	
  che	
  gestiscono	
  la	
  comunicazione	
  con	
  il	
  sistema	
  SugarCRM.	
  	
  
   	
  
   	
  




                                                                                                                                                                                	
  
   Figura	
  7	
  Class	
  diagram	
  del	
  package	
  SugarCRMUserSync	
  del	
  plugin.	
  




This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  
Antonio	
  Musarra	
              9	
  
                                                                                                                                                                                                                                      J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                                                                                                                  Technical	
  Guide	
  
                                                                                                                                                                                                                                                                                   	
   1.0	
  
                                                                                                                                                                                                                                                                                   Rev.	
  
   	
  
         Il	
   package	
   SugarCRMUserSync	
   indicato	
   nel	
   diagramma	
   è	
   costituito	
   da	
   tre	
  
   classi	
   e	
   un’interfaccia.	
   In	
   Tabella	
   1	
   sono	
   descritte	
   le	
   responsabilità	
   di	
   ogni	
  
   elemento	
  del	
  diagramma.	
  
   	
  
   	
  
   Name	
                                                  Type	
                 Descrizione	
  
   UserModel	
                                             Class	
                Definisce	
  il	
  modello	
  che	
  
                                                                                  rappresenta	
  l’utente.	
  
                                                                                  Questa	
  classe	
  è	
  utilizzata	
  
                                                                                  come	
  “merce	
  di	
  scambio”	
  tra	
  
                                                                                  Joomla	
  e	
  SugarCRM;	
  i	
  dati	
  
                                                                                  dell’utenza	
  viaggiano	
  
                                                                                  quindi	
  sull’istanza	
  di	
  questa	
  
                                                                                  classe.	
  	
  	
  	
  
   CRMUserSyncClientFactory	
                              Abstract	
  Class	
   Restituisce	
  un	
  oggetto	
  
                                                                                  (unico)	
  della	
  classe	
  che	
  
                                                                                  implementa	
  l’interfaccia	
  
                                                                                  ICRMUserSyncClient.	
  Questa	
  
                                                                                  classe	
  segue	
  il	
  design	
  
                                                                                  pattern	
  Abstract	
  Factory.
                                                                                  (Wikipedia, 2010)	
  
   SOAP_SugarCRMUserSyncClient	
   Class	
                                        Implementa	
  l’interfaccia	
  
                                                                                  ICRMUserSyncClient	
  
                                                                                  gestendo	
  le	
  comunicazioni	
  
                                                                                  con	
  SugarCRM	
  sfruttando	
  il	
  
                                                                                  protocollo	
  SOAP2.	
  Questa	
  
                                                                                  classe	
  segue	
  il	
  design	
  
                                                                                  pattern	
  Singleton
                                                                                  (Wikipedia, 2010).	
  	
  
   ICRMUserSyncClient	
                                    Interface	
            Definisce	
  l’interfaccia	
  di	
  
                                                                                  comunicazione	
  tra	
  i	
  due	
  
                                                                                  Joomla	
  e	
  il	
  CRM.	
  
   	
  Tabella	
  1	
  Descrizione	
  classi	
  e	
  interfacce	
  del	
  package	
  SugarCRMUserSync	
  del	
  plugin.	
  

   	
  
          Il	
   manifest	
   file	
   del	
   plugin	
   è	
   indispensabile	
   per	
   installare	
   il	
   plugin	
   sul	
  
   sistema	
   Joomla.	
   Il	
   manifest	
   file	
   è	
   un	
   documento	
   XML	
   costituito	
   da	
   tre	
   sezioni	
  
   principali	
  che	
  sono:	
  
          	
  
                 • Informazioni	
  generali	
  sul	
  plugin	
  
                 • Elementi	
  costitutivi	
  del	
  plugin	
  (classi	
  e	
  librerie	
  di	
  supporto)	
  
                 • Parametri	
  di	
  configurazione	
  del	
  plugin	
  
   	
  
          A	
   seguire	
   è	
   illustrato	
   il	
   manifest	
   file	
   di	
   questo	
   plugin	
   con	
   evidenza	
   delle	
  
   sezioni	
   indicate	
   nel	
   precedente	
   elenco.	
   Per	
   ragioni	
   di	
   spazio	
   non	
   è	
   riportato	
  
   l’intero	
  manifest	
  file.	
  
   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
   2	
  SOAP	
  (Simple	
  Object	
  Access	
  Protocol)	
  è	
  un	
  protocollo	
  leggero	
  basato	
  su	
  XML	
  per	
  lo	
  scambio	
  di	
  messaggi	
  tra	
  componenti	
  
   software.	
  La	
  parola	
  object	
  manifesta	
  che	
  l'uso	
  del	
  protocollo	
  dovrebbe	
  effettuarsi	
  secondo	
  il	
  paradigma	
  della	
  
   programmazione	
  orientata	
  agli	
  oggetti.	
  Per	
  maggiori	
  informazioni	
  consultare	
  http://en.wikipedia.org/wiki/SOAP.	
  	
  

This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                                                                                                            	
  
   	
  
Antonio	
  Musarra	
              10	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
             Rev.	
  1.0	
  
   	
  
   	
  
   	
  
   <install version="1.5" type="plugin" group="user">
            <name>SugarCRM SOAP Users Sync (J-SugarCRM UserSync)</name>
            <author>Antonio Musarra</author>
            <creationDate>Dicembre 2010</creationDate>
            <copyright>Copyright(C) 2010 Antonio Musarra. All rights reserved.</copyright>
            <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL</license>
            <authorEmail>antonio.musarra@gmail.com</authorEmail>
            <authorUrl>http://musarra.wordpress.com</authorUrl>
            <version>1.0.0</version>
            <description>Users Sync Plugin for SugarCRM (Version 6.1 CE, Pro, Ent)</description>
   	
  
   Listing	
  1	
  Prima	
  sezione	
  del	
  manifest	
  file	
  del	
  plugin.	
  

            Il	
   root	
   element	
   install	
   ha	
   tre	
   attributi	
   che	
   definiscono	
   rispettivamente:	
   la	
  
   versione	
  di	
  Joomla	
  per	
  cui	
  il	
  plugin	
  è	
  compatibile,	
  il	
  tipo	
  di	
  componente	
  e	
  infine	
  il	
  
   tipo	
   di	
   plugin.	
   Il	
   resto	
   della	
   prima	
   sezione	
   contiene	
   informazioni	
   che	
   sono	
  
   abbastanza	
  auto	
  esplicative	
  da	
  non	
  richiedere	
  successivi	
  approfondimenti.	
  	
  
   	
  
   	
  
                   <files>
                                  <filename plugin="sugarcrmusersync">sugarcrmusersync.php</filename>
                                  <filename>SugarCRMUserSync/ICRMUserSyncClient.php</filename>
                                  <filename>SugarCRMUserSync/CRMUserSyncClientFactory.php</filename>
                                  <filename>SugarCRMUserSync/UserModel.php</filename>
                                  <filename>SugarCRMUserSync/SOAP_SugarCRMUserSyncClient.php</filename>
                   </files>
   	
  
   Listing	
  2	
  Seconda	
  sezione	
  del	
  manifest	
  file	
  del	
  plugin.	
  

             In	
   questa	
   sezione	
   sono	
   invece	
   raggruppati	
   all’interno	
   dell’elemento	
   files,	
  
   tutti	
   i	
   file	
   che	
   costituiscono	
   il	
   plugin.	
   Da	
   notare	
   il	
   primo	
   elemento	
   del	
   gruppo	
  
   (filename),	
   ha	
   un	
   attributo	
   plugin	
   il	
   cui	
   valore	
   definisce	
   il	
   nome	
   del	
   plugin	
   (che	
  
   deve	
   essere	
   in	
   lowercase)	
   e	
   il	
   valore	
   dell’elemento	
   è	
   il	
   file	
   php	
   contenente	
  
   l’estensione	
   della	
   classe	
   JPlugin,	
   ovvero,	
   la	
   classe	
   plgUserSugarCRMUserSync	
  
   (vedi	
  Figura	
  6	
  Class	
  diagram	
  di	
  base	
  del	
  plugin.).	
  	
  
   	
  
   	
  
            <param name="SoapEndPoint" type="text" size="50"
   default="http://www.example.it/soap.php?wsdl" label="SOAP End Point" description="The SugarCRM
   SOAP WSDL (Web Services Description Language) HTTP location (example:
   http://www.example.it/soap.php?wsdl)" />
            <param name="SugarCRMEd" type="radio" default="0" label="Select SugarCRM Edition"
   description="Select the SugarCRM Edition">
                     <option value="0">Community Edition</option>
                     <option value="1">Professional Edition</option>
                     <option value="2">Enterprise Edition</option>
            </param>
            <param name="PortalUserAPI" type="text" size="20" default="" label="Portal User API"
   description="The SugarCRM Portal API User" />
            <param name="PortalUserAPIPassword" type="password" size="20" default="" label="Portal
   User API Password" description="The SugarCRM Portal API User Password" />
            <param name="SyncUserPassword" type="radio" default="0" label="Enable a Sync User
   Password" description="Enable a Sync User Password">
                     <option value="0">No</option>
                     <option value="1">Yes</option>
            </param>
   	
  
   Listing	
  3	
  Terza	
  sezione	
  del	
  manifest	
  file	
  del	
  plugin.	
  

         In	
   quest’ultima	
   sezione	
   sono	
   invece	
   riportati	
   tutti	
   quei	
   parametri	
   di	
  
   configurazione	
  richiesti	
  da	
  plugin	
  (Musarra, 2010).	
  	
  
This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  
Antonio	
  Musarra	
              11	
  
                                                                                                                                                                                                                                      J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                                                                                                                  Technical	
  Guide	
             Rev.	
  1.0	
  
   	
  
            In	
   Figura	
   8	
   è	
   mostrato	
   il	
   deployment	
   diagram	
   che	
   descrive	
   la	
   distribuzione	
  
   dei	
   componenti	
   software	
   rispetto	
   alle	
   risorse	
   disponibili.	
   Il	
   diagramma	
   è	
  
   abbastanza	
  esemplificativo,	
  sono	
  state	
  escluse	
  le	
  risorse	
  di	
  “Runtime”.	
  
   	
  
   	
  




                                                                                                                                                                                                                                                                        	
  
   Figura	
  8	
  Deployment	
  Diagram	
  del	
  plugin	
  J-­‐SugarCRM	
  UserSync.	
  

   	
  


                              5. Integrazione	
  con	
  il	
  CRM	
  
         Il	
   processo	
   d’integrazione	
   tra	
   diversi	
   tipi	
   di	
   sistemi	
   informatici	
   avviene	
  
   attraverso	
   l’utilizzo	
   di	
   software	
   e	
   soluzioni	
   architetturali.	
   I	
   sistemi	
   informatici	
  
   oggetto	
  dell’integrazione	
  sono	
  due	
  e	
  appartengono	
  a	
  due	
  diverse	
  tipologie:	
  
   	
  
        • Joomla3:	
  sistema	
  di	
  Content	
  Management	
  System	
  o	
  CMS	
  
        • SugarCRM4:	
  Customer	
  Relationship	
  Management	
  o	
  CRM	
  	
  
   	
  
         Entrambi	
  i	
  sistemi	
  sono	
  Open	
  Source	
  e	
  interamente	
  scritti	
  in	
  PHP5.	
  L’unico	
  
   componente	
   software	
   che	
   realizza	
   l’integrazione	
   tra	
   i	
   due	
   sistemi	
   è	
   il	
   plugin	
   J-­‐
   SugarCRM	
  UserSync	
  che	
  “vive”	
  in	
  Joomla.	
  La	
  soluzione	
  architetturale	
  più	
  indicata	
  
   adottata	
   in	
   questo	
   “semplice”	
   processo	
   d’integrazione	
   è	
   basata	
   interamente	
  
   sull’utilizzo	
   dei	
   Web	
   Service	
   (o	
   servizi	
   web),	
   entrambi	
   i	
   sistemi	
   sono	
   Provider,	
   in	
  
   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
   3	
  La	
  versione	
  di	
  riferimento	
  è	
  la	
  1.5	
  
   4	
  La	
  versione	
  di	
  riferimento	
  è	
  la	
  6.1	
  edizione	
  community	
  
   5	
  PHP	
  (acronimo	
  ricorsivo	
  di	
  "PHP:	
  Hypertext	
  Preprocessor",	
  preprocessore	
  d’ipertesti)	
  è	
  un	
  linguaggio	
  di	
  scripting	
  

   interpretato,	
  con	
  licenza	
  open	
  source	
  e	
  libera	
  (ma	
  incompatibile	
  con	
  la	
  GPL),	
  originariamente	
  concepito	
  per	
  la	
  
   programmazione	
  Web	
  ovvero	
  la	
  realizzazione	
  di	
  pagine	
  web	
  dinamiche.	
  

This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                                                                                                            	
  
   	
  
Antonio	
  Musarra	
                              12	
  
                                                                                                                                                                                J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                                                            Technical	
  Guide	
                             Rev.	
  1.0	
  
   	
  
   altre	
  parole,	
  espongono	
  parte	
  o	
  tutte	
  le	
  funzionalità	
  come	
  Web	
  Service.	
  In	
  questo	
  
   scenario	
   d’integrazione	
   Joomla	
   assume	
   il	
   ruolo	
   di	
   consumer	
   mentre	
   SugarCRM	
  
   assume	
  il	
  ruolo	
  di	
  provider.	
  In	
  Figura	
  9	
  è	
  schematizzato	
  ad	
  alto	
  livello	
  lo	
  scenario	
  
   d’integrazione	
  tra	
  i	
  due	
  sistemi.	
  
   	
  
                                                                                               	
  Service	
  Consumer                                                                	
  	
  	
  Service	
  Provider




                                                                       Portale	
  Utente	
  	
                                                                     Sistema	
  Gestione	
  Clienti	
  
                                                                       (CMS	
  Joomla)                                                                                 (CRM	
  SugarCRM)



          Portal	
  User                       	
  	
  	
  Comunicazione	
  su	
  protocollo	
  HTTP                                 Comunicazione	
  via	
  Servizi	
  Web	
  (Web	
  Service)
                                                                                                                                                                                                                                  	
  
   Figura	
  9	
  Macro	
  schema	
  d’integrazione	
  tra	
  Joomla	
  e	
  SugarCRM.	
  

   	
  
   Ricapitolando	
  i	
  ruoli	
  dei	
  due	
  sistemi	
  sono:	
  
   	
  
        • Il	
   sistema	
   di	
   CRM	
   ha	
   la	
   responsabilità	
   di	
   fornire	
   ai	
   fini	
   dell’integrazione	
  
              una	
  serie	
  di	
  Web	
  Service	
  che	
  espongono	
  le	
  funzionalità	
  richieste;	
  
        • Il	
  sistema	
  di	
  CMS	
  ha	
  la	
  responsabilità	
  di	
  agire	
  come	
  consumatore	
  dei	
  Web	
  
              Service	
   esposti	
   dal	
   sistema	
   di	
   CRM.	
   L’accesso	
   all’interfaccia	
   esposta	
   dal	
  
              CRM	
  è	
  guidato	
  dagli	
  eventi	
  in	
  precedenza	
  discussi	
  (vedi	
  2.1	
  Introduzione	
  
              a	
  Joomla	
  Plugin).	
  
   	
  
         Il	
   sistema	
   SugarCRM	
   ha	
   un	
   set	
   di	
   API6	
  esposte	
   come	
   Web	
   Service	
   e	
   in	
  
   Tabella	
  2	
  sono	
  elencate	
  le	
  funzioni	
  utilizzate	
  dal	
  plugin	
  in	
  qualità	
  di	
  consumer.	
  
         	
  
   Nome	
                   Descrizione	
  
   Login	
                  Esegue	
  il	
  login	
  dell’utente	
  su	
  SugarCRM	
  iniziando	
  una	
  nuova	
  
                            sessione	
  utente.	
  
   Logout	
                 Esegue	
  il	
  logout	
  dell’utente	
  su	
  SugarCRM	
  terminando	
  la	
  
                            precedente	
  sessione.	
  
   GetEntryList	
   Recupera	
  una	
  lista	
  di	
  oggetti	
  SugarCRM	
  
   SetEntry	
               Crea	
  o	
  aggiorna	
  un	
  oggetto	
  SugarCRM	
  
   Tabella	
  2	
  API	
  SugarCRM	
  utilizzate	
  dal	
  plugin	
  J-­‐SugarCRM	
  UserSync.	
  

                                              Ogni	
  operazione	
  che	
  può	
  essere	
  di	
  creazione	
  o	
  aggiornamento	
  utenti	
  che	
  il	
  
   plugin	
  esegue	
  sul	
  CRM	
  è	
  preceduta	
  sempre	
  dall’operazione	
  di	
  login	
  e	
  terminata	
  
   con	
  l’operazione	
  di	
  logout.	
  L’utente	
  con	
  il	
  quale	
  è	
  eseguito	
  il	
  login	
  sul	
  CRM	
  è	
  di	
  
   tipo	
  amministrativo	
  e	
  definito	
  in	
  configurazione	
  (Musarra, 2010).	
  
                                              Per	
   maggiori	
   informazioni	
   riguardo	
   alle	
   API	
   di	
   SugarCRM	
   è	
   consigliabile	
  
   consultare	
  la	
  documentazione	
  ufficiale	
  (SugarCRM Inc., 2010).	
  
                                              	
  
   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
   6	
  Le	
   Application	
   Programming	
   Interface	
   API	
   (Interfaccia	
   di	
   Programmazione	
   di	
   un'Applicazione),	
   sono	
   ogni	
   insieme	
   di	
  
   procedure	
  disponibili	
  al	
  programmatore,	
  di	
  solito	
  raggruppate	
  a	
  formare	
  un	
  set	
  di	
  strumenti	
  specifici	
  per	
  un	
  determinato	
  
   compito.	
  È	
  un	
  metodo	
  per	
  ottenere	
  un'astrazione,	
  di	
  solito	
  tra	
  l'hardware	
  e	
  il	
  programmatore,	
  o	
  tra	
  software	
  a	
  basso	
  ed	
  
   alto	
   livello.	
   Le	
   API	
   permettono	
   di	
   evitare	
   ai	
   programmatori	
   di	
   scrivere	
   tutte	
   le	
   funzioni	
   dal	
   nulla.	
   Le	
   API	
   stesse	
   sono	
  
   un'astrazione:	
  il	
  software	
  che	
  fornisce	
  una	
  certa	
  API	
  è	
  detto	
  che	
  implementa	
  le	
  API.	
  

This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                                                                      	
  
   	
  
Antonio	
  Musarra	
              13	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
             Rev.	
  1.0	
  
   	
  
                 In	
  Figura	
  10	
  è	
  mostrato	
  il	
  deployment	
  diagram	
  focalizzato	
  sui	
  componenti	
  
   software	
   che	
   realizzano	
   l’integrazione	
   tra	
   i	
   due	
   sistemi,	
   quest’ultimi	
   sono	
  
   rappresentati	
  sul	
  diagramma	
  dai	
   nodi	
   Joomla	
   e	
   SugarCRM.	
   La	
  relazione	
  tra	
  i	
  due	
  
   nodi	
  è	
  ancor	
  più	
  rafforzata	
  dallo	
  stereotipo	
  soap	
  che	
  indica	
  che	
  la	
  comunicazione	
  
   tra	
   i	
   due	
   sistemi	
   avviene	
   tramite	
   il	
   protocollo	
   SOAP	
   (su	
   canale	
   http),	
   così	
   come	
  
   anticipato	
  in	
  precedenza.	
  
                 	
  




                                                                                                                                                                                	
  
   Figura	
  10	
  Deployment	
  Diagram	
  d’integrazione	
  Joomla	
  e	
  SugarCRM.	
  

   	
  


           6. Client	
  SOAP	
  
           La	
   comunicazione	
   tra	
   i	
   due	
   sistemi	
   avviene	
   sfruttando	
   la	
   tecnologia	
   dei	
  
   Web	
   Service.	
   Joomla	
   è	
   il	
   sistema	
   che	
   ha	
   il	
   ruolo	
   di	
   Consumer	
   verso	
   i	
   servizi	
  
   esposti	
   da	
   SugarCRM,	
   il	
   plugin	
   per	
   questo	
   motivo	
   implementa	
   un	
   client	
   SOAP,	
  
   implementazione	
  demandata	
  al	
  modulo	
  soap	
  fornito	
  dall’engine	
  di	
  PHP	
  (The PHP
   Group, 2010).	
  
   	
  
   	
                                            	
  




This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  
Antonio	
  Musarra	
              14	
  
                                                                                                                                              J-­‐SugarCRM	
  UserSync	
  1.0	
  
                                                                                                                                                          Technical	
  Guide	
             Rev.	
  1.0	
  
   	
  
   	
  	
  


   Bibliography	
  
   Musarra,	
  A.	
  (2010,	
  December).	
  J-­‐SugarCRM	
  UserSync	
  1.0	
  -­‐	
  Installazione	
  e	
  Guida	
  Utente.	
  (A.	
  
   Musarra,	
  A	
  cura	
  di)	
  Tratto	
  da	
  J-­‐SugarCRMUserSync-­‐Installazione_GuidaUtente-­‐1.0.pdf	
  
   Wikipedia.	
  (2010,	
  November	
  2010).	
  Abstract	
  Factory.	
  Tratto	
  da	
  Wikipedia:	
  
   http://it.wikipedia.org/wiki/Abstract_factory	
  
   Wikipedia.	
  (2007,	
  February	
  14).	
  Observer	
  Pattern.	
  Tratto	
  da	
  Wikipedia:	
  
   http://it.wikipedia.org/wiki/Observer_pattern	
  
   Wikipedia.	
  (2010,	
  December	
  28).	
  Singleton	
  Pattern.	
  Tratto	
  da	
  Wikipedia:	
  
   http://en.wikipedia.org/wiki/Singleton_pattern	
  
   Wikipedia.	
  (2010,	
  March	
  2010).	
  Software	
  Framework.	
  Tratto	
  da	
  Wikipedia:	
  
   http://en.wikipedia.org/wiki/Software_framework	
  
   Joomla.	
  (2010,	
  May	
  18).	
  Framework	
  -­‐	
  Joomla!	
  Documentation.	
  Tratto	
  da	
  Joomla	
  Documentation:	
  
   http://docs.joomla.org/Framework	
  
   Joomla.	
  (2010,	
  November	
  10).	
  Joomla	
  Developers.	
  Tratto	
  da	
  Joomla	
  Documentation:	
  
   http://docs.joomla.org/Developers	
  
   Joomla.	
  (2010,	
  June	
  29).	
  Reference:User	
  Events	
  for	
  Plugin	
  System	
  -­‐	
  Joomla!	
  Documentation.	
  Tratto	
  
   da	
  Joomla!	
  Documentation:	
  http://docs.joomla.org/Reference:User_Events_for_Plugin_System	
  
   Joomla.	
  (2009,	
  January	
  14).	
  Reference:Contact	
  Events	
  for	
  Plugin	
  System	
  -­‐	
  Joomla!	
  Documentation.	
  
   Tratto	
  da	
  Joomla!	
  Documentation:	
  
   http://docs.joomla.org/Reference:Contact_Events_for_Plugin_System	
  
   Joomla.	
  (2009,	
  September	
  18).	
  Reference:Content	
  Events	
  for	
  Plugin	
  System	
  -­‐	
  Joomla!	
  
   Documentation.	
  Tratto	
  da	
  Joomla!	
  Documentation:	
  
   http://docs.joomla.org/Reference:Content_Events_for_Plugin_System	
  
   Joomla.	
  (2009,	
  January	
  30).	
  Reference:Editor	
  Events	
  for	
  Plugin	
  System	
  -­‐	
  Joomla!	
  Documentation.	
  
   Tratto	
  da	
  Joomla!	
  Documentation:	
  
   http://docs.joomla.org/Reference:Editor_Events_for_Plugin_System	
  
   Joomla.	
  (2011,	
  January	
  2).	
  Reference:System	
  Events	
  for	
  Plugin	
  System	
  -­‐	
  Joomla!	
  Documentation.	
  
   Tratto	
  da	
  Joomla!	
  Documentation:	
  
   http://docs.joomla.org/Reference:System_Events_for_Plugin_System	
  
   SugarCRM	
  Inc.	
  (2010).	
  Sugar	
  Community	
  Edition	
  Documentation	
  -­‐	
  API	
  Definition.	
  Tratto	
  da	
  
   SugarCRM	
  Open	
  Source	
  CRM:	
  
   http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdition/6.1/-­‐docs-­‐
   Developer_Guides-­‐Sugar_Developer_Guide_6.1.0-­‐
   Chapter%202%20Application%20Framework.html#9000303	
  
   SugarCRM	
  Inc.	
  (2010).	
  Sugar	
  Community	
  Edition	
  Documentation	
  |	
  SugarCRM	
  -­‐	
  Commercial	
  Open	
  
   Source	
  CRM.	
  Tratto	
  da	
  SugarCRM	
  -­‐	
  Open	
  Source	
  CRM:	
  
   http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdition/6.1/-­‐docs-­‐
   Developer_Guides-­‐Sugar_Developer_Guide_6.1.0-­‐toc.html	
  
   Riehle,	
  D.	
  (2000).	
  Framework	
  Design:	
  A	
  Role	
  Modeling	
  Approach.	
  (S.	
  F.	
  Technology,	
  A	
  cura	
  di)	
  
   Tratto	
  da	
  Swiss	
  Federal	
  Institute	
  of	
  Technology:	
  http://www.riehle.org/computer-­‐
   science/research/dissertation/diss-­‐a4.pdf	
  
   The	
  PHP	
  Group.	
  (2010,	
  December	
  2010).	
  PHP:	
  SOAP	
  Manual.	
  Tratto	
  da	
  PHP.net:	
  
   http://www.php.net/manual/en/book.soap.php	
  
   	
  
   	
  

This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution	
  -­‐	
  Non	
  Commercial	
  -­‐	
  Share	
  Alike	
  
                                                                                                                                                                                    	
  
   	
  

Contenu connexe

Similaire à J-SugarCRM UserSync TechnicalGuide

Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...artemedea
 
SESAMO (application login automator): evoluzioni applicative e considerazioni...
SESAMO (application login automator): evoluzioni applicative e considerazioni...SESAMO (application login automator): evoluzioni applicative e considerazioni...
SESAMO (application login automator): evoluzioni applicative e considerazioni...AndrijaCiric1
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGiacomoZorzin
 
Manuale Corsi Lato Admin
Manuale Corsi Lato AdminManuale Corsi Lato Admin
Manuale Corsi Lato AdminFormaLms
 
AnthericaMail V2 - Alcune funzioni
AnthericaMail V2 - Alcune funzioniAnthericaMail V2 - Alcune funzioni
AnthericaMail V2 - Alcune funzioniAntonio Marsini
 
I processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOpsI processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOpsGiulio Destri
 
Instruction Manual, XChange 2 User Manual Italian Language web4901 0133-2
Instruction Manual, XChange 2 User Manual Italian Language  web4901 0133-2Instruction Manual, XChange 2 User Manual Italian Language  web4901 0133-2
Instruction Manual, XChange 2 User Manual Italian Language web4901 0133-2Serious Detecting
 
Manuale Configurazione Docebo
Manuale Configurazione DoceboManuale Configurazione Docebo
Manuale Configurazione DoceboFormaLms
 
G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...
G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...
G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...Pasquale Popolizio
 
Presentazione MomaPIX DAM
Presentazione MomaPIX DAMPresentazione MomaPIX DAM
Presentazione MomaPIX DAMMomaSoft srl
 
Manuale Corsi Lato Docente
Manuale Corsi Lato DocenteManuale Corsi Lato Docente
Manuale Corsi Lato DocenteFormaLms
 
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...ciakana
 
Adobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best PracticesAdobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best Practicesmarcocasario
 
Un sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMNUn sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMNAlessandro Segatto
 
Tesi Giuseppe Chechile
Tesi   Giuseppe ChechileTesi   Giuseppe Chechile
Tesi Giuseppe Chechilegchechile
 
Dynamo 3.0-manuale utente joomla
Dynamo 3.0-manuale utente joomlaDynamo 3.0-manuale utente joomla
Dynamo 3.0-manuale utente joomlafabio comerci
 
G3 web skills profiles versione 2.0. generation 3 european ict professional p...
G3 web skills profiles versione 2.0. generation 3 european ict professional p...G3 web skills profiles versione 2.0. generation 3 european ict professional p...
G3 web skills profiles versione 2.0. generation 3 european ict professional p...Pasquale Popolizio
 

Similaire à J-SugarCRM UserSync TechnicalGuide (20)

Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
 
SESAMO (application login automator): evoluzioni applicative e considerazioni...
SESAMO (application login automator): evoluzioni applicative e considerazioni...SESAMO (application login automator): evoluzioni applicative e considerazioni...
SESAMO (application login automator): evoluzioni applicative e considerazioni...
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
 
PALUZZANO TESI
PALUZZANO TESIPALUZZANO TESI
PALUZZANO TESI
 
Manuale Corsi Lato Admin
Manuale Corsi Lato AdminManuale Corsi Lato Admin
Manuale Corsi Lato Admin
 
Manuale sicurnet duvri
Manuale sicurnet duvriManuale sicurnet duvri
Manuale sicurnet duvri
 
AnthericaMail V2 - Alcune funzioni
AnthericaMail V2 - Alcune funzioniAnthericaMail V2 - Alcune funzioni
AnthericaMail V2 - Alcune funzioni
 
I processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOpsI processi di sviluppo software: l'evoluzione agile ed il DevOps
I processi di sviluppo software: l'evoluzione agile ed il DevOps
 
Instruction Manual, XChange 2 User Manual Italian Language web4901 0133-2
Instruction Manual, XChange 2 User Manual Italian Language  web4901 0133-2Instruction Manual, XChange 2 User Manual Italian Language  web4901 0133-2
Instruction Manual, XChange 2 User Manual Italian Language web4901 0133-2
 
Manuale Configurazione Docebo
Manuale Configurazione DoceboManuale Configurazione Docebo
Manuale Configurazione Docebo
 
G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...
G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...
G3 Web skills profiles - versione 1.0 Generation 3 European ICT Professional ...
 
Presentazione MomaPIX DAM
Presentazione MomaPIX DAMPresentazione MomaPIX DAM
Presentazione MomaPIX DAM
 
Manuale Corsi Lato Docente
Manuale Corsi Lato DocenteManuale Corsi Lato Docente
Manuale Corsi Lato Docente
 
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
 
Adobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best PracticesAdobe TechConnection: Flex Best Practices
Adobe TechConnection: Flex Best Practices
 
Un sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMNUn sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMN
 
Tesi Giuseppe Chechile
Tesi   Giuseppe ChechileTesi   Giuseppe Chechile
Tesi Giuseppe Chechile
 
Dynamo 3.0-manuale utente joomla
Dynamo 3.0-manuale utente joomlaDynamo 3.0-manuale utente joomla
Dynamo 3.0-manuale utente joomla
 
G3 web skills profiles versione 2.0. generation 3 european ict professional p...
G3 web skills profiles versione 2.0. generation 3 european ict professional p...G3 web skills profiles versione 2.0. generation 3 european ict professional p...
G3 web skills profiles versione 2.0. generation 3 european ict professional p...
 
Tu2009 it
Tu2009 itTu2009 it
Tu2009 it
 

Plus de Antonio Musarra

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 19cAntonio Musarra
 
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...Antonio Musarra
 
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 19cAntonio Musarra
 
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...Antonio Musarra
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.comAntonio Musarra
 
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 DatabaseAntonio Musarra
 
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 - 1Antonio Musarra
 
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 StyleAntonio Musarra
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceAntonio Musarra
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomAntonio Musarra
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
 
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 SugarCRMAntonio Musarra
 
Liferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelLiferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelAntonio Musarra
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioAntonio Musarra
 
Introduzione a Liferay Message BUS
Introduzione a Liferay Message BUSIntroduzione a Liferay Message BUS
Introduzione a Liferay Message BUSAntonio Musarra
 
Building a Client .NET for SugarCRM
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRMAntonio Musarra
 
Costruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMCostruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMAntonio Musarra
 

Plus de Antonio Musarra (20)

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...
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.com
 
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
 
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
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual Appliance
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minuti
 
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
 
Liferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelLiferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio Excel
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo Episodio
 
Introduzione a Liferay Message BUS
Introduzione a Liferay Message BUSIntroduzione a Liferay Message BUS
Introduzione a Liferay Message BUS
 
Building a Client .NET for SugarCRM
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRM
 
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 TechnicalGuide

  • 1. Document Revision: 1.0 J-­‐SugarCRM  UserSync  1.0         Technical  Guide   Il  documento  illustra  com’è  stato  realizzato  il  plugin  J-­‐SugarCRM  UserSync  sfruttando  il   framework  messo  a  disposizione  da  Joomla.  Sono  inoltre  affrontati  i  temi  che  riguardano   l’integrazione  con  il  sistema  di  CRM  Open  Source  SugarCRM.     A n t o n i o   M u s a r r a   W e b :   h t t p : / / m u s a r r a . w o r d p r e s s . c o m   P r o d u c t   P a g e :   h t t p : / / m u s a r r a . w o r d p r e s s . c o m / J -­‐ S u g a r C R M U s e r S y n c   This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike    
  • 2. Antonio  Musarra   2   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     1.   Introduzione  ................................................................................................................................  3   2.   Introduzione  a  Joomla  Framework  ....................................................................................  3   2.1   Introduzione  a  Joomla  Plugin   ........................................................................................  4   3.   Obiettivi  del  plugin  J-­‐SugarCRM  UserSync   ......................................................................  6   4.   Struttura  del  plugin  J-­‐SugarCRM  UserSync  ....................................................................  7   5.   Integrazione  con  il  CRM  ........................................................................................................  11   6.   Client  SOAP  .................................................................................................................................  13   Bibliography  .......................................................................................................................................  14         This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 3. Antonio  Musarra   3   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     1. Introduzione   J-­‐SugarCRM  UserSync  è  un  plugin  Joomla  da  definire  d’integrazione  poiché   consente  l’interazione  tra  due  sistemi:  Joomla  e  il  CRM  Open  Source  SugarCRM.   L’oggetto   dell’integrazione   sono   gli   utenti   del   sistema   Joomla,   che   attraverso   il   plugin  sono  sincronizzati  con  i  rispettivi  utenti  del  CRM  SugarCRM,  tutto  questo   avviene  fruttando  la  tecnologia  che  è  alla  base  dei  Web  Service.     Lo  scopo  di  questo  documento  è  di  descrivere  tecnicamente  (mantenendo   un  basso  livello  di  dettaglio)  com’è  stato  costruito  il   plugin  J-­‐SugarCRM  UserSync   sfruttando   il   framework   messo   a   disposizione   da   Joomla   stesso.   Sono   inoltre   affrontati  i  temi  che  riguardano  l’integrazione  con  il  sistema  di  CRM  SugarCRM.  Il   documento   è   rivolto   a   quelle   figure   tecniche   che   sono   interessate   ad   approfondire  la  struttura  del  plugin  e  lo  scenario  d’integrazione.         2. Introduzione  a  Joomla  Framework   Nella   produzione   del   software,   il   framework   è   una   struttura   di   supporto   su   cui  un  software  può  essere  organizzato  e  progettato.  Alla  base  di  un  framework  c'è   sempre   una   serie   di   librerie   di   codice   utilizzabili   con   uno   o   più   linguaggi   di   programmazione,   spesso   corredate   da   una   serie   di   strumenti   di   supporto   allo   sviluppo   del   software,   come   ad   esempio   un   IDE,   un   debugger,   o   altri   strumenti   ideati  per  aumentare  la  velocità  di  sviluppo  del  prodotto  finito (Wikipedia, 2010).     Joomla  è  un  sistema  costituito  da  tre  livelli,  quali:   • Extensions   layer,   un   insieme   di   estensioni   per   il   framework   di   Joomla  che  includono  tre  applicazioni:   o Modules   o Components   o Templates   • Application  layer,  un  insieme  di  applicazioni  che  estendono  la  classe   JApplication  del  framework  Joomla.  Le  attuali  applicazioni  sono:   o JInstallation   o JAdministrator   o JSite   o XML-­‐RPC   • Framework  layer,  costituito  da:   o Classi  core  del  framework  Joomla   o Librerie  richieste  dal  framework  o  installate  da  terze  parti   o Plugins  che  estendono  le  funzionalità  del  framework               This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 4. Antonio  Musarra   4   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     E’  possibile  schematizzare  lo  schema  di  cui  sopra  attraverso  il  diagramma   illustrato  in  Figura  1.     Modules   Components   Templates   Extension  Layer   Application   Application  Layer   Libraries   Framework   Plugins   Framework  Layer     Figura  1  Modello  a  tre  livelli  del  sistema  Joomla.   Il  livello  dove  trova  posto  il  plugin  J-­‐SugarCRM  UserSync  è  quello  più  basso   (bottom  layer),  il  framework  layer,  in  particolare  il  plugin  vive  dentro  la  “scatola”   Plugins.  Per  maggiori  dettagli  fare  riferimento  a  (Joomla, 2010).     2.1 Introduzione  a  Joomla  Plugin   I   Plugin1  di   Joomla   permettono   in   maniera   molto   semplice   di   estendere   le   funzionalità  del  sistema  consentendo  l’esecuzione  di  codice  custom  in  risposta  a   certi   eventi   che   si   possono   verificare   all’interno   del   sistema   stesso.   E’   possibile   affermare   che   Joomla   è   per   la   quasi   totalità   un   sistema   Event   Driven   (guidato   dagli   eventi)   e   i   cosiddetti   event  handlers   non   sono   altro   che   i   plugin   di   Joomla   (vedere  Figura  2).       Framework     Events     Generator   Events   Dispatcher   Handler  1   Handler  2   Handler  n      Figura  2  Schema  generico  di  un  sistema  Event  Driven  basato  su  di  un  Framework  (Joomla).       L’architettura   a   plugin   implementata   da   Joomla   segue   il   design   pattern   Observer (Wikipedia, 2007).   La   classe   base   per   tutti   i   plugin   è   JPlugin,   questa   è   derivata  dalla  classe  JObserver,  quest’ultima  fornisce  i  servizi  di  registrazione  del   plugin  per  rispondere  agli  eventi  core  o  custom.  La  classe  JDispatcher  è  derivata                                                                                                                   1  Il  termine  "plug-­‐in"  o  "plugin"  è  spesso  usato  per  indicare  un  elemento  software  che  può  essere  inserito  (installato)  in   uno   strumento   di   uso   generale   nato   per   eseguire   specifiche   attività.   Ad   esempio,   se   il   browser   non   sa   come   aprire   i   file   di   un   particolare   tipo,   è   possibile   scaricare   e   installare   un   browser   plugin   per   quel   tipo   di   file.   Eclipse   è   un   framework   general-­‐purpose  pluggable  in  cui  è  possibile  inserire  le  estensioni  per  diversi  linguaggi  di  programmazione.  E  così  via.   2  SOAP  (Simple  Object  Access  Protocol)  è  un  protocollo  leggero  basato  su  XML  per  lo  scambio  di  messaggi  tra  componenti   This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 5. Antonio  Musarra   5   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     dalla   classe   JObservable,   quest’ultima   è   un   gestore   di   eventi   che   richiama   tutti   i   plugin  registrati  per  un  determinato  evento  quando  tale  evento  è  scatenato.    In   Figura   3   è   illustrato   il   diagramma   delle   classi   che   gestiscono   tutto   ciò   che   riguarda  gli  eventi  all’interno  di  Joomla.          Figura  3  Diagramma  delle  classi  per  la  gestione  degli  eventi  Joomla.     Joomla   gestisce   una   serie   di   eventi   core   che   sono   organizzati   in   cinque   gruppi  fondamentali:   • System  events  (Joomla, 2011)   • User  events  (Joomla, 2010)   • Editor  events  (Joomla, 2009)   • Content  events  (Joomla, 2009)   • Contact  events  (Joomla, 2009)     Il   gruppo   di   eventi   interessato   dal   plugin   J-­‐SugarCRM  UserSync   è   quello   che   riguarda  gli  utenti  del  sistema  (User  events)  e  che  ingloba  i  seguenti  eventi:   • onLoginUser   • onLogoutUser   • onAuthenticate   • onAuthenticateFailure   • onBeforeStoreUser   • onAfterStoreUser   • onBeforeDeleteUser   • onAfterDeleteUser     Gli   eventi   per   i   quali   interverrà   il   plugin   J-­‐SugarCRM   UserSync   sono:   onAfterStoreUser  e  onAfterDeleteUser.     This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 6. Antonio  Musarra   6   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     3. Obiettivi  del  plugin  J-­‐SugarCRM  UserSync   Il  plugin  definito  d’integrazione  nel  capitolo  introduttivo  soddisfa  una  serie   di   requisiti   funzionali   che   ruotano   nell’intorno   degli   utenti   di   Joomla.   In   breve,   le   macro  funzionalità  introdotte  dal  plugin  sono:   • Quando   su   Joomla   è   creata   un’utenza   (tramite   la   form   di   richiesta   pubblica  o  direttamente  dal  pannello  di  amministrazione)  la  stessa  deve   essere  migrata  sull’istanza  SugarCRM  definita  in  fase  di  configurazione;   • Le   operazioni   di   aggiornamento   sulle   utenze   di   Joomla   devono   essere   migrate   sull’istanza   SugarCRM   definita   in   fase   di   configurazione.   Gli   attributi  dell’utente  soggetti  alla  sincronizzazione  sono:  Password,  Email   e  Status;   • Il   processo   di   attivazione/disattivazione   delle   utenze   di   Joomla   deve   essere   propagato   anche   sull’istanza   SugarCRM   definita   in   fase   di   configurazione.  La  disattivazione  è  intesa  come  sospensione  temporanea   dell’utenza;   • Quando   un’utenza   è   sottoposta   a   eliminazione,   la   stessa   deve   essere   eliminata   sull’istanza   SugarCRM   definita   in   fase   di   configurazione.   L’eliminazione   di   un   utente   su   SugarCRM   è   sempre   logica,   è   possibile   quindi  recuperare  l’utente  e  i  dati  a  esso  associati.   In   Figura   4   è   illustrato   un   use   case   diagram   che   descrive   le   funzioni   o   i   servizi  indicati  nel  precedente  schema.       Figura  4  Descrizione  delle  funzionalità  introdotte  dal  plugin.     In   Figura   5   è   illustrato   ad   alto   livello   il   processo   dietro   la   creazione   di   un   utente   su   Joomla   a   fronte   della   richiesta   esplicita   dello   stesso   utente.   Lo   stesso   processo,   con   una   leggera   differenza,   si   applica   anche   al   caso   in   cui   l’utente   sia   creato  direttamente  dal  pannello  di  amministrazione.     This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 7. Antonio  Musarra   7   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     (Joomla  Context)   •  L'utente  internet   Compilazione  form  di   effettua  la  registrazione   dal  portale  Joomla.   richiesta  nuovo  utente.   (Joomla  Context)   •  Joomla  acquisisce  la   nuova  utenza   Utenza  registrata  su  Joomla   mettendola  nello  stato   e  in  attesa  di  attivazione.   disabilitato.   (SugarCRM  Context)   •  L'utenza  rimarrà  non   attiva  nino  a  quando   L'utenza  è  stata  creata  su   non  sarà  attivata  su   SugarCRM  e  resa  non  attiva.   Joomla.   (Joomla  Context)   •  Joomla  resta  in  attesa   della  richiesta  di   Invio  della  mail  all'utente   attivazione  da  parte   appena  registrato.     dell'utente.   (Joomla  Context)   Attivazione  dell'utenza   richiesta  tramite  il  link  di   attivazione  presente  sulla   mail.   (SugarCRM  Context)   L'attivazione  viene  migrata   anche  su  SugarCRM.  Da   questo  momento  l'utente   potrà  accedere  al  CRM.     Figura  5  Processo  di  creazione  di  una  nuova  utenza  da  portale  Joomla.     4. Struttura  del  plugin  J-­‐SugarCRM  UserSync   Il  plugin  J-­‐SugarCRM  UserSync  rientra  nel  gruppo  User  Events  (è  tipo  User)  e   risponde   ai   due   eventi   onAfterStoreUser   e   onAfterDeleteUser.   Il   primo   evento   è   scatenato   quando   sono   richieste   le   operazioni   di   creazione   e   aggiornamento   dell’utenza   Joomla,   il   secondo   è   invece   scatenato   quando   è   richiesta   l’operazione   di  eliminazione  dell’utenza  Joomla.  Il  plugin  è  costituito  dai  seguenti  elementi:     • Classe   plgUserSugarCRMUserSync   che   estende   la   classe   JPlugin.   La   classe   implementa  la  gestione  degli  eventi  onAfterStoreUser  e  onAfterDeleteUser;   • Insieme   di   classi   e   interfacce   che   gestisco   la   comunicazione   verso   il   sistema  SugarCRM;   • Manifest  file  (in  formato  XML)  che  contiene  descrizione  e  caratteristiche   del  plugin.  Il  manifest  file  è  richiesto  per  la  fase  d’installazione;   This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 8. Antonio  Musarra   8   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     Nel   resto   del   paragrafo   è   affrontato   ogni   elemento   indicato   nello   schema   precedente.  In  Figura  6  è  illustrata  una  parte  del  class  diagram  del  plugin,  sono   indicati  anche  i  rispettivi  package.             Figura  6  Class  diagram  di  base  del  plugin.     La   classe   plgUserSugarCRMUserSync   indicata   in   Figura   6   ha   i   due   metodi   onAfterStoreUser   e   onAfterDeleteUser   che   gestisco   i   rispettivi   eventi   visti   in   precedenza.   Nel   prossimo   class   diagram   di   Figura   7   sono   mostrate   classi   e   interfacce  che  gestiscono  la  comunicazione  con  il  sistema  SugarCRM.           Figura  7  Class  diagram  del  package  SugarCRMUserSync  del  plugin.   This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 9. Antonio  Musarra   9   J-­‐SugarCRM  UserSync  1.0   Technical  Guide     1.0   Rev.     Il   package   SugarCRMUserSync   indicato   nel   diagramma   è   costituito   da   tre   classi   e   un’interfaccia.   In   Tabella   1   sono   descritte   le   responsabilità   di   ogni   elemento  del  diagramma.       Name   Type   Descrizione   UserModel   Class   Definisce  il  modello  che   rappresenta  l’utente.   Questa  classe  è  utilizzata   come  “merce  di  scambio”  tra   Joomla  e  SugarCRM;  i  dati   dell’utenza  viaggiano   quindi  sull’istanza  di  questa   classe.         CRMUserSyncClientFactory   Abstract  Class   Restituisce  un  oggetto   (unico)  della  classe  che   implementa  l’interfaccia   ICRMUserSyncClient.  Questa   classe  segue  il  design   pattern  Abstract  Factory. (Wikipedia, 2010)   SOAP_SugarCRMUserSyncClient   Class   Implementa  l’interfaccia   ICRMUserSyncClient   gestendo  le  comunicazioni   con  SugarCRM  sfruttando  il   protocollo  SOAP2.  Questa   classe  segue  il  design   pattern  Singleton (Wikipedia, 2010).     ICRMUserSyncClient   Interface   Definisce  l’interfaccia  di   comunicazione  tra  i  due   Joomla  e  il  CRM.    Tabella  1  Descrizione  classi  e  interfacce  del  package  SugarCRMUserSync  del  plugin.     Il   manifest   file   del   plugin   è   indispensabile   per   installare   il   plugin   sul   sistema   Joomla.   Il   manifest   file   è   un   documento   XML   costituito   da   tre   sezioni   principali  che  sono:     • Informazioni  generali  sul  plugin   • Elementi  costitutivi  del  plugin  (classi  e  librerie  di  supporto)   • Parametri  di  configurazione  del  plugin     A   seguire   è   illustrato   il   manifest   file   di   questo   plugin   con   evidenza   delle   sezioni   indicate   nel   precedente   elenco.   Per   ragioni   di   spazio   non   è   riportato   l’intero  manifest  file.                                                                                                                   2  SOAP  (Simple  Object  Access  Protocol)  è  un  protocollo  leggero  basato  su  XML  per  lo  scambio  di  messaggi  tra  componenti   software.  La  parola  object  manifesta  che  l'uso  del  protocollo  dovrebbe  effettuarsi  secondo  il  paradigma  della   programmazione  orientata  agli  oggetti.  Per  maggiori  informazioni  consultare  http://en.wikipedia.org/wiki/SOAP.     This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 10. Antonio  Musarra   10   J-­‐SugarCRM  UserSync  1.0   Technical  Guide   Rev.  1.0         <install version="1.5" type="plugin" group="user"> <name>SugarCRM SOAP Users Sync (J-SugarCRM UserSync)</name> <author>Antonio Musarra</author> <creationDate>Dicembre 2010</creationDate> <copyright>Copyright(C) 2010 Antonio Musarra. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL</license> <authorEmail>antonio.musarra@gmail.com</authorEmail> <authorUrl>http://musarra.wordpress.com</authorUrl> <version>1.0.0</version> <description>Users Sync Plugin for SugarCRM (Version 6.1 CE, Pro, Ent)</description>   Listing  1  Prima  sezione  del  manifest  file  del  plugin.   Il   root   element   install   ha   tre   attributi   che   definiscono   rispettivamente:   la   versione  di  Joomla  per  cui  il  plugin  è  compatibile,  il  tipo  di  componente  e  infine  il   tipo   di   plugin.   Il   resto   della   prima   sezione   contiene   informazioni   che   sono   abbastanza  auto  esplicative  da  non  richiedere  successivi  approfondimenti.         <files> <filename plugin="sugarcrmusersync">sugarcrmusersync.php</filename> <filename>SugarCRMUserSync/ICRMUserSyncClient.php</filename> <filename>SugarCRMUserSync/CRMUserSyncClientFactory.php</filename> <filename>SugarCRMUserSync/UserModel.php</filename> <filename>SugarCRMUserSync/SOAP_SugarCRMUserSyncClient.php</filename> </files>   Listing  2  Seconda  sezione  del  manifest  file  del  plugin.   In   questa   sezione   sono   invece   raggruppati   all’interno   dell’elemento   files,   tutti   i   file   che   costituiscono   il   plugin.   Da   notare   il   primo   elemento   del   gruppo   (filename),   ha   un   attributo   plugin   il   cui   valore   definisce   il   nome   del   plugin   (che   deve   essere   in   lowercase)   e   il   valore   dell’elemento   è   il   file   php   contenente   l’estensione   della   classe   JPlugin,   ovvero,   la   classe   plgUserSugarCRMUserSync   (vedi  Figura  6  Class  diagram  di  base  del  plugin.).         <param name="SoapEndPoint" type="text" size="50" default="http://www.example.it/soap.php?wsdl" label="SOAP End Point" description="The SugarCRM SOAP WSDL (Web Services Description Language) HTTP location (example: http://www.example.it/soap.php?wsdl)" /> <param name="SugarCRMEd" type="radio" default="0" label="Select SugarCRM Edition" description="Select the SugarCRM Edition"> <option value="0">Community Edition</option> <option value="1">Professional Edition</option> <option value="2">Enterprise Edition</option> </param> <param name="PortalUserAPI" type="text" size="20" default="" label="Portal User API" description="The SugarCRM Portal API User" /> <param name="PortalUserAPIPassword" type="password" size="20" default="" label="Portal User API Password" description="The SugarCRM Portal API User Password" /> <param name="SyncUserPassword" type="radio" default="0" label="Enable a Sync User Password" description="Enable a Sync User Password"> <option value="0">No</option> <option value="1">Yes</option> </param>   Listing  3  Terza  sezione  del  manifest  file  del  plugin.   In   quest’ultima   sezione   sono   invece   riportati   tutti   quei   parametri   di   configurazione  richiesti  da  plugin  (Musarra, 2010).     This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 11. Antonio  Musarra   11   J-­‐SugarCRM  UserSync  1.0   Technical  Guide   Rev.  1.0     In   Figura   8   è   mostrato   il   deployment   diagram   che   descrive   la   distribuzione   dei   componenti   software   rispetto   alle   risorse   disponibili.   Il   diagramma   è   abbastanza  esemplificativo,  sono  state  escluse  le  risorse  di  “Runtime”.         Figura  8  Deployment  Diagram  del  plugin  J-­‐SugarCRM  UserSync.     5. Integrazione  con  il  CRM   Il   processo   d’integrazione   tra   diversi   tipi   di   sistemi   informatici   avviene   attraverso   l’utilizzo   di   software   e   soluzioni   architetturali.   I   sistemi   informatici   oggetto  dell’integrazione  sono  due  e  appartengono  a  due  diverse  tipologie:     • Joomla3:  sistema  di  Content  Management  System  o  CMS   • SugarCRM4:  Customer  Relationship  Management  o  CRM       Entrambi  i  sistemi  sono  Open  Source  e  interamente  scritti  in  PHP5.  L’unico   componente   software   che   realizza   l’integrazione   tra   i   due   sistemi   è   il   plugin   J-­‐ SugarCRM  UserSync  che  “vive”  in  Joomla.  La  soluzione  architetturale  più  indicata   adottata   in   questo   “semplice”   processo   d’integrazione   è   basata   interamente   sull’utilizzo   dei   Web   Service   (o   servizi   web),   entrambi   i   sistemi   sono   Provider,   in                                                                                                                   3  La  versione  di  riferimento  è  la  1.5   4  La  versione  di  riferimento  è  la  6.1  edizione  community   5  PHP  (acronimo  ricorsivo  di  "PHP:  Hypertext  Preprocessor",  preprocessore  d’ipertesti)  è  un  linguaggio  di  scripting   interpretato,  con  licenza  open  source  e  libera  (ma  incompatibile  con  la  GPL),  originariamente  concepito  per  la   programmazione  Web  ovvero  la  realizzazione  di  pagine  web  dinamiche.   This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 12. Antonio  Musarra   12   J-­‐SugarCRM  UserSync  1.0   Technical  Guide   Rev.  1.0     altre  parole,  espongono  parte  o  tutte  le  funzionalità  come  Web  Service.  In  questo   scenario   d’integrazione   Joomla   assume   il   ruolo   di   consumer   mentre   SugarCRM   assume  il  ruolo  di  provider.  In  Figura  9  è  schematizzato  ad  alto  livello  lo  scenario   d’integrazione  tra  i  due  sistemi.      Service  Consumer      Service  Provider Portale  Utente     Sistema  Gestione  Clienti   (CMS  Joomla) (CRM  SugarCRM) Portal  User      Comunicazione  su  protocollo  HTTP Comunicazione  via  Servizi  Web  (Web  Service)   Figura  9  Macro  schema  d’integrazione  tra  Joomla  e  SugarCRM.     Ricapitolando  i  ruoli  dei  due  sistemi  sono:     • Il   sistema   di   CRM   ha   la   responsabilità   di   fornire   ai   fini   dell’integrazione   una  serie  di  Web  Service  che  espongono  le  funzionalità  richieste;   • Il  sistema  di  CMS  ha  la  responsabilità  di  agire  come  consumatore  dei  Web   Service   esposti   dal   sistema   di   CRM.   L’accesso   all’interfaccia   esposta   dal   CRM  è  guidato  dagli  eventi  in  precedenza  discussi  (vedi  2.1  Introduzione   a  Joomla  Plugin).     Il   sistema   SugarCRM   ha   un   set   di   API6  esposte   come   Web   Service   e   in   Tabella  2  sono  elencate  le  funzioni  utilizzate  dal  plugin  in  qualità  di  consumer.     Nome   Descrizione   Login   Esegue  il  login  dell’utente  su  SugarCRM  iniziando  una  nuova   sessione  utente.   Logout   Esegue  il  logout  dell’utente  su  SugarCRM  terminando  la   precedente  sessione.   GetEntryList   Recupera  una  lista  di  oggetti  SugarCRM   SetEntry   Crea  o  aggiorna  un  oggetto  SugarCRM   Tabella  2  API  SugarCRM  utilizzate  dal  plugin  J-­‐SugarCRM  UserSync.   Ogni  operazione  che  può  essere  di  creazione  o  aggiornamento  utenti  che  il   plugin  esegue  sul  CRM  è  preceduta  sempre  dall’operazione  di  login  e  terminata   con  l’operazione  di  logout.  L’utente  con  il  quale  è  eseguito  il  login  sul  CRM  è  di   tipo  amministrativo  e  definito  in  configurazione  (Musarra, 2010).   Per   maggiori   informazioni   riguardo   alle   API   di   SugarCRM   è   consigliabile   consultare  la  documentazione  ufficiale  (SugarCRM Inc., 2010).                                                                                                                     6  Le   Application   Programming   Interface   API   (Interfaccia   di   Programmazione   di   un'Applicazione),   sono   ogni   insieme   di   procedure  disponibili  al  programmatore,  di  solito  raggruppate  a  formare  un  set  di  strumenti  specifici  per  un  determinato   compito.  È  un  metodo  per  ottenere  un'astrazione,  di  solito  tra  l'hardware  e  il  programmatore,  o  tra  software  a  basso  ed   alto   livello.   Le   API   permettono   di   evitare   ai   programmatori   di   scrivere   tutte   le   funzioni   dal   nulla.   Le   API   stesse   sono   un'astrazione:  il  software  che  fornisce  una  certa  API  è  detto  che  implementa  le  API.   This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 13. Antonio  Musarra   13   J-­‐SugarCRM  UserSync  1.0   Technical  Guide   Rev.  1.0     In  Figura  10  è  mostrato  il  deployment  diagram  focalizzato  sui  componenti   software   che   realizzano   l’integrazione   tra   i   due   sistemi,   quest’ultimi   sono   rappresentati  sul  diagramma  dai   nodi   Joomla   e   SugarCRM.   La  relazione  tra  i  due   nodi  è  ancor  più  rafforzata  dallo  stereotipo  soap  che  indica  che  la  comunicazione   tra   i   due   sistemi   avviene   tramite   il   protocollo   SOAP   (su   canale   http),   così   come   anticipato  in  precedenza.       Figura  10  Deployment  Diagram  d’integrazione  Joomla  e  SugarCRM.     6. Client  SOAP   La   comunicazione   tra   i   due   sistemi   avviene   sfruttando   la   tecnologia   dei   Web   Service.   Joomla   è   il   sistema   che   ha   il   ruolo   di   Consumer   verso   i   servizi   esposti   da   SugarCRM,   il   plugin   per   questo   motivo   implementa   un   client   SOAP,   implementazione  demandata  al  modulo  soap  fornito  dall’engine  di  PHP  (The PHP Group, 2010).         This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike      
  • 14. Antonio  Musarra   14   J-­‐SugarCRM  UserSync  1.0   Technical  Guide   Rev.  1.0         Bibliography   Musarra,  A.  (2010,  December).  J-­‐SugarCRM  UserSync  1.0  -­‐  Installazione  e  Guida  Utente.  (A.   Musarra,  A  cura  di)  Tratto  da  J-­‐SugarCRMUserSync-­‐Installazione_GuidaUtente-­‐1.0.pdf   Wikipedia.  (2010,  November  2010).  Abstract  Factory.  Tratto  da  Wikipedia:   http://it.wikipedia.org/wiki/Abstract_factory   Wikipedia.  (2007,  February  14).  Observer  Pattern.  Tratto  da  Wikipedia:   http://it.wikipedia.org/wiki/Observer_pattern   Wikipedia.  (2010,  December  28).  Singleton  Pattern.  Tratto  da  Wikipedia:   http://en.wikipedia.org/wiki/Singleton_pattern   Wikipedia.  (2010,  March  2010).  Software  Framework.  Tratto  da  Wikipedia:   http://en.wikipedia.org/wiki/Software_framework   Joomla.  (2010,  May  18).  Framework  -­‐  Joomla!  Documentation.  Tratto  da  Joomla  Documentation:   http://docs.joomla.org/Framework   Joomla.  (2010,  November  10).  Joomla  Developers.  Tratto  da  Joomla  Documentation:   http://docs.joomla.org/Developers   Joomla.  (2010,  June  29).  Reference:User  Events  for  Plugin  System  -­‐  Joomla!  Documentation.  Tratto   da  Joomla!  Documentation:  http://docs.joomla.org/Reference:User_Events_for_Plugin_System   Joomla.  (2009,  January  14).  Reference:Contact  Events  for  Plugin  System  -­‐  Joomla!  Documentation.   Tratto  da  Joomla!  Documentation:   http://docs.joomla.org/Reference:Contact_Events_for_Plugin_System   Joomla.  (2009,  September  18).  Reference:Content  Events  for  Plugin  System  -­‐  Joomla!   Documentation.  Tratto  da  Joomla!  Documentation:   http://docs.joomla.org/Reference:Content_Events_for_Plugin_System   Joomla.  (2009,  January  30).  Reference:Editor  Events  for  Plugin  System  -­‐  Joomla!  Documentation.   Tratto  da  Joomla!  Documentation:   http://docs.joomla.org/Reference:Editor_Events_for_Plugin_System   Joomla.  (2011,  January  2).  Reference:System  Events  for  Plugin  System  -­‐  Joomla!  Documentation.   Tratto  da  Joomla!  Documentation:   http://docs.joomla.org/Reference:System_Events_for_Plugin_System   SugarCRM  Inc.  (2010).  Sugar  Community  Edition  Documentation  -­‐  API  Definition.  Tratto  da   SugarCRM  Open  Source  CRM:   http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdition/6.1/-­‐docs-­‐ Developer_Guides-­‐Sugar_Developer_Guide_6.1.0-­‐ Chapter%202%20Application%20Framework.html#9000303   SugarCRM  Inc.  (2010).  Sugar  Community  Edition  Documentation  |  SugarCRM  -­‐  Commercial  Open   Source  CRM.  Tratto  da  SugarCRM  -­‐  Open  Source  CRM:   http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdition/6.1/-­‐docs-­‐ Developer_Guides-­‐Sugar_Developer_Guide_6.1.0-­‐toc.html   Riehle,  D.  (2000).  Framework  Design:  A  Role  Modeling  Approach.  (S.  F.  Technology,  A  cura  di)   Tratto  da  Swiss  Federal  Institute  of  Technology:  http://www.riehle.org/computer-­‐ science/research/dissertation/diss-­‐a4.pdf   The  PHP  Group.  (2010,  December  2010).  PHP:  SOAP  Manual.  Tratto  da  PHP.net:   http://www.php.net/manual/en/book.soap.php       This  document  is  issued  with  license  Creative  Commons  Attribution  -­‐  Non  Commercial  -­‐  Share  Alike