Come usare Confluence e JIRA per …. #1

Come usare Confluence e JIRA per ….

In questo post inauguriamo una piccola innovazione. Cerchiamo di dare degli spunti su come è possibile usare questi meravigliosi strumenti, anche per compiti NON IT 🙂

Cosa possiamo fare?

Un esempio che mi viene in mente è quello di poter usare Confluence e JIRA per poter …. censire le offerte di lavoro, arrivando ad avere un controllo completo di ciò che succede in azienda. Come possiamo arrivare a gestire le nostre proposte/offerte di lavoro?

Possiamo usare JIRA per:

  • usare le issue come se fossero delle offerte (basandosi sull’esempio della realizzazione di un Asset manager, dove le issue sono usate per censire gli asset di una azienda;
  • usare il JIRA Workflow per poter gestire i passaggi di stato della offerta, fino a gestire l’intero ciclo di vita del lavoro proposto.
  • Usare JIRA Agile per gestire i passaggi di stato. Sfruttiamo la possibilità di poter visualizzare in un sol colpo lo stato di tutte le commesse e sfruttare i tool che JIRA Agile mette a disposizione

Possiamo usare Confluence per:

  • Documentare l’offerta di lavoro, impostando dei template standard, dove riportare tutte le informazioni dell’offerta, da quando è stata proposta al cliente fino alla sua conclusione 
  • Impostare tutte le informazioni documentali, quali documenti inviati, documenti ricevuti dal cliente e segnalazioni varie. Confluence viene usato più per tracciare tutti i documenti ;

Conclusioni

Questo è solo una idea di come poter implementare una possibile soluzione, sfruttando le funzionalità che i due prodotti mettono a disposizione. Infatti è possibile realizzare delle soluzioni non indifferenti :-).

Nei prossimi post cercheremo di dettagliare meglio questa soluzione, arrivando a fornire pro e contro della soluzione e verificando fino a che punto possiamo spingerci con questi strumenti 😀

 




Time tracking sotto JIRA – Alternative a TEMPO

Time Tracking & Timesheets

In questo post andremo ad eseguire una carrellata su vari addon, che possono essere utilizzati come alternative a TEMPO.

Time Tracking And Billing Reporting

Il primo addon che andiamo a recensire è Time Tracking And Billing Reporting.

L’addon mette a disposizione apposita reportistica per tracciare le varie attività, svolte dagli utenti di JIRA, attraverso gli attributi delle issue.

Mette a disposizione opportuna reportistica, al fine di monitorare la situazione.

consentendo di poter accedere, attraverso il pannello di amministrazione del progetto, ad ulteriori reportistiche.

Riassumendo

Si tratta di un addon, dal costo contenuto, che mette a disposizione un insieme semplice e rapido da usare, di funzionalità.

 

ictime – JIRA Time Tracking & Reporting

Il secondo addon che andiamo a recensire, è il ictime – JIRA Time Tracking & Reporting.

Attraverso l’aggiunta di opportune informazioni aggiuntive, inserite nel Log Work panel, è possibile inserire opportune informazioni.

Una opportuna reportistica è messa a disposizione degli utenti. Dalla precedente immagine, sembra che sia molto configurabile ed adattabile in base alle esigenze degli utenti.

Aggiunta la sezione My Last Work Log. Questa consente di poter visionare un quadro completo dell’ultimo work log inserito.

Viene data la possibilità di poter accedere all’ultimo Work Log anche attraverso la barra dei menù.

Non ultima, viene fornita la visualizzazione via Timesheet delle ore di lavoro svolte.

Riassumedo

Abbiamo un addon molto più completo del precedente e che mette a disposizone delle funzionalità aggiuntive. Anche questo addon è a pagamento ma da quando vediamo sembra promettere bene.

Timetracker

L’ultimo addon che andiamo a recensire è il Timetracker.

Questo addon mette a disposizione delle schermate semplici e dirette, per la gestione del timesheet e per tracciare le ore di lavoro.

Opportuni report sono messi a disposizione per monitorare il lavoro dei colleghi.

Semplice reportistica è messa a disposizione.

Riassumento

Si tratta di un addon molto semplice, che mira allo scopo e senza molti fronzoli, come osserviamo dalle immagini.

 

