Simplify your Life with Liferay
Ivano Carrara - Note e considerazioni durante la mia attività di Liferay Solutions Architect

venerdì 20 giugno 2014

My technical review of the book "Activiti 5.x Business Process Management Beginner's Guide"

Some time ago Packt Publishing has submitted to me the technical review of the book "Activiti Business Process Management 5.x Beginner's Guide."

The link to the book is: http://bit.ly/1kna12U

Now the book is on sale and I recommend it to anyone looking to start learning the basics of Business Process Management and implement them quickly using the open source framework Activiti BPM Platform (http://activiti.org)

domenica 4 novembre 2012

Simplify your life with Liferay: How Liferay Portal assists IBM i to send SMS

Liferay Portal è una potente piattaforma ricca di strumenti di sviluppo, che rendono agevole creare nuove applicazioni in ambiente Enterprise, anche molto complesse e integrate con il Sistema Informativo presente in Azienda.

IBM i è il nome attuale della piattaforma midrange di IBM nata con il nome di AS/400, e quindi passata per le denominazioni di iSeries e System i. E' forse la piu' potente e versatile piattaforma al mondo per le applicazioni "business".

E' in mezzo a questi due sistemi che entra in gioco la Integration Platform for Liferay, un prodotto commerciale in grado di agevolare lo sviluppo, ed in alcuni casi offrire "out-of-the-box", idonei strumenti di integrazione tra la piattaforma IBM i e Liferay Portal.

Un egregio esempio di tale integrazione è fornito dall'allestimento di un servizio di invio automatico di SMS che qualche tempo fa ho progettato per la Associazione Artigiani della Provincia di Brescia 

L'esigenza è quella di inviare SMS ai propri Utenti, per avvisare dell'avvenuto inoltro al Sistema Bancario dei moduli F24, in occasione dell'addebito dei Tributi dovuti allo Stato.

In sostanza, a seguito della produzione sul sistema centrale (IBM i) dell'emissione degli F24 a carico di un certo soggetto (Persona fisica o Società), il Portale deve inviare un SMS sul telefono cellulare della persona responsabile del pagamento, sia essa la stessa persona fisica ovvero il Legale Rappresentante della Società che deve provvedere al pagamento.

Descrizione del Progetto


Due sono i punti di criticità:

1) Il corretto abbinamento tra le "persone fisiche" presenti nel Portale come Utenti, e la Azienda che rappresentano all'interno del Sistema Informativo basato sull'IBM i.

2) La necessità di trasformare in messaggi facilmente comprensibili agli Utenti che ricevono gli SMS, i dati prodotti dall'IBM i che sono:

- il Codice della Ditta
- la Data di scadenza
- l'importo da pagare

Ad esempio, a fronte del seguente dato:

AVIT001 | 2.335,19 | 16.11.2012

Deve essere prodotto il seguente testo SMS:

"Signor VITALE ROSSI, inviamo in banca un F24 di Eur. 2.335,19 con scadenza 16.11.2012"

Nell'immagine seguente uno schema generale dello scenario applicativo:



Elementi impiegati della IPL – Integration Platform for Liferay:


IPL Base: Tramite Data Services forniti da WSO2 Data Services Server provvede ad estrarre i dati anagrafici delle Aziende presenti sull IBM i e a creare o aggiornare i corrispondenti Utenti nel Portale


IPL Comm: Provvede a collegarsi alle IBM Data Queues e a leggere i dati variabili da inserire nel testo degli SMS (Codice della Ditta, Data di scadenza, Importo da pagare) - ad invio avvenuto provvede a restituire all'IBM i l'esito dell'invio del messaggio SMS


IPL Comm: Provvede a trasformare i dati ricevuti dall'IBM i, a scegliere il testo del messaggio più opportuno e ad eseguire il "merge" dei contenuti. Quindi inserisce il messaggio in una Coda di invio SMS, consentendo il monitoraggio del messaggio stesso durante il suo ciclo di vita. Consente anche all'Amministratore del Portale di ripetere l'invio in caso di necessità.





Il modulo IPL Comm della IntegrationPlatform for Liferay fornisce anche completa visibilità sull'esito dell'invio dell'SMS sul telefono dell'Utente finale – il trasporto è assicurato dalla piattaforma Clickatell Bulk SMS Gateway


lunedì 24 settembre 2012

Simplify your life with Liferay: To manage the database use Liferay not the applicaton server

Con Liferay Portal, è possibile scegliere tra utilizzare un data source gestito direttamente da Liferay Portal oppure un data source gestito dall'application server sul quale è installato Liferay Portal.

In una tipica configurazione di distribuzione di Liferay Portal, anche eventualmente in bundle con qualsiasi application server, questa include per default un datasource gestito direttamente da Liferay Portal.

Liferay consiglia sempre di usare questa seconda configurazione di datasource.

Le note seguenti descrivono come configurare l'accesso al database della piattaforma Liferay Portal. Vengono descritte entrambe le possibilità: utilizzare un data source gestito direttamente da Liferay Portal oppure un data source gestito dall'application server sul quale è installato Liferay Portal.

Utilizzo del connection pool fornito dall'application server

Per utilizzare il connection pool fornito dall'application server, è necessario crearne uno che punti al database scelto.

Nel seguito denomineremo questo connection pool come “LiferayDS”.

Per fare in modo che Liferay usi questo connection pool, è stata aggiunta la seguente direttiva al file “portal-ext.properties”:

jdbc.default.jndi.name=LiferayDS

Il file di configurazione che definisce il connection pool nell'application server (“liferay-ds.xml”) deve essere configurato come segue:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>LiferayDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/lportal?useUnicode=true&amp;characterEncoding=UTF-8&amp;useFastDateParsing=false</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>password</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
<min-pool-size>5</min-pool-size>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

Utilizzo del connection pool gestito da Liferay Portal

Per utilizzare il connection pool gestito direttamente da Liferay Portal, che è il metodo consigliato, agire esclusivamente sugli elementi di configurazione del file “portal-ext.properties”.

Escludere l'elemento jdbc.default.jndi.name, commentandolo opportunamente:

#jdbc.default.jndi.name=LiferayDS

Così facendo, il portale creerà il data source JDBC basandosi sulle proprietà del file “portal-ext.properties” prefissate con "jdbc.default.".

Ad esempio, queste saranno:

jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
 
jdbc.default.username=root
jdbc.default.password=password


Per quanto riguarda la gestione dei pool di connessione, Liferay Portal può utilizzare tre fornitori: C3PO, DBCP, Primrose.

Nel seguito verrà utilizzato il primo.

Aggiungere quindi le seguenti proprietà nel file “portal-ext.properties”:

jdbc.default.liferay.pool.provider=c3po
jdbc.default.acquireIncrement=5
jdbc.default.connectionCustomizerClassName=com.liferay.portal.dao.jdbc.pool.c3p0.PortalConnectionCustomizer


jdbc.default.idleConnectionTestPeriod=60
jdbc.default.maxIdleTime=3600
jdbc.default.maxPoolSize=100
jdbc.default.minPoolSize=10
jdbc.default.numHelperThreads=3


Da notare che la seguente proprietà dovrebbe essere attentamente valutata in base ad una accurata analisi dell'utilizzo in produzione del datasource:

jdbc.default.maxPoolSize=100

venerdì 17 agosto 2012

Stop wasting money on application servers (expecially to deploy Liferay Portal)

Liferay Portal è sviluppato utilizzando una strategia SOA aperta, che lo ha reso la scelta di riferimento per aziende di tutto il mondo e di tutte le dimensioni nella realizzazione di progetti di Enterprise Integration, e non solo di Web Content Management.

Alcuni mesi fa ho partecipato ad un paio di progetti – per entrambi si trattava di commercio elettronico e la piattaforma era costituita sostanzialmente da tre elementi: Liferay Portal installato su JBoss Application Server, il prodotto Hybris per la parte di eCommerce e JBoss ESB per le comunicazioni tra l'ambiente Liferay e Hybris (gli ultimi due non rilevanti per quanto concerne queste note).

Scrivo queste note, indirizzate a chi si accinge ad impiegare costosi e complessi J2EE Application Servers, che però non sono richiesti per il deploy di Liferay Portal.

Nei due progetti che ho citato, il deploy di Liferay Portal è stato eseguito impiegando, quale application server, il prodotto JBoss Enterprise Application Platform 5.1. In particolare, nell'ambiente di produzione, erano presenti otto istanze del suddetto application server: sei per la piattaforma utilizzata dal primo store e due per la piattaforma utilizzata dall'altro store.

Analizzando però il codice dell'applicazione sviluppata sotto forma di portlets installate su Liferay, e consultando sia i progettisti che i programmatori del sistema, risultò che non fossero stati utilizzati componenti EJB.

Al tempo stesso, è da considerare che Liferay Portal non ha bisogno necessariamente di uno stack
application server/J6EE per poter funzionare, ed offre comunque tutte le sue funzionalità attraverso il deploy su un servlet container, come ad esempio Tomcat. L'indipendenza di Liferay Portal dall'uso di un application server vale anche per l'accesso al database – per questo punto particolare, rimando ad un prossimo articolo dal titolo “Liferay - Metodo di accesso al database”.

Non c'era motivo quindi per utilizzare JBoss Enterprise Application Platform per il deploy di Liferay Portal, introducendo di fatto una notevole complessità e pesantezza dell'ambiente di produzione, senza apparentemente alcun vantaggio. Sostanzialmente, gli otto application server jBoss AS, per di più con licenza Enterprise onerosa, nel caso esaminato non forniscono alcuna funzione necessaria a Liferay Portal per i quali sono stati impiegati.

E' questo un caso eclattante di quante risorse, non solo economiche, potevano essere risparmiate in un caso così tipico di allestimento di una piattaforma di eCommerce basata su Liferay Portal.

A supporto di quanto sopra, e per chi fosse interessato ad approfondire l'argomento, cito un interessante articolo di Mike Gualtieri del 15 luglio 2011 dal titolo “Stop Wasting Money On WebLogic, WebSphere, And JBoss Application Servers”.

Di seguito l'introduzione:

“Use Apache Tomcat. It is free. I don’t understand why firms spend millions of dollars on Java application servers like Oracle Weblogic or IBM WebSphere Application Server. I get why firms spend money on Red Hat JBoss -- they want to spend less on application servers. But, why spend anything at all? Apache Tomcat will satisfy the deployment requirements of most Java web applications.”

L'intero articolo, del quale consiglio vivamente la lettura, può essere letto su questo blog:

L'autore è Mike Gualtieri, Principal Analyst per Forrester Research, Inc.