La mia biblioteca professionale

So di non sapere, sono curioso e ho bisogno di stimoli; per questo leggo molto.
A seguire un elenco in ordine sparso:

  • “Innovazione aziendale” di Stephen K. Markham,Paul Mugge,Massimo Canducci
  • “Adriano Olivetti Ai lavoratori”
  • “Undisturbed Rest”
  • “Mastering Oracle Scheduler” di Ronald Rood
  • “Restful Java JAX-RS 20”
  • “C#3.0 Design Patterns” di Judith Bishop
  • *”Come nascono le idee” di Edoardo Boncinelli
  • “Clean Code” di Robert C. Martin
  • “Clean Coder” di Robert C. Martin
  • “Test Driven Development by example” di Kent Beck
  • “Agile software development principles patterns and practices” di Robert C. Martin
  • “Il nostro iceberg si sta scioglendo” di John Kotter, Holger Rathgeber
  • “The goal” di  Eliyahu M. Goldratt
  • “BDD in action” di Jhon Ferguson Smart
  • “Introducing EventStorming” di Alberto Brandolini
  • “Rest assured with JAX-RS” di Abhishek Gupta
  • “Principle of Object-Oriented Programming in JavaScript” di Nicholas C. Zakas
  • “Antifragile Software” di Russ Miles
  • “Il cigno nero” di Nassim Nicholas Taleb
  • “Antifragile” di Nassim Nicholas Taleb
  • “The Web API Design Guidelinees for Happy Developers” di Antonio Pintus e Federico Pinna
  • Fifty Quick Ideas to Improve Your Tests” di Gojko Adzic, David Evans, e Tom Roden
  • “The art of the unit testing” di Roy Osherove
  • “Domain Driven Design” di Eric Evans
  • “Drive” di Daniel H. Pink
  • “Lavorare con intelligenza emotiva” di Daniel Goleman
  • “Codice Montemagno” di Marco Montemagno
  • *”Narrarsi on-line” di Francesca Sanzo
  • “Programming Abstractions in C” di Eric Roberts
  • “Working Effectively with Legacy Code” di Michael-Feathers
  • “Restful Web Services”
  • “The Toyota Way” di  Jeffrey K. Liker,Luciano Attolico
  • “Giocati dal caso” di Nassim Nicholas Taleb
  • “Perseverare e’ umano” di Pietro Trabucchi
  • “10 tesi sull’impresa” di Anna Grandori

Integrazione di Xwiki e Serena PVCS


Nessuna invasione di campo

Xwiki e’ una piattaforma web open source per la gestione della conoscenza.
Uno dei problemi nell’adozione di Xwiki all’interno del nostro gruppo di lavoro in azienda è stato non invadere i processi aziendali in essere che prevedono l’archiviazione delle informazioni (documenti Office, codice sorgente ecc) nel CMS (Change Management System) Serena PVCS.
D’altra parte Xwiki l’ho installato con l’idea di fornire informazioni e soluzioni alla comunità degli sviluppatori di cui faccio parte, quindi era necessario referenziare facilmente le informazioni presenti nel CMS.

Xwiki al primo impatto mi e’ piaciuto perche’ realizzato in java, ma il suo aspetto più interessante e’ che si possono inserire script in Groovy che vengono eseguiti in fase di visualizzazione: in sostanza alcune sezioni del documento possono essere generate dinamicamente.
Questo aspetto unito al fatto che con JDBC è possibile accedere a qualunque database aziendale rende il tutto molto interessante.

L’idea

Se durante il mio lavoro incontro un problema e trovo una soluzione la adotto e finisce tipicamente all’interno di package Oracle.
Per diffondere questa soluzione scriverò un articolo su Xwiki, spiegherò il come il perchè ma il top per chi legge sarebbe poter accedere facilmente al package archiviato nel CSM in cui ho usato la soluzione.
Così anche se la soluzione evolve, l’utilizzatore potrà accedere sempre al codice sorgente aggiornato.
Così dopo qualche esperimento esplorativo ha preso forma l’idea di realizzare una macro Xwiki che consentisse di accedere al contenuto di un item qualunque archiviato nel CMS.

La soluzione

La soluzione tecnica si compone di:

  1. Macro Xwiki che consente all’operatore di impostare gli estremi dell’item. I parametri vengono usati per costruire una URL che punta sempre ad un documento Xwiki.
  2. Documento Xwiki che viene invocato quando si clicca su una URL Serena. Quando viene invocato:
    1. si recuperano i parametri passati in query string
    2. si effettua la connessione al db Oracle di Serena
    3. si recupera l’ID dell’ ultima revision dell’item
    4. attraverso un client PVCS Serena a linea di comando installato sul server XWiki, si accede al CMS con un account fisso read-only, si effettua la get dell’item che viene scaricato su una cartella TEMP del file system di XWiki
    5. si effettua una GET HTTP del file verso il client

In pratica

Si scrive un articolo

Documento per descrivere il package Oracle prima di inserire la macro

Si aggiunge una macro “Serena Get Item Link” e si impostano tutti i parametri richiesti che individuano univocamente l’item.

Fase di impostazione dei parametri di input della Macro Serena per referenziare il package Oracle di interesse

Il codice della macro è il seguente:

{{SerenaGetItemMacro instance=”hydra-te” itemName=”SIU_PKG_ESTRDOC_B.SQL” project=”COMMON” label=”SIU_PKG_ESTRDOC_B.SQL” workset=”SIUWEB”/}}

La macro per chi visualizza il documento si presenta come una URL sottoforma di link:

http://<SERVERNAME>/xwiki/bin/view/Area+organizzativa/SerenaGetDo?istance=hydra-te&workset=SIUWEB&project=COMMON&itemName=SIU_PKG_ESTRDOC_B.SQL&xpage=plain&outputSyntax=plain

Documento XWiki con l'URL al package Oracle archiviato nel CMS

Quando si clicca sul link “SIU_PKG_ESTRDOC” viene eseguito il codice Groovy e l’item viene scaricato sul client.

Fase di scaricamento del sorgente del package Oracle estratto dal CSM

A questo punto il file sorgente del package viene aperto con l’editor associato.

Package Oracle estratto dal CMS ed aperto nell'Editor associato

Il risultato finale

La soluzione attuale ha numerosi ambiti di miglioramento, perchè è complessa e lenta nel funzionamento.
Cio’ che conta però è che supporta perfettamente le finalita’ di Xwiki.

Start

Sono un software developer creativo e visionario.
Nel tempo libero leggo e mi diverto a sperimentare.
Questo e’ una specie di diario di bordo in cui si trova un po’ di me.