Conclusioni

Abbiamo visto solo alcune delle alternative all’addon TEMPO. AL momento in cui viene scritto l’articolo, non ho trovato altri addon che possano essere confrontati con TEMPO. Mi aspetto che questi non siano e non saranno gli unici addon che consentiranno di poter trattare i timesheet ed il lavoro delle persone.




TEMPO – un addon indispensabile per JIRA

Tempo – Addon indispensabile

In questo post andremo ad esaminare un addon indispensabile per gli utilizzatori di JIRA. Si tratta di TEMPO. Vedremo che cosa offre, quali funzionalità mette a disposizione e quali possibilità offre.

First look

Fondamentalmente, TEMPO consente di poter facilmente tracciare dei consuntivi delle ore di lavoro. Il suo obbiettivo è quello di agevolare il lavoro degli utilizzatori di JIRA, tracciare facilmente le ore di lavoro e consentire ai manager /project manager di poter monitorare l’andamento degli stessi progetti.

Dalla precedente immagine, vediamo che consente una veloce e rapida imputazione dei dati delle ore, consentendo di poter facilmente discriminare tra le varie attività svolte e agevolando il lavoro degli utilizzatori (mi permetto di sottolineare l’uso di questo termine, in quanto questo addon si presta bene a chiunque utilizzi JIRA per tracciare le ore di lavoro, quindi non solo sviluppatori software, ma anche progettisti o chiunque lo utilizzi).

L’addon mette a disposizione agevoli schermate video che consentono una maggiore visibilità delle informazioni, anche nel caso di utenti coinvolti in più progetti.

Report e grafici sono messi a disposizione per monitorare gli andamenti dei progetti, degli sforzi degli utilizzatori nei vari progetti.

Viene messa a disposizione anche la possibilità, per gli utilizzatori, di poter inserire la pianificazione di ferie/permessi.

Da sottolineare anche la presenza di Gadget, indispensabili per creare delle dashboards omnicomprensive e ricche di informazioni. Questo lo rende uno strumento completo ed indispensabile per svolgere le proprie attività.

Agevoli strumenti sono messi a disposizione per tracciare i timesheet, monitoraggio e pianificazione delle attività.

Conclusioni

SI tratta di uno degli addon più completi e sicuramente indispensabili. Disponibile sia per installazioni server, che per installazioni cloud, è sicuramente lo strumento ideale per la gestione dei progetti. Nei prossimi post andremo ad eseguire la solita prova su strada dell’addon e, successivamente, forniremo una comparazione con altri strumenti che svolgono operazioni simili, come già mostrato nel seguente post:

Reference

 




JIRA Workflow – Approfondimenti

Approfondiamo l’argomento

In questo post andremo ad approfondire l’argomento Workflow, già trattato in:

Cercheremo, in questa prima fase, di capire che funzionalità abbiamo a disposizione, cercando in una seconda fase di applicarle a dei casi reali.

Nel dettaglio

Come JIRA Administrator è possibile operare le seguenti azioni su di un Workflow:

  • Triggers –  Si tratta di  impostare delle azioni specifiche da eseguire in determinate condizioni / transazioni.
  • Conditions – possibilità di poter impostare delle condizioni per poter eseguire determinate transazioni.
  • Validators – intesa come validazione dei dati, affinché rispettino determinate condizioni
  • Post functions – intesa come l’esecuzione di operazioni dopo che una issue è passata da uno stato all’altro
  • Properties – si tratta di coppie di valori che possono essere usate per estendere le proprietà, come informazioni aggiuntive del workflow.

Andiamo ad esaminare nel dettaglio le varie componenti.

 

Triggers

Questi strumenti sono utilizzati prevalentemente per integrare determinate azioni del workflow con gli strumenti di sviluppo quali Stash o FishEye/Crucible. La seguente tabella riassume quali azioni possono essere eseguite.

WF-03-01

Di conseguenza, se non si dispone di un link a tali strumenti, i trigger non risultano usabili. Questo lo andremo a verificare con i nostri test. 🙂

 

Conditions

Si tratta condizioni che possono essere impostate nelle varie transazioni di stato del Workflow. Possiamo, ade esempio, impostare le seguenti condizioni:

  • Consentire al solo reporter di eseguire una transizione di stato. Si tratta di una condizione molto rigida: Si consiglia una attenta valutazione prima di impostare una condizione del genere;
  • Consentire ad un insieme di utenti di poter eseguire una transizione di stato. SI tratta di una condizione molto rigida anche questa.
  • Poter eseguire una transizione di stato solo dopo aver eseguito la commit.

Validators

Con questa funzionalità, riusciamo ad impostare una validazione dei dati che sono inseriti prima della transazione di stato. Se questa fase non viene passata, la transazione di stato non viene eseguita e le operazioni successive non sono eseguite.

In questo modo possiamo accertarci di aver inserito correttamente tutte le informazioni, nell’ambito di una issue. Possiamo finalmente avere delle issue complete in ogni fase della lavorazione 🙂

 

Post functions

Si tratta di operazioni, di corollario, che possono essere impostate per essere eseguite dopo che la transazione di stato è stata eseguita. In questo modo possiamo impostare delle funzionalità aggiuntive. SI tratta di una funzionalità non indifferente 🙂

Possiamo settare lo stato di una linked issue, in modo da sbloccarla in … automatico. Questo sicuramente ci può aiutare nella sincronizzazione dei gruppi di lavoro. Supponiamo che una nostra issue blocca il lavoro di un altro gruppo. Con questa semplice azione possiamo segnalare in automatico che possono procedere con la lavorazione di una determinata anomalia. Immaginatevi se i gruppi di lavoro sono a distanza l’uno dall’altro.

Possiamo anche andare a settare un campo in funzione del contenuto di un’altro. Le possibilità sono molteplici. 😀

 

Properties

Si tratta di coppie di valori (codice/valore) che sono usate per estendere le proprietà di un workflow.

Un possibile uso può essere quello di impostare delle restrizioni in base ai valori delle properties impostate.

 

Conclusioni

In questo post siamo andati un in profondità sui Workflow. Abbiamo visto come è possibile estendere queste nuove funzionalità, come poter impostare diverse condizioni, validazioni ed estendere il Workflow con nuove proprietà. Nei prossimi post andremo a vedere un esempio di utilizzo di queste, applicandoli a situazioni già descritte.

 




Kanoah Tests 1.5.0 – Ultime novità

Ultime news

In questo post andremo a vedere quali sono le ultime novità sull’addon Kanoah Tests, andando ad approfondire i post che nel passato abbiamo dedicato all’argomento.

Andiamo in dettaglio

Vediamo quali sono le ultime novità, andandole ad esaminare in dettaglio:

Rich text support

E’ stato fornita la possibilità di editare i commenti ed i testi con formattazione (grassetto, italico, etc), come mostrato nella seguente figura.

Permission

Abbiamo a disposizione una unica area, nella sezione di amministrazione, per gestire le permission dei vari utenti, gruppi e ruoli.

Tracciatura storico test

Viene data la possibilità di poter tracciare lo storico dei vari test, delle varie operazioni, come mostrato in figura.

Abilitare/Disabilitare l’addon

Viene data la possibilità di poter abilitare/disabilitare l’addon per specifici progetti. Questo significa che possiamo attivare l’addon solo per alcuni di essi e non attivarlo per altri. Provate a pensare se avete delle situazioni in cui si dispone di progetti, preesistenti, che sono già operativi ed avviati. Questo è un ottimo risultato.

Migliorata la gestione dei Run Test

E’ stata migliorata la gestione dei Run Test, consentendo una migliore interazione con gli stessi e consentendo di poter meglio gestire il tutto.

Conclusioni

La Kanoah ci sorprende con nuove sorprese. Sono sicuro che non finirà di stupirci. Rimaniamo in attesa di nuove implementazioni 🙂




User Macro – Lorem Ipsum: Facciamo un nostro esempio.

Un altro esempio

In questo post, proseguiamo la serie di articoli dedicati alla creazione di User Macro. Vedremo un esempio di come creare una semplice macro che sostituisca la macro ufficiale Lorem Ipsum.

 

Andiamo sul pratico

Iniziamo con il definire la nostra macro di prova. Come prima cosa andiamo a definire che cosa deve fare la nostra macro 🙂 . Non è cosa da poco.

