OpenNTF project update: LotusScript Gold Collection 1.2 (Managed by Andre Guirard)

LC LSX Andre Guirard LotusScript Domino Designer Developer Tips Enterprise Integration

  • 2 commenti
Il 21 aprile Andre Guirard ci ha sorpreso nuovamente, su OpenNTF.org, arricchendo di ulteriori componenti la sua "collezione dorata" di strumenti LotusScript.

Facciamo una veloce carrellata sul contenuto del nuovo rilascio. Consiglio un'occhiata nella pancia del codice anche a chi non ne è interessato direttamente, per contemplare la qualità della scrittura, la leggibilità e la chiarezza dello stile di Andre Guirard. Tanto di cappello.

Chi è Andre Guirard


Per una veloce biografia, vedere questo link http://home.comcast.net/~aguirard/

Dice di sé "In real life, I'm a techie guy who writes lots of non-fiction and speaks at conferences".

Attualmente cura il blog "Best Practice Makes Perfect" su Lotus Developer Works e fa mille altre cose. Ha scritto tanto su The View, ha fornito in modo impeccabile molte delle risposte risolutive sui forum Lotus, con particolare riferimento alle sezioni Enterprise Integration.

Pagina del progetto

http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/LotusScript%20Gold%20Collection

Tutto il materiale è sotto licenza Apache 2.0.

