{"id":92290,"date":"2018-02-28T13:01:55","date_gmt":"2018-02-28T12:01:55","guid":{"rendered":"http:\/\/artigianodelsoftware.it\/blog\/?p=92290"},"modified":"2018-02-28T13:01:55","modified_gmt":"2018-02-28T12:01:55","slug":"uso-congiunto-di-addons-vediamo-lesempio-di-exporter-di-xpand","status":"publish","type":"post","link":"https:\/\/artigianodelsoftware.it\/blog\/2018\/02\/28\/uso-congiunto-di-addons-vediamo-lesempio-di-exporter-di-xpand\/","title":{"rendered":"Uso congiunto di Addons &#8211; Vediamo l&#8217;esempio di Exporter di Xpand"},"content":{"rendered":"<div class=\"pdfprnt-buttons pdfprnt-buttons-post pdfprnt-top-right\"><a href=\"javascript: imageToPdf()\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_self\"><img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/pdf-print\/images\/pdf.png\" alt=\"image_pdf\" title=\"Visualizza PDF\" \/><\/a><a href=\"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/92290?print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\"><\/a><\/div><blockquote>\n<h1>Uso congiunto di Addons<\/h1>\n<\/blockquote>\n<p>In questo post andremo ad affrontare un argomento molto interessante : come usiamo in manieta congiunta pi\u00f9 addons. Si tratta di una questione molto importante in quanto, in determinati ambiti\/necessit\u00e0, si vuole utilizzare due funzionalit\u00e0 di due addon differenti \ud83d\ude42<\/p>\n<p><a href=\"https:\/\/fthmb.tqn.com\/e5SXSOeUdjD3b-NIVQnzp05WhE4=\/768x0\/filters:no_upscale()\/GettyImages-468837861-56c5c0c93df78c763fa5d925.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter \" src=\"https:\/\/fthmb.tqn.com\/e5SXSOeUdjD3b-NIVQnzp05WhE4=\/768x0\/filters:no_upscale()\/GettyImages-468837861-56c5c0c93df78c763fa5d925.jpg\" width=\"569\" height=\"320\" \/><\/a><\/p>\n<blockquote>\n<h1>Giusto per chiarire &#8230;<\/h1>\n<\/blockquote>\n<p>&#8230;. questo articolo \u00e8 stato ispirato da un articolo molto bello, riportato da\u00a0<a title=\"Posts by Rui Rodrigues\" href=\"https:\/\/www.xpand-addons.com\/author\/rmbr\/\" target=\"_blank\" rel=\"author noopener\">Rui Rodrigues<\/a>\u00a0e <a title=\"Posts by Rui Rodrigues\" href=\"https:\/\/www.xpand-addons.com\/intuitive-reporting\/\" target=\"_blank\" rel=\"noopener\">pubblicato nel blog della Xpand<\/a>. L&#8217;obbiettivo di questo mio post \u00e8 di riportare, in Italiano, quanto indicato. Si tratta di un Guest Post di <em><strong>Ihor Uksta<\/strong><\/em> della <em><strong>iDalko Software Developer <\/strong><\/em>,Atlassian Platinum Solution Partner in Belgio.<\/p>\n<p>Come sempre si tratta di una missione impossibile, ma la affrontiamo con coraggio e cerchiamo di riportare quanto descritto nell&#8217;originario, aggiungendo anche una serie di commenti necessari per chiarire o per meglio aiutare nella comprensione.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.newsabruzzo.it\/wp-content\/uploads\/2013\/12\/Immagine8.jpg\" \/><\/p>\n<blockquote>\n<h1>Iniziamo con le presentazioni<\/h1>\n<\/blockquote>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/idalko-blog-post-2.png\" \/><\/p>\n<p>In questo post mostreremo come usare in maniera congiunta due addon molto interessanti. Il primo lo conosciamo molto bene e si tratta di Xporter. Lo abbiamo <a title=\"Xporter for JIRA \u2013 Diamo la prima occhiata\" href=\"https:\/\/artigianodelsoftware.it\/blog\/2017\/06\/13\/xporter-for-jira-diamo-la-prima-occhiata\/\" target=\"_blank\" rel=\"noopener\">presentato<\/a> e <a title=\"Xporter for JIRA \u2013 Testiamo la versione Cloud\" href=\"https:\/\/artigianodelsoftware.it\/blog\/2017\/06\/27\/xporter-for-jira-testiamo-la-versione-cloud\/\" target=\"_blank\" rel=\"noopener\">testato gi\u00e0 in passato<\/a> e, come tutti gli addon molto interessanti, ne seguiamo sempre tutte le evoluzioni \ud83d\ude00<\/p>\n<p>Il secondo, non meno importante, \u00e8 <a title=\"Xporter for JIRA \u2013 Testiamo la versione Cloud\" href=\"https:\/\/marketplace.atlassian.com\/plugins\/com.idalko.jira.plugins.igrid\/server\/overview\" target=\"_blank\" rel=\"noopener\">Table Grid<\/a>, che permette di estendere Jira con funzionalit\u00e0 molto interessanti, che adesso andiamo a presentare:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/marketplace-cdn.atlassian.com\/files\/images\/com.idalko.jira.plugins.igrid\/35a2f083-7810-4f74-87a5-f5f73dcfc670.png\" width=\"628\" height=\"307\" \/><\/p>\n<p>Dalla precedente figura, vediamo che permette di poter inserire delle griglie che, sempre basandoci su quanti vediamo, possiamo inserire delle informazioni come le nostre spese e avere anche dei campi si totali\/subtotali etc.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/marketplace-cdn.atlassian.com\/files\/images\/com.idalko.jira.plugins.igrid\/b4d782e3-803a-40b3-825f-b73019cb1193.png\" width=\"591\" height=\"289\" \/><\/p>\n<p>Permette di aggiungere dei campi speciali, come sequence, checkbox radio button, listbox fisse o dinamiche.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/marketplace-cdn.atlassian.com\/files\/images\/1399c9bc-6c31-4156-a444-3eb6264198db.png\" width=\"641\" height=\"406\" \/><\/p>\n<p>Permette di avere delle liste a cascata: i valori che trovi nelle liste successive sono conseguenza dei valori scelti nella lista precedente.<\/p>\n<p>Come possiamo vedere si tratta di un addon molto interessante: lo testeremo\u00a0 ben bene nei prossimi post.<\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h1>Come possiamo usarli insieme?<\/h1>\n<\/blockquote>\n<p>Entriamo nel vivo di questo post \ud83d\ude42 . Il\u00a0<a title=\"Xporter for JIRA \u2013 Testiamo la versione Cloud\" href=\"https:\/\/marketplace.atlassian.com\/plugins\/com.idalko.jira.plugins.igrid\/server\/overview\" target=\"_blank\" rel=\"noopener\">Table Grid<\/a>, permette di gestire dei campi Table, come abbiamo visto in precedenza. Si tratta si una\u00a0 Driving Table, una opzione di\u00a0<a title=\"Xporter for JIRA \u2013 Testiamo la versione Cloud\" href=\"https:\/\/marketplace.atlassian.com\/plugins\/com.idalko.jira.plugins.igrid\/server\/overview\" target=\"_blank\" rel=\"noopener\">Table Grid<\/a>, che permette di inserire delle tabelle nelle issue. Nella figura seguente:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko1.png\" \/><\/p>\n<p>si tratta della tabella etichettata come\u00a0<em><strong>Developer Rate<\/strong><\/em><em>.\u00a0 <\/em>Configuriamo questa tabella come segue, come mostrato in figura:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko2.png\" \/><\/p>\n<p>Una piccola digressione sulla configurazione, che richiede una spiegazione molto pi\u00f9 dettagliata.<\/p>\n<p>Spieghiamo le seguenti propriet\u00e0:<\/p>\n<ul>\n<li><em>gd.columns<\/em>\u00a0\u2013 stabilisce la lista, separata da virgole, delle colonne<\/li>\n<li><em>gd.tablename<\/em>\u00a0\u2013 Stabilisce il nome della tabella<\/li>\n<li><em>gd.ds<\/em>\u00a0\u2013 Il nostro datasource. Nell&#8217;esempio di tratta di Jira stesso.<\/li>\n<\/ul>\n<p>For the first column, we\u2019ll define the type \u2018userlist\u2019. It means that all your Jira users will be listed in a column. Afterwards, we can limit them to only one group \u2018developers\u2019, and set it as \u2018required\u2019 when inserting a row to the table.<\/p>\n<p>Tutte le propriet\u00e0 definite nell&#8217;esempio sono reperibili\u00a0<a title=\"\" href=\"https:\/\/wiki.idalko.com\/display\/TGPD\/Configuration+Property+Index+Of+TG\" target=\"_blank\" rel=\"noopener\">al seguente indirizzo<\/a>.<\/p>\n<p>Dettagliamo meglio le caratteristiche per definire una singola colonna:<\/p>\n<p>col.developer.type=userlist<br \/>\ncol.developer.required=truecol.developer.allow.roles = developers<br \/>\ncol.developer.formatUser={username}<br \/>\ncol.developer.autocomplete=truecol.rate=Rate<br \/>\ncol.rate.type=number<\/p>\n<p>(Vi rimando al test che eseguir\u00f2 per un dettaglio pi\u00f9 completo delle singole propriet\u00e0 di una tabella, con tutte le spiegazioni: oramai vi ho abituato molto bene).<\/p>\n<p>Andiamo adesso a definire un nuovo campo, per meglio mostrare il funzionamento di questo uso congiunto<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko6.png\" \/><\/p>\n<p>andiamo a definire il valore di default<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko7.png\" \/><\/p>\n<p>con la seguente configurazione.<\/p>\n<p>gd.columns=developer,totalhours,startdate,enddate,salary<br \/>\ngd.tablename=teaminfo<br \/>\ngd.ds=jiracol.developer=Developer<br \/>\ncol.developer.type=userlist<br \/>\ncol.developer.required=true<br \/>\ncol.developer.allow.groups = developers<br \/>\ncol.developer.formatUser={username}<br \/>\ncol.developer.autocomplete=true<br \/>\ncol.developer.width=150col.totalhours=Hours Spent<br \/>\ncol.totalhours.type = number<br \/>\ncol.totalhours.formula = queries:value(\u2018jira\u2019, \u201cSELECT timeworked FROM worklog where created &gt;= \u00a0\u2018\u201d + {startdate} + \u201c\u2018 and updated &lt;= \u2018\u201d + {enddate} + \u201c\u2018 and author = \u2018\u201d +{developer} + \u201c\u2018\u201d) \/ 3600<br \/>\ncol.totalhours.width= 120<br \/>\ncol.totalhours.formatNumber = #.## h<br \/>\ncol.totalhours.summary = sumcol.startdate=From<br \/>\ncol.startdate.type=date<br \/>\ncol.startdate.defaultDate = -1wcol.enddate=Till<br \/>\ncol.enddate.type=date<br \/>\ncol.enddate.defaultDate = +1dcol.salary=Salary<br \/>\ncol.salary.type= number<br \/>\ncol.salary.formatNumber = #.## $<br \/>\ncol.salary.formula = queries:value(\u2018jira\u2019, \u201cSELECT rate FROM developer_rate_d2 where developer = \u2018\u201d + {developer} + \u201c\u2018\u201d) * {totalhours}<br \/>\ncol.salary.summary = sum<\/p>\n<p>Come possiamo osservare, si tratta di una configurazione che permette di definrie anche campi calcolati, interrogazioni al datasource definito, etc.<\/p>\n<p>Terminata la configurazione, ed inserito il nuovo campo nelle opportune screen del progetto, possiamo sfruttare subito queste nuove informazioni<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko8.png\" \/><\/p>\n<p>come mostrato in figura, ed arrivare a generare il report del team report issue, in maniera semplice e rapida.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko9.png\" \/><\/p>\n<p>ottenendo il seguente risultato<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko10.png\" \/><\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h1>Adesso che abbiamo i dati &#8230;. Report<\/h1>\n<\/blockquote>\n<p>Passiamo subito al report. Qui entra in gioco Xporter che, come gi\u00e0 indicato nei precedenti post, permette di definire il template da utilizzare<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko11.png\" \/><\/p>\n<p>utilizzando i metatag tra {}. Quindi configuriamo il template:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko12.png\" \/><\/p>\n<p>Sempre nella fase di configurazione, andiamo a definire dove il template sar\u00e0 disponibile, ovvero se lo sar\u00e0 su esportazione, su bulk function, workflow post-functions, etc.<\/p>\n<p>Manteniamoci sul semplice e andiamo ad usarlo solo nella fase di esportazione semplice della issue<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko14.png\" \/><\/p>\n<p>ottenendo il seguente risultato:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.xpand-addons.com\/wp-content\/uploads\/2018\/02\/iDalko15.png\" \/><\/p>\n<blockquote>\n<h1>Giudizio?<\/h1>\n<\/blockquote>\n<p>Una sola parola: S P E T T A C O L O. Abbiamo utilizzato la combinazione di due addon per generare un risultato spettacolare. Questo significa che possiamo generare dei report che permettono di riassumere tutta una serie di lavori in maniera &#8230;.. SEMPLICE. Non male come risultato.<\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h1>Che altro?<\/h1>\n<\/blockquote>\n<p>Possiamo aggiungere diverse altre caratteristiche:<\/p>\n<p>&nbsp;<\/p>\n<p><em>Table Grid Editor<\/em><\/p>\n<ul>\n<li>Datasource nell&#8217;esempio leggeva da Jira, ma potrebbe essere configurato per leggere i dati da un database separato ed incrociare i dati;<\/li>\n<li>Issue values placeholders to be used in formulas or SQL queries (issue id, assignee, etc.).<\/li>\n<li>Possiamo inserire dati dinamici da altri campi<\/li>\n<li>Il campo custom Table Grid Reader, che \u00e8 in sola lettura, pu\u00f2 essere compilato con query SQL.<\/li>\n<li>Campi custo Multi-Level Cascade , i quali hanno\u00a0 drop-down dinamici popolati attraverso query SQL i quali potrebbero avere delle dipendenze tra di loro. Questo \u00e8 anche compatibile con Service Desk.<\/li>\n<li>Java and Rest API sempre diponibili.<\/li>\n<\/ul>\n<p><em>Xporter<\/em><\/p>\n<ul>\n<li>Esportare in formato PDF, XLSX, PNG, DOC, CSV ed altri ancora.<\/li>\n<li>Esportare altre informazioni quali linked issues, sub-tasks, commenti, worklogs, allegati ed\u00a0<a title=\"\" href=\"https:\/\/confluence.xpand-addons.com\/display\/public\/XPORTER\/Working+with+Templates\">altro ancora<\/a>.<\/li>\n<li>Generare documentazione basata su un insieme di pi\u00f9 issue.<\/li>\n<li>Creare ed inviare documenti via mail verso un file server.<\/li>\n<li>Post-functions to trigger export event on issue transitions.<\/li>\n<\/ul>\n<p>Come potete vedere abbiamo tantissime possibilit\u00e0 di espandere questo esempio al fine di coprire le nostre necessit\u00e0.<\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h1>Conclusioni<\/h1>\n<\/blockquote>\n<p>Abbiamo visto un uso congiunto di due addon e di come ci possono aiutare nella vita di tutti i giorni. Nei prossimi post cercheremo di mostrare molto pi\u00f9 nel dettaglio altri utilizzi congiunti \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h1>Reference<\/h1>\n<\/blockquote>\n<p>Vi riporto l&#8217;articolo originario della portoghese XPand, che <a title=\"\" href=\"https:\/\/www.xpand-addons.com\/intuitive-reporting\/\" target=\"_blank\" rel=\"noopener\">potete reperire al seguente indirizzo<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"clearfix\"><span class='ldc-ul_cont' onclick=\"alter_ul_post_values(this,'92290','like')\" >Likes<img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/like-dislike-counter-for-posts-pages-and-comments\/images\/up.png\" \/>(<span>0<\/span>)<\/span><span class='ldc-ul_cont' onclick=\"alter_ul_post_values(this,'92290','dislike')\" >Dislikes<img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/like-dislike-counter-for-posts-pages-and-comments\/images\/down.png\" \/>(<span>0<\/span>)<\/span><\/div>","protected":false},"excerpt":{"rendered":"<p>Uso congiunto di Addons In questo post andremo ad affrontare un argomento molto interessante : come usiamo in manieta congiunta pi\u00f9 addons. Si tratta di una questione molto importante in quanto, in determinati ambiti\/necessit\u00e0, si vuole utilizzare due funzionalit\u00e0 di<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[3,180,14,15,16,17,154,22,147,119],"tags":[30,34,58,70,71,74,75,76,89,131],"_links":{"self":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/92290"}],"collection":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/comments?post=92290"}],"version-history":[{"count":7,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/92290\/revisions"}],"predecessor-version":[{"id":92389,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/92290\/revisions\/92389"}],"wp:attachment":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/media?parent=92290"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/categories?post=92290"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/tags?post=92290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}