Vogliamo sostituire la macro standard Lorem Ipsum di Confluence. Vogliamo implementarne una nostra che restituisca un nostro risultato personalizzato. Nel nostro caso abbiamo bisogno di ripetere una scritta solo fino a 5 volte massimo.

Il nostro obbiettivo è quello di avere delle sezioni si Lorem Ipsum molto ridotte come testo.

Il nostro script di macro

Definiamo il nostro script come segue:

Come parametri principali, fate riferimento alla seguente immagine:

usermacro-04-01

Il codice della macro è il seguente

## Macro title: Lorem Ipsum
## Macro has a body: N
## Body processing: Genera un testo a misura del Lorem Ipsum
## Output: Testo indicato
##
## Developed by: ArtigianoDelSoftware di Fabio Genovese
## Date created: 05/09/2015
## Installed by: -
## Parametri
## @param numpar:title=Number of paragraph|type=enum|enumValues=1,2,3,4,5|required=true|desc=Number of paragraph
## Corpo della macro
#set ( $Testo = "lorem ipsum, quia dolor sit, amet, consectetur, adipisci velit, sed quia non numquam eius" )
#set ( $Testodef = "")
#set ( $limit = $paramnumpar )
#if ( $paramnumpar == 1 ) 
 #set ( $Testodef = "$Testo" )
#elseif ( $paramnumpar == 2 )
 #set ( $Testodef = "$Testo$Testo" )
#elseif ( $paramnumpar == 3 )
 #set ( $Testodef = "$Testo$Testo$Testo" )
#elseif ( $paramnumpar == 4 )
 #set ( $Testodef = "$Testo$Testo$Testo$Testo" )
#else
 #set ( $Testodef = "$Testo$Testo$Testo$Testo$Testo" )
#end
## Visualizzazione
<html>
<body>
$Testodef
</body>
<html>

Identifichiamo le seguenti sezioni:

  • Macro title – Si tratta di un commento da inserire in cima alla macro
  • Parametri – dichiarazione dei parametri
  • Corpo della macro – Codice della macro
  • Visualizzazione – Parte del corpo della macro che visualizza i risultati

Macro Title

Si tratta del mero commento alla procedura. Lo consiglio sempre. Inseritelo. Non occupa alcuno spazio ed è utile quando riprendete in mano la macro per farne manutenzione

## Parametri
## @param numpar:title=Number of paragraph|type=enum|enumValues=1,2,3,4,5|required=true|desc=Number of paragraph

Parametri

Dichiarazione dei parametri che richiede la macro. Parte molto importante. Nel nostro caso abbiamo inserito una selezione automatica in cui l’utente può selezionare un valore da 1 a 5. Un semplice enumeratore.

## Parametri
## @param numpar:title=Number of paragraph|type=enum|enumValues=1,2,3,4,5|required=true|desc=Number of paragraph

Corpo della macro

Di seguito il codice, scritto in sintassi Velocity, che realizza il tutto.

## Corpo della macro
#set ( $Testo = "lorem ipsum, quia dolor sit, amet, consectetur, adipisci velit, sed quia non numquam eius" )
#set ( $Testodef = "")
#set ( $limit = $paramnumpar )
#if ( $paramnumpar == 1 ) 
 #set ( $Testodef = "$Testo" )
#elseif ( $paramnumpar == 2 )
 #set ( $Testodef = "$Testo$Testo" )
#elseif ( $paramnumpar == 3 )
 #set ( $Testodef = "$Testo$Testo$Testo" )
#elseif ( $paramnumpar == 4 )
 #set ( $Testodef = "$Testo$Testo$Testo$Testo" )
#else
 #set ( $Testodef = "$Testo$Testo$Testo$Testo$Testo" )
#end

Visualizzazione

La parte che si occupa della visualizzazione è molto semplice e non richiede alcun commento.

## Visualizzazione
<html>
<body>
$Testodef
</body>
<html>

Risultati?

I risultati sono i seguenti. Alla chiamata vediamo che Confluence mostra anche la nostra Macro (la prima).

usermacro-04-02

Una volta selezionata la macro, viene attivata l’autocomposizione

usermacro-04-03

Una volta impostato la macro viene visualizzata sulla pagina

 

usermacro-04-04