Non si tratta di un prodotto finito, diciamo che è una serie di spunti, in forma di agenti e librerie di script, di livello tecnico estremamente specialistico, scritti con grande profusione di commenti, a testimoniare l'orientamento e la propensione dello scrittore alla divulgazione. Vi si trovano tecniche di gestione che utilizzano oggetti come NotesStream, uso esteso di classi, gestione di immagini, uso ottimizzato delle classi LCLSX.
  • Replicate Pirates: Proprio a proposito di LC LSX, Andre Guirard riprende un suo esempio presente in Sandbox dall'inizio degli anni 2000, in cui fornisce un esempio di come simulare una attività di sincronia tra due sorgenti dati, ottimizzando fortemente il codice per non "maneggiare" mai il dato da LotusScript. Non c'è una sola riga di ricerca di chiave, nessun uso di confronti di tipi o di valori, né di ricerche di chiavi su viste. LotusScript "non sa" che dati sta gestendo. L'approccio seguito consente di gestire anche le cancellazioni (opzionale), bestia nera delle sincronie dati, pur evitando di cancellare tutti i record prima dell'elaborazione. Come fa? Si tratta di un esempio a dir poco splendido dell'uso approfondito delle tecniche offerte dalle classi LC LSX, nessuna magia, ma una conoscenza approfondita e uno stile sopraffino.
  • DECSDatabase: Classe di supporto per l'uso del database di DECS o LEI come configurazione di base. A corredo del precedente.
  • AttachmentAdder: una classe che consente di aggiungere allegati ed immagini a documenti e RTitems senza accedere al file system. Ci sono 3 agenti di esempio che la utilizzano, mostrando come creare un allegato di testo senza usare i file, aggiungendo l'icona prendendola da una risorsa immagine. L'utilità di questa tecnica è evidente se si hanno agenti con accessi limitati al file system, oppure creare un allegato di un'immagine e usare la sua thumbnail come immagine per l'allegato (il codice per creare l'immagine di thumbnail non é presente)
  • ReportGenerator: una classe che permette la creazione in rich text di un report la cui destinazione può essere una memo di posta, o una dialog box, o un message box, o anche in un form specifico, e offre alcuni metodi per la semplice gestione di tabelle, paragrafi, stili e tabulazioni. Per capirci tra "cuochi", i metodi esposti hanno nomi tipo: AddTable, AdvanceCell, NextCell, Display, AddLink; usando la fantasia è possibile immaginare la potenza di questo strumento.
  • StringDiff and StringDiffMB: chi non avrebbe voluto sapere che differenza c'era tra due documenti Notes, magari dopo un problema che ha generato un conflitto di replica? Eccolo qui, servito caldo, con l'uso di ReportGenerator:

    Image:OpenNTF project update: LotusScript Gold Collection 1.2 (Managed by Andre Guirard)

  • TempFolderManager: classe che permette la gestione dei file e cartelle temporanei, che vengono cancellate alla distruzione dell'istanza. Preziosità: se i file al momento della chiusura sono bloccati dall'uso, alla prossima esecuzione dello stesso programma potete chiedere la cancellazione dei file rimasti in vita, con una data di cut-off: i più recenti saranno esclusi dalla rimozione. Piattaforme supportate: Windows, Mac, Linux.
  • FileResource: permette la lettura e la scrittura di file dati con codifica base64 da elementi di design, inclusi quelli che supportano solo il "note format", e quindi hanno il problema delle intestazioni CD.
  • ObjectList and ObjectListLite: classe che consente la creazione e la gestione di enormi liste dati concatenate di qualisasi tipo, esponendo metodi con nomi quali: AddAt (position), AddAfter(position), Append,PositionGet, PositionSet, RepositionTo. Non è presente sorting. La versione Lite non ha la possibilità di ricercare un nodo nella lista.
  • EmbeddedImage: consente di lavorare con immagini inline, importate o incollate in un elemento di design
  • RTDataTable: supporta la lettura di dati da una tabella contenuta in un campo rich text. La tabella può avere una intestazione.  I dati sono contenuti in una sorta di "record", dal quale il chiamante può richiederne il valore per nome colonna oppure per indice numerico.
  • DOMUtils: contiene varie funzioni usate durante l'uso delle classi di parsing NotesDOM, per esempio leggere l'elemento child del nodo corrente.
  • UIHelper: contiene alcune funzioni per la gestione delle operazioni di intefaccia utente. Una ad esempio consente l'uso di una dialog box "File save" che ricorda il nome file da una chiamata all'altra. Alcune richiedono un form di appoggio, come ad esempio GetColor, la quale consente la scelta di un colore sulla base di un colore proposto, e ritorna il nuovo colore in un formato a scelta tra 8 o 6 Hex, volendo preposto da "#", come richiesto fogli stile. ReorderChoicesDialog invece consente all'utente di riordinare una serie di valori.

    Image:OpenNTF project update: LotusScript Gold Collection 1.2 (Managed by Andre Guirard)

  • DesignUtils: funzioni utili per manipolare elementi di design programmaticamente. Una per capire: selezionare una NotesNoteCollection per avere tutti gli elementi di un certo tipo di oggetto di design.
  • DebugStrLC: una versione di DebugStr che supporta anche i tipi LCLSX. Strumento utilissimo per il debug di oggetti di svariati tipi, ne svela il tipo e il valore. Ottimo esempio dell'uso della ricorsione in LotusScript.

Conclusioni


Penso che da questi esempi e dallo stile utilizzato, tutti possiamo trarre beneficio, anche solo leggendo il codice con il gusto di vedere come si lavora quando ci si applica con passione e conoscenza, e un pizzico di voglia di "fare meglio".

Spero di poter presto aggiungere a questo articolo uno ulteriore che prende spunto da alcune di queste Script library e fa un ulteriore passo verso un tool finito e funzionante, articolo che con l'aiuto di Andre Guirard in ruolo di Chef e del sottoscritto nel ruolo di sguattero di cucina (non di cuoco, Andre) sta prendendo forma. Vedremo.


Francesco Marzolo è contattabile presso macrogroup.it

2 Commenti:

  • #1 Francesco Marzolo 03/23/2015 2:33:56 PM

    Francesco Marzolo ha cambiato casa, e indirizzo email:

    francesco dot marzolo at besttool dot it

    TYVM

  • #2 Renato 05/04/2010 10:53:33 AM

    Grazie Francesco.

    Interessante articolo !!

Commenta articolo
 

Questo spazio web è stato creato da per un uso pubblico e gratuito. Qualsiasi tipo di collaborazione sarà ben accetta.
Per maggiori informazioni, scrivete a info@dominopoint.it

About Dominopoint
Social
Dominopoint social presence: