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:
- 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.
- Documento Xwiki che viene invocato quando si clicca su una URL Serena. Quando viene invocato:
- si recuperano i parametri passati in query string
- si effettua la connessione al db Oracle di Serena
- si recupera l’ID dell’ ultima revision dell’item
- 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
- si effettua una GET HTTP del file verso il client
In pratica
Si scrive un articolo
Si aggiunge una macro “Serena Get Item Link” e si impostano tutti i parametri richiesti che individuano univocamente l’item.
Il codice della macro è il seguente:
{{SerenaGetItemMacro instance=”hydra-te” itemName=”SIU_PKG_ESTRDOC_B.
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
Quando si clicca sul link “SIU_PKG_ESTRDOC” viene eseguito il codice Groovy e l’item viene scaricato sul client.
A questo punto il file sorgente del package viene aperto con l’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.