Il risultato finale è il seguente:

usermacro-04-05

 

Conclusioni

Abbiamo visto come si può realizzare una semplice macro. Nei prossimi post andremo ad esaminare altri esempi.




TimePO – Prova su strada

Prova su strada

Proseguiamo l’analisi dell’addon: andiamo a provarlo su strada e a verificarne le potenzialià.

Installazione, configurazione …

Dopo aver installato l’addon, con le solite procedure, abbiamo il nostro addon attivo:

timepo-01

Non abbiamo una fase di configurazione vera e propria. Basta semplicemente aggiungere i seguenti gadget alla dashboard di sistema:

timepo-02

Aggiunti alla dashboard, procediamo solo ad impostare i parametri dei gadget, come mostrato in figura

timepo-03

Configuriamo il gadget logged time su di un progetto specifico, in modo da saggiarne una prima potenzialità.

Non appena salviamo la configurazione, questo è il risultato. Tenete conto che sto utilizzano il mio ambiente di test, dove eseguo tutte le prove su strada. Questo mi aiuta notevolmente a saggiare il nuovo componente, cercando di costruire una situazione il più simile ad un ambiente di produzione.

timepo-04

Come si può vedere, gli operatori possono già da subito caricare le ore direttamente sui vari TASK (primo gadget). Questa visualizzazione si avvicina tantissimo ad un normale consuntivo delle ore, cui siamo molto abituati.

Se selezioniamo una singola cella, come mostrato in figura, vediamo che subito possiamo inserire le ore sul task, sulla giornata cui vi abbiamo lavorato. La seguente figura mostra la form di caricamento delle ore, molto semplice e di facile utilizzo.

timepo-05

Il risultato è molto semplice.

timepo-06

Proviamo adesso a verificare i risultati nel secondo gadget. Andiamo ad inserire i dati sui task di uno specifico progetto e verifichiamo i risultati, con la prossima figura.

timepo-07

Come abbiamo modo di vedere, il secondo gadget realizza una pivot con tutte le informazioni che servono, per la gestione del progetto. Abbiamo il totale delle ore raggruppate per progetto e la spaccatura totale per utente, task.

Domanda: Come estraggo i dati?

La domanda è molto lecita. Il sistema non servirebbe a nulla, se poi non è possibile estrarre i dati. Se andiamo a visualizzare gli elenchi dei report, possiamo avere a disposizione un meccanismo per estrarre i dati e portarli su Excel. Dalla figura abbiamo le indicazioni per reperire i report:

timepo-08

Se selezioniamo il primo report, ovvero TimePO Project/Team timesheet report, quindi selezioniamo i parametri di emissione del report:

timepo-09

Il risultato che otteniamo è il seguente:

timepo-10

L’apposito tasto Excel View, posto in alto a destra, ci aiuta nella estrazione dei risultati in Excel.

Conclusioni

Il risultato è notevole. Aggiungiamo che l’addon (al momento in cui viene redatto l’articolo) è gratuito. Questo ne fa una delle soluzioni più semplici per la tracciatura delle ore di un progetto. Il sistema per imputare le ore è molto semplice: sostanzialmente si tratta di compilare un oggetto molto simile ad un foglio excel. Questa soluzione è sicuramente ottima per le aziende che non possono permettersi delle soluzioni costose.

Reference

Le informazioni sull’addon sono reperibili qui.

 




User Macro – Un semplice esempio di utilizzo

User Macro

In questo post andremo ad consultare un articolo presente in questo blog, che ritengo molto interessante. Lo esamineremo e cercheremo di approfondire l’argomento, in quanto lo ritengo un ottimo esempio didattico.

Andiamo in dettaglio

L’articolo del blog spiega come realizzare una alternativa alla macro Space Detail Macrousando le macro per ottenere un risultato migliore 🙂

In particolare il risultato che offre con la sua macro è il seguente:

L’ho scelto perché si tratta di una macro molto semplice e, dal punto di vista didattico, la macro risulta realizzata molto bene.

Vediamo il codice

La configurazione preliminare della macro è molto semplice. La seguente immagine la riassume:

Il codice è molto semplice. Lo riporto di seguito nella sua interessa e successivamente lo andremo ad esaminare pezzo per pezzo, in modo da capire come viene eseguita ogni singola operazione.

