{"id":1954,"date":"2013-03-15T00:20:56","date_gmt":"2013-03-14T22:20:56","guid":{"rendered":"http:\/\/musarra.wordpress.com\/?p=1954"},"modified":"2017-07-13T17:55:52","modified_gmt":"2017-07-13T15:55:52","slug":"alloy-ui-autocomplete-get-data-from-sugarcrm","status":"publish","type":"post","link":"https:\/\/www.dontesta.it\/en\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/","title":{"rendered":"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM"},"content":{"rendered":"<p class=\"qtranxs-available-languages-message qtranxs-available-languages-message-en\">Sorry, this entry is only available in <a href=\"https:\/\/www.dontesta.it\/it\/wp-json\/wp\/v2\/posts\/1954\" class=\"qtranxs-available-language-link qtranxs-available-language-link-it\" title=\"Italiano\">Italiano<\/a>.<\/p><p><\/p>\n<h2>1. Introduzione<\/h2>\n<p style=\"text-align: justify;\">Nel precedente articolo\u00a0<a title=\"AlloyUI AutoComplete Ajax Example\" href=\"http:\/\/www.dontesta.it\/blog\/blog-2\/cms\/liferay\/alloy-ui-autocomplete-ajax-example\/\" target=\"_blank\" rel=\"noopener\">AlloyUI AutoComplete Ajax Example<\/a>\u00a0abbiamo visto come le\u00a0specifiche <a title=\"Java Portlet Specification 2.0 (JSR 286)\" href=\"http:\/\/jcp.org\/en\/jsr\/detail?id=286\" target=\"_blank\" rel=\"noopener\">Java Portlet Specification 2.0 (JSR 286)<\/a>\u00a0con l'introduzione della <em>ResourceURL\u00a0<\/em>vengono incontro all'esigenza di dover accedere in modo semplice a risorse di \"qualunque tipo\", infatti, \u00e8 stata sfruttata questa\u00a0<em>nuova opportunit\u00e0<\/em> per accedere a risorse locali <a class=\"zem_slink\" title=\"Liferay\" href=\"http:\/\/www.liferay.com\" target=\"_blank\" rel=\"homepage noopener\">Liferay<\/a> poi mostrate sulla vista tramite il componente Alloy UI Autocomplete.<\/p>\n<p style=\"text-align: justify;\">L'esempio trattato nel precedente articolo \u00e8 stato in seguito esteso per soddisfare un caso d'integrazione tra Liferay e SugarCRM, quest'estensione (disponibile sul mio repository GitHub\u00a0<a title=\"AlloyUI AutoComplete Ajax Example\" href=\"https:\/\/github.com\/amusarra\/liferay-aui-autocomplete-ajax-example\" target=\"_blank\" rel=\"noopener\" class=\"broken_link\">AlloyUI Autocomplete Ajax Example<\/a>)\u00a0sar\u00e0 appunto oggetto di questo articolo.\u00a0Non scenderemo troppo in dettagli tecnici perch\u00e9 l'obiettivo preposto \u00e8 quello di far apprendere come con poco sforzo sia semplice e veloce realizzare un caso d'integrazione sfruttando la tecnologia dei servizi web.<\/p>\n<h2 style=\"text-align: justify;\">2. Caso d'integrazione<\/h2>\n<p style=\"text-align: justify;\">Il caso d'integrazione proposto \u00e8 abbastanza semplice e credo anche vicino alla realt\u00e0. E' possibile ipotizzare che all'interno di un modulo web sia presente una o pi\u00f9 combo da cui selezionare degli item e che questi item provengano da risorse remote, come per esempio da un sistema di <a class=\"zem_slink\" title=\"Customer relationship management\" href=\"http:\/\/en.wikipedia.org\/wiki\/Customer_relationship_management\" target=\"_blank\" rel=\"wikipedia noopener\">CRM<\/a>, <a class=\"zem_slink\" title=\"Enterprise resource planning\" href=\"http:\/\/en.wikipedia.org\/wiki\/Enterprise_resource_planning\" target=\"_blank\" rel=\"wikipedia noopener\">ERP<\/a>, etc... Bene, a mio avviso il mockup della <a class=\"zem_slink\" title=\"Portlet\" href=\"http:\/\/en.wikipedia.org\/wiki\/Portlet\" target=\"_blank\" rel=\"wikipedia noopener\">portlet<\/a> mostrata in Figura 1 dovrebbe rendere l'idea del caso d'integrazione proposto.<\/p>\n<div id=\"attachment_1959\" style=\"width: 561px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/1_-crm-liferay-portlet1.png\"><img aria-describedby=\"caption-attachment-1959\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1959 \" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/1_-crm-liferay-portlet1.png\" alt=\"CRM Liferay Portlet Example\" width=\"551\" height=\"231\" \/><\/a><p id=\"caption-attachment-1959\" class=\"wp-caption-text\">Figura 1. CRM Liferay Portlet Example<\/p><\/div>\n<p style=\"text-align: justify;\">Utilizzeremo Alloy UI Autocomplete per implementare la combo (Account name) visibile in Figura 1 e i cui dati (la lista degli account) saranno richiesti al sistema SugarCRM. Non sarebbe per niente male dare la possibilit\u00e0 all'utente di accedere al dettaglio dell'account appena selezionato, ma in che modo farlo? Direi che la via veloce e semplice sia l'apertura tramite link, di una pop up che mostri il dettaglio dell'account direttamente all'interno di SugarCRM (vedi Figura 2).<\/p>\n<div id=\"attachment_1962\" style=\"width: 561px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a1.png\"><img aria-describedby=\"caption-attachment-1962\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1962\" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a1.png\" alt=\"CRM Liferay Portlet con link al dettaglio Account\" width=\"551\" height=\"231\" \/><\/a><p id=\"caption-attachment-1962\" class=\"wp-caption-text\">Figura 2. CRM Liferay Portlet con link al dettaglio Account<\/p><\/div>\n<h2 style=\"text-align: justify;\">3. Requisiti per l'integrazione<\/h2>\n<p style=\"text-align: justify;\">Affich\u00e8 sia possibile raggiungere l'obiettivo preposto, occorre soddisfare una serie di requisiti\u00a0minimi che sono:<\/p>\n<ul>\n<li><span style=\"line-height: 12.997159004211px;\">Indirizzo (web) del sistema SugarCRM da cui si vogliono estrarre i dati;<\/span><\/li>\n<li>Il client, quindi Liferay deve essere abilitato per accedere ai servizi <a class=\"zem_slink\" title=\"Representational state transfer\" href=\"http:\/\/en.wikipedia.org\/wiki\/Representational_state_transfer\" target=\"_blank\" rel=\"wikipedia noopener\">REST<\/a> di SugarCRM (nel caso ci siano firewall in mezzo alle due applicazioni o altre regole di restrizione);<\/li>\n<li>Almeno un utente di Liferay deve essere un utente di SugarCRM;<\/li>\n<li>Liferay deve essere configurato in modo tale che la password dell'utente sia disponibile in chiaro.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Gli ultimi due punti sono giustificati dal fatto che la richiesta della lista degli account deve essere distinta per utente, ogni utente, deve vedere i soli account per i quali ha i permessi sul sistema di SugarCRM, questo si traduce con il fatto che la connessione ai servizi \u00e8 instaurata utilizzando le credenziali dell'utente che ha eseguito l'accesso a Liferay, \u00e8 importante quindi, che le password su entrambi i sistemi siano allineate (ipotizziamo un caso senza SSO).<\/p>\n<h2>4. Configurazione<\/h2>\n<p>La configurazione \u00e8 suddivisa in due parti:<\/p>\n<ul>\n<li><strong>Portlet<\/strong>: sul file di properties della portlet andr\u00e0 specificato l'indirizzo dell'istanza di SugarCRM a cui connettersi;<\/li>\n<li><strong>Portale<\/strong>: sul file di configurazione del portale Liferay dovr\u00e0 essere consentito la memorizzazione in sessione della password in chiaro dell'utente.<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true \" title=\"Source 1. Configurazione connessione servizi SugarCRM (file di properties portlet.properties)\">sugarcrm.<a class=\"zem_slink\" title=\"Uniform resource locator\" href=\"http:\/\/en.wikipedia.org\/wiki\/Uniform_resource_locator\" target=\"_blank\" rel=\"wikipedia noopener\">URL<\/a>=http:\/\/localhost:8888\/sugarcrm_dev_WebServices\r\nsugarcrm.ViewAccountRecord=${sugarcrm.URL}\/index.php?module=Accounts&amp;action=DetailView&amp;record={recordId}&amp;MSID={sessionId}\r\nsugarcrm.RestURL=${sugarcrm.URL}\/service\/v4\/rest.php?method={method}&amp;input_type={input_type}&amp;response_type={response_type}&amp;rest_data={rest_data}\r\n<\/pre>\n<p>Source 1. Configurazione connessione servizi SugarCRM (file di properties portlet.properties)<\/p>\n<p>In breve, le righe di configurazione indicate al Source 1 sono:<\/p>\n<ol>\n<li><span style=\"line-height: 12.997159004211px;\">URL dell'istanza SugarCRM;<\/span><\/li>\n<li>URL del link che visualizza il dettaglio dell'account\n<ol>\n<li>Il placeholder\u00a0<strong>recordId<\/strong>\u00a0sar\u00e0 sostituito dall'id dell'account di cui visualizzare il dettaglio<\/li>\n<li>Il placeholder <strong>sessionId<\/strong> sar\u00e0 sostituito dall'identificativo di sessione dell'utente<\/li>\n<\/ol>\n<\/li>\n<li>URL dei servizi REST di SugarCRM<\/li>\n<\/ol>\n<p>Il Source 2 mostra invece le righe che bisogna aggiungere alla configurazione del portale tramite il file di properties portal-ext.properties.<\/p>\n<pre class=\"lang:default decode:true \" title=\"Source 2. Configurazione della password in chiaro in sessione. \">##\r\n## Session\r\n##\r\n\r\n#\r\n# Explicitly exclude attributes that are shared from the portal to portlets.\r\n#\r\nsession.shared.attributes.excludes=\r\n\r\n# Set this to true to store the user's password in the session.\r\n#\r\nsession.store.password=true<\/pre>\n<p>Source 2. Configurazione della password in chiaro in sessione.<span style=\"font-size: 13px; line-height: 19px;\">\u00a0<\/span><\/p>\n<h2>5. Interrogazione dei servizi di SugarCRM<\/h2>\n<p style=\"text-align: justify;\">A differenza del primo articolo\u00a0<a title=\"Alloy UI AutoComplete Ajax\u00a0Example\" href=\"https:\/\/www.dontesta.it\/2012\/12\/18\/alloy-ui-autocomplete-ajax-example\/\" target=\"_blank\" rel=\"noopener\">Alloy UI AutoComplete Ajax Example<\/a>\u00a0dove i dati della combo provengono da un servizio locale di Liferay, in questo caso, i dati saranno richiesti a SugarCRM tramite l'interrogazione al\u00a0<em>Web Services<\/em>\u00a0(di tipo REST). Il flusso delle operazioni da implementare sul metodo <em>serveResource(...)<\/em>, dovrebbe essere il seguente:<\/p>\n<ul>\n<li><span style=\"line-height: 12.997159004211px;\">Login sul sistema SugarCRM;<\/span><\/li>\n<li>Richiesta della lista degli account sulla base del nome digitato all'interno della combo;<\/li>\n<li>Restituzione dei dati in formato JSON alla combo che li visualizzer\u00e0.<\/li>\n<\/ul>\n<p>Nel particolare, le due operazioni (ad alto livello) del servizio sono:<\/p>\n<ul>\n<li><strong><em>String login(String username, String password)<\/em><\/strong>:\u00a0la chiamata a questa <em>operation<\/em>\u00a0restituisce la\u00a0<em>sessionId<\/em>\u00a0associata all'utente. Il valore della <em>sessionId\u00a0<\/em>\u00e8 utilizzata come parametro d'input per il resto delle operation;<\/li>\n<li><strong><em>List getAccountsByeName(String sessionId, String keyword)<\/em><\/strong>: la chiamata a questa\u00a0<em>operation<\/em> restituisce una list di\u00a0<em>Account<\/em> sulla base della chiave di ricerca passata in input, la chiave di ricerca in questo caso fa riferimento al nome dell'account registrato su SugarCRM.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">L'oggetto\u00a0<em>Account<\/em> conterr\u00e0 i soli dati necessari a visualizzare l'informazione dell'account all'interno della combo e generare il link per la visualizzazione del dettaglio. Le informazioni disponibili sull'oggetto sono quindi:<\/p>\n<ul>\n<li><strong>id<\/strong>: Identificativo univoco dell'account (esempio:\u00a02411ad3-9fde-f38f-9ae7-4e1efb82e4cc)<\/li>\n<li><strong>name<\/strong>: Nome dell'account (esempio: Dontesta Corporation Ltd)<\/li>\n<li><strong>description<\/strong>: Descrizione dell'account (esempio: Societ\u00e0 di consulenza finanziaria)<\/li>\n<\/ul>\n<p>La lista di account ricevuti dal servizio sar\u00e0 poi passata in formato JSON al componente Autocomplete. Al Source 3 e Figura 3 sono mostrati due esempi di struttura JSON restituita al client.<\/p>\n<pre class=\"lang:default decode:true \" title=\"Source 3. Esempio di struttura dati JSON restituita al client.\">{\r\n    \"response\": [\r\n        {\r\n            \"sessionId\": \"97cb23e0868aa60497cfbe523bc0f800\",\r\n            \"description\": \"\",\r\n            \"name\": \"Calm Sailing Inc\",\r\n            \"type\": \"Customer\",\r\n            \"key\": \"45c25023-17c0-d399-6e0d-50b7d01d59b2\"\r\n        },\r\n        {\r\n            \"sessionId\": \"97cb23e0868aa60497cfbe523bc0f800\",\r\n            \"description\": \"\",\r\n            \"name\": \"Chandler Logistics Inc\",\r\n            \"type\": \"Customer\",\r\n            \"key\": \"efc37c4b-e7ff-f681-1168-50b7d0926541\"\r\n        },\r\n        {\r\n            \"sessionId\": \"97cb23e0868aa60497cfbe523bc0f800\",\r\n            \"description\": \"\",\r\n            \"name\": \"Constrata Trust LLC\",\r\n            \"type\": \"Customer\",\r\n            \"key\": \"88a869f2-98ba-c810-1b07-50b7d0fd784b\"\r\n        },\r\n        {\r\n            \"sessionId\": \"97cb23e0868aa60497cfbe523bc0f800\",\r\n            \"description\": \"\",\r\n            \"name\": \"Constrata Trust LLC\",\r\n            \"type\": \"Customer\",\r\n            \"key\": \"93b50490-12a1-39b2-b040-50b7d0312cce\"\r\n        }\r\n    ]\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Source 3. Esempio di struttura dati JSON restituita al client.<\/p>\n<div id=\"attachment_1906\" style=\"width: 561px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_511.png\"><img aria-describedby=\"caption-attachment-1906\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1906\" title=\"Struttura JSON della lista degli account\" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_511.png\" alt=\"Struttura JSON della lista degli account\" width=\"551\" height=\"160\" \/><\/a><p id=\"caption-attachment-1906\" class=\"wp-caption-text\">Figura 3. Struttura JSON della lista degli account<\/p><\/div>\n<h2>6. Visualizzazione della lista degli Account<\/h2>\n<p style=\"text-align: justify;\">Rispetto al precedente esempio non cambia nulla a parte l'adeguamento dell'informazione circa la struttura del JSON che ricever\u00e0 il componente di Autocomplete. La generazione del link di dettaglio all'account \u00e8 eseguita a fronte dell'evento <em>itemSelect<\/em> del componente che visualizza i dati. Le Figure a seguire mostrano Alloy UI Autocomplete all'opera.<\/p>\n<div id=\"attachment_1903\" style=\"width: 523px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_211.png\"><img aria-describedby=\"caption-attachment-1903\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1903\" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_211.png\" alt=\"La lista dei primi dieci account\" width=\"513\" height=\"298\" \/><\/a><p id=\"caption-attachment-1903\" class=\"wp-caption-text\">Figura 4. La lista dei primi dieci account<\/p><\/div>\n<p style=\"text-align: justify;\">Al click sulla freccia sono mostrati i primi dieci account, mentre digitando le iniziali del nome dell'account, saranno mostrati solo quelli che soddisfano la query (vedi Figura 5). Il Source 4 mostra (riga 4) l'impostazione della\u00a0<em>where condition<\/em>\u00a0sull'attributo account name.<\/p>\n<pre class=\"lang:java decode:true \" title=\"Source 4. Impostazione della query \" like=\"\" sull=\"\" account=\"\" name=\"\">GetEntryListRequest getEntryList = new GetEntryListRequest();\r\ngetEntryList.setSession(sessionId);\r\ngetEntryList.setModule_name(\"Accounts\");\r\ngetEntryList.setQuery(\"accounts.name like '\" + keyword + \"'\");\r\ngetEntryList.setOrder_by(\"accounts.name asc\");\r\n<\/pre>\n<p>Source 4. Impostazione della query \"like\" sull'account name.<\/p>\n<div id=\"attachment_1904\" style=\"width: 521px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_311.png\"><img aria-describedby=\"caption-attachment-1904\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1904\" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_311.png\" alt=\"Lista degli account il cui nome inizia con C\" width=\"511\" height=\"182\" \/><\/a><p id=\"caption-attachment-1904\" class=\"wp-caption-text\">Figura 5. Lista degli account il cui nome inizia con C<\/p><\/div>\n<div id=\"attachment_1905\" style=\"width: 531px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_411.png\"><img aria-describedby=\"caption-attachment-1905\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1905\" title=\"Figura 6. Link visualizzazione dettaglio account\" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_411.png\" alt=\"Figura 6. Link visualizzazione dettaglio account\" width=\"521\" height=\"143\" \/><\/a><p id=\"caption-attachment-1905\" class=\"wp-caption-text\">Figura 6. Link visualizzazione dettaglio account<\/p><\/div>\n<p style=\"text-align: justify;\">La selezione di uno degli account dalla lista provoca l'aggiunta di un link che consente l'apertura del dettaglio dell'account.<\/p>\n<h2>7. Visualizzazione del dettaglio su SugarCRM<\/h2>\n<p style=\"text-align: justify;\">L'evento\u00a0<em>itemSelect<\/em> genera i link per la visualizzazione del dettaglio account. Cliccando sul link si aprir\u00e0 la scheda di dettaglio dell'account all'interno di una pop up. Al Source 5 \u00e8 mostrato il link generato mentre in Figura 8 \u00e8 visibile il pop up con la scheda di dettaglio.<\/p>\n<pre class=\"lang:xhtml decode:true\" title=\"Source 5. Link al dettaglio dell'account.\">&lt;a class=&amp;quot;viewAccountRecord&amp;quot; title=&amp;quot;Click for open the Account detail (direct to SugarCRM)&amp;quot; href=&amp;quot;http:\/\/localhost:8888\/sugarcrm_dev_WebServices\/index.php?module=Accounts&amp;amp;amp;action=DetailView&amp;amp;amp;record=9ff1130a-a7e0-3176-d10f-50b7d00a51ce&amp;amp;amp;MSID=989f7aaf24ee54a2298df910f5bdf751&amp;quot; target=&amp;quot;_blank&amp;quot;&gt;Aim Capital Inc&lt;\/a&gt;<\/pre>\n<p>Source 5. Link al dettaglio dell'account.<\/p>\n<div id=\"attachment_1907\" style=\"width: 561px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_611.png\"><img aria-describedby=\"caption-attachment-1907\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1907\" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_611.png\" alt=\"Figura 7. Dettaglio del link generato per la visualizzazione dettaglio account\" width=\"551\" height=\"176\" \/><\/a><p id=\"caption-attachment-1907\" class=\"wp-caption-text\">Figura 7. Dettaglio del link generato per la visualizzazione dettaglio account<\/p><\/div>\n<div id=\"attachment_1971\" style=\"width: 561px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_71.png\"><img aria-describedby=\"caption-attachment-1971\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-1971\" src=\"http:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/auiautocompletesugarcrm_71.png\" alt=\"Figura 8. Scheda di dettaglio dell'account\" width=\"551\" height=\"414\" \/><\/a><p id=\"caption-attachment-1971\" class=\"wp-caption-text\">Figura 8. Scheda di dettaglio dell'account<\/p><\/div>\n<h2>8. Conclusioni<\/h2>\n<p>Con questo articolo penso di aver concluso il ciclo su AlloyUI Autocomplete, che ho sfruttato come spunto per dimostrare come sia semplice accedere a dati (dinamici) provenienti da sorgenti diverse.<\/p>","protected":false},"excerpt":{"rendered":"<p>Sorry, this entry is only available in Italiano. 1. Introduzione Nel precedente articolo\u00a0AlloyUI AutoComplete Ajax Example\u00a0abbiamo visto come le\u00a0specifiche Java Portlet Specification 2.0 (JSR 286)\u00a0con l&#8217;introduzione della ResourceURL\u00a0vengono incontro all&#8217;esigenza di dover accedere in&#46;&#46;&#46;<\/p>\n","protected":false},"author":3,"featured_media":3275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[571,8,15,22,29,39],"tags":[72,92,133,210,637,328,643,374,649],"class_list":["post-1954","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-content-management-system-cms","category-crm","category-liferay","category-programming","category-sugarcrm","category-web-services","tag-alloy-ui","tag-autocomplete","tag-customer-relationship-management","tag-json","tag-liferay","tag-restful","tag-sugarcrm","tag-sugarcrm-rest-api","tag-web-services"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>(Italiano) AlloyUI Autocomplete: Get data from SugarCRM<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM\" \/>\n<meta property=\"og:description\" content=\"Sorry, this entry is only available in Italiano. 1. Introduzione Nel precedente articolo\u00a0AlloyUI AutoComplete Ajax Example\u00a0abbiamo visto come le\u00a0specifiche Java Portlet Specification 2.0 (JSR 286)\u00a0con l&#039;introduzione della ResourceURL\u00a0vengono incontro all&#039;esigenza di dover accedere in&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/\" \/>\n<meta property=\"og:site_name\" content=\"Antonio Musarra&#039;s Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/antoniomusarrablog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/antoniomusarrablog\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-14T22:20:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-07-13T15:55:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png\" \/>\n\t<meta property=\"og:image:width\" content=\"850\" \/>\n\t<meta property=\"og:image:height\" content=\"357\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonio Musarra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@antonio_musarra\" \/>\n<meta name=\"twitter:site\" content=\"@antonio_musarra\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonio Musarra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/\"},\"author\":{\"name\":\"Antonio Musarra\",\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\"},\"headline\":\"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM\",\"datePublished\":\"2013-03-14T22:20:56+00:00\",\"dateModified\":\"2017-07-13T15:55:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/\"},\"wordCount\":1204,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\"},\"image\":{\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png\",\"keywords\":[\"Alloy UI\",\"Autocomplete\",\"Customer relationship management\",\"JSON\",\"Liferay\",\"RESTful\",\"SugarCRM\",\"SugarCRM REST API\",\"Web Services\"],\"articleSection\":[\"Content Management System (CMS)\",\"CRM\",\"Liferay\",\"Programming\",\"SugarCRM\",\"Web Services\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/\",\"url\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/\",\"name\":\"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM\",\"isPartOf\":{\"@id\":\"https:\/\/www.dontesta.it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png\",\"datePublished\":\"2013-03-14T22:20:56+00:00\",\"dateModified\":\"2017-07-13T15:55:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage\",\"url\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png\",\"contentUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png\",\"width\":850,\"height\":357,\"caption\":\"Alloy UI Autocomplete: Get data from SugarCRM\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.dontesta.it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AlloyUI Autocomplete: Get data from SugarCRM\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dontesta.it\/#website\",\"url\":\"https:\/\/www.dontesta.it\/\",\"name\":\"Antonio Musarra&#039;s Blog\",\"description\":\"The ideal solution for a problem\",\"publisher\":{\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dontesta.it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24\",\"name\":\"Antonio Musarra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png\",\"contentUrl\":\"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png\",\"width\":512,\"height\":512,\"caption\":\"Antonio Musarra\"},\"logo\":{\"@id\":\"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/\"},\"description\":\"I began my journey into the world of computing from an Olivetti M24 PC (http:\/\/it.wikipedia.org\/wiki\/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until \u2026 Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.\",\"sameAs\":[\"https:\/\/www.dontesta.it\",\"https:\/\/www.facebook.com\/antoniomusarrablog\",\"https:\/\/www.linkedin.com\/in\/amusarra\/\",\"https:\/\/x.com\/antonio_musarra\",\"https:\/\/www.youtube.com\/channel\/UC5D3_EtVPbZYUhrUcEK_THA\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/","og_locale":"en_US","og_type":"article","og_title":"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM","og_description":"Sorry, this entry is only available in Italiano. 1. Introduzione Nel precedente articolo\u00a0AlloyUI AutoComplete Ajax Example\u00a0abbiamo visto come le\u00a0specifiche Java Portlet Specification 2.0 (JSR 286)\u00a0con l'introduzione della ResourceURL\u00a0vengono incontro all'esigenza di dover accedere in&#46;&#46;&#46;","og_url":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/","og_site_name":"Antonio Musarra&#039;s Blog","article_publisher":"https:\/\/www.facebook.com\/antoniomusarrablog","article_author":"https:\/\/www.facebook.com\/antoniomusarrablog","article_published_time":"2013-03-14T22:20:56+00:00","article_modified_time":"2017-07-13T15:55:52+00:00","og_image":[{"width":850,"height":357,"url":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png","type":"image\/png"}],"author":"Antonio Musarra","twitter_card":"summary_large_image","twitter_creator":"@antonio_musarra","twitter_site":"@antonio_musarra","twitter_misc":{"Written by":"Antonio Musarra","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#article","isPartOf":{"@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/"},"author":{"name":"Antonio Musarra","@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24"},"headline":"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM","datePublished":"2013-03-14T22:20:56+00:00","dateModified":"2017-07-13T15:55:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/"},"wordCount":1204,"commentCount":0,"publisher":{"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24"},"image":{"@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png","keywords":["Alloy UI","Autocomplete","Customer relationship management","JSON","Liferay","RESTful","SugarCRM","SugarCRM REST API","Web Services"],"articleSection":["Content Management System (CMS)","CRM","Liferay","Programming","SugarCRM","Web Services"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/","url":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/","name":"(Italiano) AlloyUI Autocomplete: Get data from SugarCRM","isPartOf":{"@id":"https:\/\/www.dontesta.it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage"},"image":{"@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png","datePublished":"2013-03-14T22:20:56+00:00","dateModified":"2017-07-13T15:55:52+00:00","breadcrumb":{"@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#primaryimage","url":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png","contentUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2015\/03\/2_-crm-liferay-portlet-a.png","width":850,"height":357,"caption":"Alloy UI Autocomplete: Get data from SugarCRM"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dontesta.it\/2013\/03\/15\/alloy-ui-autocomplete-get-data-from-sugarcrm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dontesta.it\/"},{"@type":"ListItem","position":2,"name":"AlloyUI Autocomplete: Get data from SugarCRM"}]},{"@type":"WebSite","@id":"https:\/\/www.dontesta.it\/#website","url":"https:\/\/www.dontesta.it\/","name":"Antonio Musarra&#039;s Blog","description":"The ideal solution for a problem","publisher":{"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dontesta.it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/0c69ed36230e1477875d6171b48b9b24","name":"Antonio Musarra","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/","url":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png","contentUrl":"https:\/\/www.dontesta.it\/wp-content\/uploads\/2024\/06\/cropped-foto_profilo.png","width":512,"height":512,"caption":"Antonio Musarra"},"logo":{"@id":"https:\/\/www.dontesta.it\/#\/schema\/person\/image\/"},"description":"I began my journey into the world of computing from an Olivetti M24 PC (http:\/\/it.wikipedia.org\/wiki\/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until \u2026 Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.","sameAs":["https:\/\/www.dontesta.it","https:\/\/www.facebook.com\/antoniomusarrablog","https:\/\/www.linkedin.com\/in\/amusarra\/","https:\/\/x.com\/antonio_musarra","https:\/\/www.youtube.com\/channel\/UC5D3_EtVPbZYUhrUcEK_THA\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/posts\/1954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/comments?post=1954"}],"version-history":[{"count":0,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/posts\/1954\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/media\/3275"}],"wp:attachment":[{"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/media?parent=1954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/categories?post=1954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dontesta.it\/en\/wp-json\/wp\/v2\/tags?post=1954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}