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 🙂




2013/09/24 – Il mio primo post

Due anni sono passati….

Quanto tempo, e mi sembra ieri che avevo iniziato….. 🙂

Il 24 settembre saranno 2 anni dalla redazione e pubblicazione del mio primo post. Il mio progetto Artigiano del Software, un progetto molto articolato che comprende anche un blog personale, dove poter scrivere articoli didattici, recensioni, idee ed altro sui prodotti della Atlassian e su Oracle e su tutto ciò che include la tecnologia,  iniziava i suoi primi passi, con la scrittura del primo articolo, dedicato ad Oracle.

Dopo i primi mesi di rodaggio, ho finalmente iniziato a scrivere in maniera continuativa e, come visto, sono riuscito a pubblicare un post al giorno, riuscendo nel mio intento di approfondire l’argomento Atlassian e far conoscere a tanti aspetti degli stessi, tanti possibili usi, tante possibili cose.

Ringrazio tutti i miei lettori

carpenters




Superato il muro delle 3800 views

Superato il muro delle 3800 views

3800

 

Grazie a tutti i miei lettori

carpenters

 




Nuovo sito ufficiale – ArtigianoDelSoftware.it

Annuntio vobis gaudium magnum….

Annunciamo con piacere che è operativo il nuovo sito aziendale dell’Artigiano 🙂

Artigiano01

Il nuovo sito, reperibile all’indirizzo www.artigianodelsoftware.it , è stato appena reso operativo.

Nel tempo sarà esteso e presto nuove sezioni, contenuti, link e quanto altro. 🙂

Giudizi sono ben graditi. 🙂

 

 




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à.