## Macro title: Space Meta Data
## Macro has a body: Y or N (N)
## Body processing: Selected body processing option
## Output: Selected output option
##
## Developed by: Andrew Frayling
## Date created: 03/05/2012
## Installed by: <your name>

## Macro to display information such as number of pages, number of blog posts, attachment size, etc. about a Space. 

## @noparams

## Get space details
#set ( $spaceName = $space.getName() )
#set ( $spaceKey = $space.getKey() )
#set ( $spaceHome = $space.getHomePage() )
#set ( $spaceCreator = $space.getCreatorName() )
#set ( $spaceCreationDate = $space.getCreationDate() )
#set ( $spaceDescription = $space.getDescription() )
#set ( $pageCount = $spaceManager.findPageTotal($space) )
#set ( $blogCount = $spaceManager.getNumberOfBlogPosts($space) )

## Get all pages in the current Space
#set ( $allPagesInSpace = $pageManager.getPages($space, true) )

## Reset total attachment file size
#set ( $totalAttachmentFileSizeForSpace = 0 )

## Reset total number of attachments
#set ( $totalAttachmentCount = 0 )

## Loop through all pages in the current Space
#foreach ($page in $allPagesInSpace)
  ## reset the attachment count for each page
  #set ( $pageAttachmentCount = 0 )
  ## reset the attachment file size total for each page
  #set ( $totalFileSizePerPage = 0 )
  ## get the attachments for each page
  #set ( $allAttachments = $page.getAttachments() )
  ## Loop through each attachment
  #foreach ($attachment in $allAttachments)
    ## Increment the attachment count for the page
    #set ( $pageAttachmentCount = $pageAttachmentCount + 1 )
    ## Sum the size of the attachments on the page
    #set ( $totalFileSizePerPage = $totalFileSizePerPage + $attachment.getFileSize() )
  #end
  ## End looping through attachments
  ## Increment total attachment count for the current Space
  #set ( $totalAttachmentCount = $totalAttachmentCount + $pageAttachmentCount )
  ## Sum the total size of attachments for the current Space
  #set ( $totalAttachmentFileSizeForSpace = $totalAttachmentFileSizeForSpace + $totalFileSizePerPage )
#end
## End looping through pages

## Convert attachment size to MBs
#set ( $attachmentSizeMb = ($totalAttachmentFileSizeForSpace / 1024.00) / 1024.00 )

## Display Space Details
<table class="confluenceTable">
  <tbody>
    <tr>
      <th class="confluenceTh">Name</th>
      <td class="confluenceTd">$spaceName</td>
    </tr>
    <tr>
      <th class="confluenceTh">Key</th>
      <td class="confluenceTd">$spaceKey</td>
    </tr>
    <tr>
      <th class="confluenceTh">Description</th>
      <td class="confluenceTd">$spaceDescription.getBodyAsString()</td>
    </tr>
    <tr>
      <th class="confluenceTh">Home Page</th>
      <td class="confluenceTd">#contentLink2($spaceHome true false)</td>
    </tr>
    <tr>
      <th class="confluenceTh">Created By</th>
      <td class="confluenceTd">#usernameLink($spaceCreator) ($action.dateFormatter.formatDateTime($spaceCreationDate))</td>
    </tr>
    <tr>
      <th class="confluenceTh">Number of Pages</th>
      <td class="confluenceTd">$pageCount</td>
    </tr>
    <tr>
      <th class="confluenceTh">Number of Blog Posts</th>
      <td class="confluenceTd">$blogCount</td>
    </tr>
    <tr>
      <th class="confluenceTh">Number of Attachments</th>
      <td class="confluenceTd">$totalAttachmentCount (including all versions)</td>
    </tr>
    <tr>
      <th class="confluenceTh">Total Size of Attachments</th>
      <td class="confluenceTd">$attachmentSizeMb MB</td>
    </tr>
  </tbody>
</table>

Distinguiamo le seguenti sezioni nella macro:

  • Testata
  • Lettura parametri dello space
  • Lettura della dimensione dei vari allegati
  • Visualizzazione dati ottenuti

Andiamo ad esaminarle in dettaglio.

