Personal tools
Sviluppare applicazioni Plone direttamente da interfaccia web con Plomino

Fusione Plone + Domino = Plomino

Nov 16, 2012

Sviluppare applicazioni Plone direttamente da interfaccia web con Plomino

Breve test di valutazione su Plomino, un pacchetto Plone per la creazione di applicazioni web in stile Lotus ® Notes direttamente da intefaccia grafica WYSIWYG

E' pratica comune fare test su estensione e prodotti Plone a scopo conoscitivo o per studio. Generalmente si esplorano pacchetti alla ricerca di soluzioni applicabili al lavoro di tutti i giorni, ma non di rado capita di soddisfare semplici curiosità.

logo_plominoRecentemente, grazie alla mia doppia partecipazione nei team Lotus ® Notes / Plone, mi è stato proposto di fare alcuni test su Plomino.

 

Non ho mai avuto l'occasione di usare questo prodotto prima d'ora, nonostante sia disponibile già dalla versione Plone 2.1; il primo passo, quindi, è stato ricercare in rete di documentazione - compito facile, visto che è disponibile un sito web dedicato, ricco di esempi e how-to.

Installazione

L'installazione è piuttosto semplice, se si ha dimestichezza con i buildout; è già tutto pronto, bastano pochi comandi:
(potete trovare i sorgenti qui)

io@dev:~$ git clone https://github.com/plomino/Plomino my_app
io@dev:~$ cd my_app
io@dev:~$ virtualenv .
io@dev:~$ . bin/activate
io@dev:~$ ./bin/python bootstrap.py
io@dev:~$ ./bin/buildout
io@dev:~$ ./bin/instance fg 

Fatto!

Come dice Eric Bréhault (project owner), Plomino si propone come “web application builder”, e nella semplicità ha il suo punto di forza.
Non a caso, in alcune slide proposte da Eric, viene fatto riferimento alla lenta curva di apprendimento di Plone e quindi alle difficoltà incontrate dai programmatori meno esperti, per mettere in risalto le doti di Plomino.

A questo scopo il team di sviluppo si è concentrato nel fornire semplici funzioni per la creazione di applicazioni web direttamente da interfaccia grafica, realizzate partendo da concetti facili presi in prestito dal noto e glorioso Lotus Notes ®, rendendo Plomino un prodotto che offre l'opportunità di cimentarsi nella creazione di applicazioni relativamente complesse anche ai meno esperti.

Ricca la "dotazione di serie", Plomino di base implementa:

  • Form di inserimento direttamente realizzabili in WYSIWYG, comportamenti hide-when, subform, validazione campi personalizzabile
    (In Plone potrebbe essere paragonato a un content-type dinamico)
  • Tool di generazione chart e mappe
  • Viste indicizzate e categorizzate
    (Le viste Lotus corrispondo alle collezioni in Plone, sono praticamente query su database in base al tipo di documento. Una particolarità delle viste Lotus consiste nella possibiltà di raggruppare i risultati per categorie visualizzabili in una vista in sezioni espandibili)
  • ACL/ruoli
  • Azioni.
    (Sono molto simili alle action in Plone quindi associabili a pulsanti o link)
  • Form di ricerca
    (Ricerca personalizzabile)
  • Replica server-to server
    (Permette di trasferire contenuti e quindi replicare i dati da server a server su database differenti)
  • Agenti schedulati
    (Programmi che posso essere lanciati a comando o programmati per essere eseguiti in stile cron)
  • Tool di migrazione automatica da Lotus Domino (plomino.dominoimport).

"Solid as Zope, clean as Plone, easier than Django. Plomino"

Un'applicazione "tipo" realizzabile in Plomino corrisponde a grandi linee a un'applicazione Lotus ® Notes client side stile 6.5 (quindi prima dell'introduzione delle Xpages), composta da alcuni form di inserimento e varie viste per raggruppamento e/o filtro dei documenti. Il vantaggio offerto è dato dalla semplicità di realizzazione, interamente da web e con pochi click.

Approfondendo alcuni aspetti tecnici, posso dire che ho trovato molto semplice lavorare con le formulas, perché i metodi messi a disposizione nelle classi rispecchiano molto i metodi noti nell'ambiente di casa IBM, come per esempio:

  • createDocument(self)
    Returns a new empty document
  • deleteDocuments(self, ids=None, massive=True)
    Batch delete documents from database. If massive is True, the onDelete formula and index updating are not performed
  • getAllDocuments(self)
    Returns catalog brains for all the PlominoDocument objects stored in the database
  • getCurrentUserRights(self)
    Returns the current user’s access rights
  • getDocument(self, docid)
    Returns the PlominoDocument object corresponding to the identifier, or none
  • getForm(self, formname)
    Returns the PlominoForm object corresponding to the identifier
  • getUserRoles(self)
    Returns all the roles declared in the database
  • getViews(self)
    Returns all the PlominoView objects stored in the database
  • isCurrentUserAuthor(self, doc)
    Returns True if the current user is author of the given document or has the PlominoAuthor right
  • refreshDB(self)
    ...

L'unico linguaggio per interagire con il database in Plomino è Python, diversamente da Lotus che invece ha a sua disposizione LotusScript, Javascript, Java e Formulas, ma onestamente a mio avviso quest'ultimo approccio tende a confondere più che facilitare (+1 per Plomino).

Comoda la possibilità di importare ed esportare le applicazione via XML; gli esempi pubblicati sul sito sono installabili direttamente da interfaccia web.
Non mi piace, invece, l'implementazione del comportamento hide-when, troppo articolata; risulta più pratica nel client di sviluppo Lotus ® Notes.

Una cosa che mi ha fatto sorridere è la possibilità di fare quello che tecnicamente corrisponde a una @dblookup in Lotus (in pratica una query su database), anche nelle colonne di visualizzazione all'interno di una vista, ahimè uno dei limiti di Lotus mai superato in 20 anni...

Per iniziare, consiglio la visione di questo semplice tutorial online:

Conlusioni

In conclusione il mio giudizio è positivo; in genere non amo l'approccio WYSIWYG, però le circostanze assumono un ruolo importante: molto dipende, infatti, dal tipo di applicazione che si vuole sviluppare.
Forse Plomino è più adatto a chi non ha modo di approfondire Plone o per chi è, semplicemente, alle prime armi.

Filed under: , , , ,
comments powered by Disqus