## Macro title: Space Meta Data 
## Macro has a body: Y or N (N) 
## Body processing: Selected body processing option 
## Output: Selected output option 
## 
## Developed by: Andrew Frayling 
## Date created: 03/05/2012 
## Installed by: <your name> 
## Macro to display information such as number of pages, number of blog posts, attachment size, etc. about a Space. ## @noparams

L’Intestazione della macro è quello che avevo già descritto nel mio primo post. In questo caso, l’autore ha realizzato una intestazione molto ben fatta, chiara, semplice e di rapido effetto.

Spiega subito le caratteristiche della macro in poche righe.

## Get space details
#set ( $spaceName = $space.getName() )
#set ( $spaceKey = $space.getKey() )
#set ( $spaceHome = $space.getHomePage() )
#set ( $spaceCreator = $space.getCreatorName() )
#set ( $spaceCreationDate = $space.getCreationDate() )
#set ( $spaceDescription = $space.getDescription() )
#set ( $pageCount = $spaceManager.findPageTotal($space) )
#set ( $blogCount = $spaceManager.getNumberOfBlogPosts($space) )

## Get all pages in the current Space
#set ( $allPagesInSpace = $pageManager.getPages($space, true) )

## Reset total attachment file size
#set ( $totalAttachmentFileSizeForSpace = 0 )

In questa sezione, invece, va a leggere tutte le informazioni dello Space, impostando tutte le variabili con le informazioni che si vogliono visualizzare nella macro. Notiamo le variabili, definite con la sintassi che è stata già spiegata nei precedenti post.

## Reset total number of attachments 
#set ( $totalAttachmentCount = 0 )

## Loop through all pages in the current Space
#foreach ($page in $allPagesInSpace)
  ## reset the attachment count for each page
  #set ( $pageAttachmentCount = 0 )
  ## reset the attachment file size total for each page
  #set ( $totalFileSizePerPage = 0 )
  ## get the attachments for each page
  #set ( $allAttachments = $page.getAttachments() )
  ## Loop through each attachment
  #foreach ($attachment in $allAttachments)
    ## Increment the attachment count for the page
    #set ( $pageAttachmentCount = $pageAttachmentCount + 1 )
    ## Sum the size of the attachments on the page
    #set ( $totalFileSizePerPage = $totalFileSizePerPage + $attachment.getFileSize() )
  #end
  ## End looping through attachments
  ## Increment total attachment count for the current Space
  #set ( $totalAttachmentCount = $totalAttachmentCount + $pageAttachmentCount )
  ## Sum the total size of attachments for the current Space
  #set ( $totalAttachmentFileSizeForSpace = $totalAttachmentFileSizeForSpace + $totalFileSizePerPage )
#end
## End looping through pages

## Convert attachment size to MBs
#set ( $attachmentSizeMb = ($totalAttachmentFileSizeForSpace / 1024.00) / 1024.00 )

In questa sezione del codice, viene eseguito un esempio di ciclo sulle varie pagine, per determinare la dimensione dei vari allegati alle pagine dello Space. Questo è sicuramente un ottimo esempio che mostra come sono reperite le informazioni usando il codice delle macro.

In aggiunta vediamo come eseguire il reperimento dei dati, quali le pagine presenti dentro uno space, e degli allegati. La sintassi non è affatto difficile e consente di poter lavorare agevolmente.

## Display Space Details
<table class="confluenceTable">
  <tbody>
    <tr>
      <th class="confluenceTh">Name</th>
      <td class="confluenceTd">$spaceName</td>
    </tr>
    <tr>
      <th class="confluenceTh">Key</th>
      <td class="confluenceTd">$spaceKey</td>
    </tr>
    <tr>
      <th class="confluenceTh">Description</th>
      <td class="confluenceTd">$spaceDescription.getBodyAsString()</td>
    </tr>
    <tr>
      <th class="confluenceTh">Home Page</th>
      <td class="confluenceTd">#contentLink2($spaceHome true false)</td>
    </tr>
    <tr>
      <th class="confluenceTh">Created By</th>
      <td class="confluenceTd">#usernameLink($spaceCreator) ($action.dateFormatter.formatDateTime($spaceCreationDate))</td>
    </tr>
    <tr>
      <th class="confluenceTh">Number of Pages</th>
      <td class="confluenceTd">$pageCount</td>
    </tr>
    <tr>
      <th class="confluenceTh">Number of Blog Posts</th>
      <td class="confluenceTd">$blogCount</td>
    </tr>
    <tr>
      <th class="confluenceTh">Number of Attachments</th>
      <td class="confluenceTd">$totalAttachmentCount (including all versions)</td>
    </tr>
    <tr>
      <th class="confluenceTh">Total Size of Attachments</th>
      <td class="confluenceTd">$attachmentSizeMb MB</td>
    </tr>
  </tbody>
</table>

Questa è la parte che si occupa della visualizzazione. Notiamo che si tratta di HTML, che sfrutta le classi e le proprietà di Confluence. Vediamo che tutti i risultati delle precedenti elaborazioni sono inserite in questa tabella, in maniera molto rapida.

Conclusioni

Abbiamo analizzato un esempio di macro, molto semplice ma nello stesso tempo, fondamentale. Con esso è possibile comprendere e capire meglio come si può realizzare una macro, come possiamo sfruttare i vari punti del linguaggio per realizzare le funzionalità di cui si abbisogna senza, in questo caso, dover installare nulla :-). Scusate se è poco 😀

Ringraziamenti

Un ringraziamento particolare va all’autore del post blog. L’articolo è ben fatto e, anche se in inglese, è molto chiaro. I complimenti all’autore sono d’obbligo. 🙂

 

 




Exocet – Prova su strada – 2

Prova su strada – Continua

In questo post andremo a completare la panoramica dell’addon della Valiantys.

Continuiamo il test

Nel post precedente, abbiamo visto come è stata realizzata una sincronizzazione di commenti, tra due task collegati, attraverso l’addon. In questo post andremo ad esaminare altre operazioni.

Clone avanzato

Abbiamo a disposizione una funzionalità avanzata di Clone Issue. Se andiamo a selezionarla dalle Action di una Issue (DEMO-3, nel nostro esempio), notiamo che viene subito proposta, come da seguente figura:

exocet-02-01

una agevole autocomposizione. Andiamo quindi a confermare la creazione e questo è il nostro risultato:

exocet-02-02

Operations

Quando definiamo le operazioni, queste sono riportate, a seconda di dove indicato, su Action Menù. Nel nostro test abbiamo definito due operazioni:

exocet-02-03

e queste sono riportate nell’Action Menù, una volta che entriamo nel dettaglio della ISSUE:

exocet-02-04

consentendo all’utente di poterle subito utilizzare.

Conclusioni

Abbiamo visionato altre funzionalità dell’addon e con questo post, completiamo la nostra prova su strada. Possiamo affermare che le operazioni eseguite dallo stesso sono ottime. Unico punto negativo che andiamo a riscontrare, riguarda ahime proprio la documentazione :-(. Questa non risulta perfettamente chiara in ogni singolo punto e si fa molta fatica a capire come utilizzare l’addon. Suggerirei una piccola revisione, al fine di rendere il tutto più dettagliato, vista la complessità.




TimePO – Time tracking and Timesheets

Tracciamo meglio il lavoro

In questo post andremo ad esaminare un addon per JIRA, che ci può sicuramente aiutare nel tracciare le nostre attività e censire meglio il lavoro.

 

Dettaglio

Si tratta del TimePO – Time tracking and Timesheets, un addon che ci aiuta nel time tracking delle attività di tutti gli utenti (manager ed operatori) e nel reporting delle stesse informazioni. Si tratta di un addon per le installazioni server e…… gratuito (al momento in cui viene redatto questo post, l’addon risulta free).

Come mostrato dalla immagine sopra riportata, abbiamo una agevole interfaccia per il caricamento delle ore per singolo task.

I manager riescono, attraverso una visualizzazione di insieme, a capire meglio la situazione ed avere un quadro di insieme.

In aggiunta, disponiamo di una valida reportistica e di un sistema di esportazione su Excel, che meglio ci aiuta nella gestione del progetto/i.

Conclusioni

Uno strumento gratuito che mette a disposizione delle funzionalità non indifferenti :-). Nei prossimi post andremo a fare la nostra solita prova su strada per meglio capire come possiamo sfruttare questo addon.