{"id":88443,"date":"2015-09-15T08:44:22","date_gmt":"2015-09-15T07:44:22","guid":{"rendered":"https:\/\/artigianodelsoftware.wordpress.com\/?p=88443"},"modified":"2015-09-15T08:44:22","modified_gmt":"2015-09-15T07:44:22","slug":"jira-workflow-approfondimenti","status":"publish","type":"post","link":"https:\/\/artigianodelsoftware.it\/blog\/2015\/09\/15\/jira-workflow-approfondimenti\/","title":{"rendered":"JIRA Workflow &#8211; Approfondimenti"},"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\/88443?print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\"><\/a><\/div><blockquote>\n<h1>Approfondiamo l&#8217;argomento<\/h1>\n<\/blockquote>\n<p>In questo post andremo ad approfondire l&#8217;argomento <em><strong>Workflow<\/strong><\/em>, gi\u00e0 trattato in:<\/p>\n<ul>\n<li><a href=\"https:\/\/artigianodelsoftware.wordpress.com\/2015\/07\/16\/workflow-jira-first-look\/\" target=\"_blank\">First look<\/a><\/li>\n<li><a href=\"https:\/\/artigianodelsoftware.wordpress.com\/2015\/07\/22\/workflow-su-jira-creiamoci-il-nostro-workflow\/\" target=\"_blank\">Creiamoci il nostro Workflow<\/a><\/li>\n<\/ul>\n<p>Cercheremo, in questa prima fase, di capire che funzionalit\u00e0 abbiamo a disposizione, cercando in una seconda fase di applicarle a dei casi reali.<\/p>\n<blockquote>\n<h1><a href=\"https:\/\/confluence.atlassian.com\/jira\/files\/185729632\/workflow_designer_anno-status.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/confluence.atlassian.com\/jira\/files\/185729632\/workflow_designer_anno-status.png\" alt=\"\" width=\"591\" height=\"387\" \/><\/a>Nel dettaglio<\/h1>\n<\/blockquote>\n<p>Come JIRA Administrator \u00e8 possibile operare le seguenti azioni su di un Workflow:<\/p>\n<ul>\n<li><a href=\"https:\/\/confluence.atlassian.com\/jira\/advanced-workflow-configuration-317196666.html#Advancedworkflowconfiguration-triggers\">Triggers<\/a> &#8211;\u00a0 Si tratta di \u00a0impostare delle azioni specifiche da eseguire in determinate condizioni \/ transazioni.<\/li>\n<li><a href=\"https:\/\/confluence.atlassian.com\/jira\/advanced-workflow-configuration-317196666.html#Advancedworkflowconfiguration-conditions\">Conditions<\/a> &#8211; possibilit\u00e0 di poter impostare delle condizioni per poter eseguire determinate transazioni.<\/li>\n<li><a href=\"https:\/\/confluence.atlassian.com\/jira\/advanced-workflow-configuration-317196666.html#Advancedworkflowconfiguration-validators\">Validators<\/a> &#8211; intesa come validazione dei dati, affinch\u00e9 rispettino determinate condizioni<\/li>\n<li><a href=\"https:\/\/confluence.atlassian.com\/jira\/advanced-workflow-configuration-317196666.html#Advancedworkflowconfiguration-postfunctions\">Post functions<\/a> &#8211; intesa come l&#8217;esecuzione di operazioni dopo che una issue \u00e8 passata da uno stato all&#8217;altro<\/li>\n<li><a href=\"https:\/\/confluence.atlassian.com\/jira\/advanced-workflow-configuration-317196666.html#Advancedworkflowconfiguration-transitionproperties\">Properties<\/a> &#8211; si tratta di coppie di valori che possono essere usate per estendere le propriet\u00e0, come informazioni aggiuntive del workflow.<\/li>\n<\/ul>\n<p>Andiamo ad esaminare nel dettaglio le varie componenti.<\/p>\n<p>&nbsp;<\/p>\n<h3>Triggers<\/h3>\n<p>Questi strumenti sono utilizzati prevalentemente per integrare determinate azioni del workflow con gli strumenti di sviluppo quali\u00a0<strong>Stash<\/strong> o<em><strong>\u00a0FishEye\/Crucible.\u00a0<\/strong><\/em>La seguente tabella riassume quali azioni possono essere eseguite.<\/p>\n<p><a href=\"https:\/\/artigianodelsoftware.files.wordpress.com\/2015\/09\/wf-03-01.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-88458\" src=\"https:\/\/artigianodelsoftware.files.wordpress.com\/2015\/09\/wf-03-01.png\" alt=\"WF-03-01\" width=\"366\" height=\"309\" srcset=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/uploads\/2015\/09\/wf-03-01.png 366w, https:\/\/artigianodelsoftware.it\/blog\/wp-content\/uploads\/2015\/09\/wf-03-01-300x253.png 300w\" sizes=\"(max-width: 366px) 100vw, 366px\" \/><\/a><\/p>\n<p>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. \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<h3>Conditions<\/h3>\n<p>Si tratta condizioni che possono essere impostate nelle varie transazioni di stato del Workflow. Possiamo, ade esempio, impostare le seguenti condizioni:<\/p>\n<ul>\n<li>Consentire al solo\u00a0<em><strong>reporter<\/strong><\/em> 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;<\/li>\n<li>Consentire ad un insieme di utenti di poter eseguire una transizione di stato. SI tratta di una condizione molto rigida anche questa.<\/li>\n<li>Poter eseguire una transizione di stato solo dopo aver eseguito la commit.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/confluence.atlassian.com\/jira\/files\/317196666\/add_parameters.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/confluence.atlassian.com\/jira\/files\/317196666\/add_parameters.png\" alt=\"\" width=\"475\" height=\"178\" \/><\/a><\/p>\n<h3>Validators<\/h3>\n<p>Con questa funzionalit\u00e0, riusciamo ad impostare una\u00a0<em>validazione<\/em> 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.<\/p>\n<p>In questo modo possiamo accertarci di aver inserito correttamente tutte le informazioni, nell&#8217;ambito di una issue. Possiamo finalmente avere delle issue complete in ogni fase della lavorazione \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<h3>Post functions<\/h3>\n<p>Si tratta di operazioni, di corollario, che possono essere impostate per essere eseguite dopo che la transazione di stato \u00e8 stata eseguita. In questo modo possiamo impostare delle funzionalit\u00e0 aggiuntive. SI tratta di una funzionalit\u00e0 non indifferente \ud83d\ude42<\/p>\n<p>Possiamo settare lo stato di una\u00a0<em>linked issue<\/em>, in modo da sbloccarla in &#8230; automatico. Questo sicuramente ci pu\u00f2 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&#8217;uno dall&#8217;altro.<\/p>\n<p>Possiamo anche andare a settare un campo in funzione del contenuto di un&#8217;altro. Le possibilit\u00e0 sono molteplici. \ud83d\ude00<\/p>\n<p>&nbsp;<\/p>\n<h3>Properties<\/h3>\n<p>Si tratta di coppie di valori (codice\/valore) che sono usate per estendere le propriet\u00e0 di un workflow.<\/p>\n<p><a href=\"https:\/\/confluence.atlassian.com\/jira\/files\/317196666\/workflow_trans_properties_panel.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/confluence.atlassian.com\/jira\/files\/317196666\/workflow_trans_properties_panel.png\" alt=\"\" width=\"564\" height=\"227\" \/><\/a><\/p>\n<p>Un possibile uso pu\u00f2 essere quello di impostare delle restrizioni in base ai valori delle properties impostate.<\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h1>Conclusioni<\/h1>\n<\/blockquote>\n<p>In questo post siamo andati un in profondit\u00e0 sui Workflow. Abbiamo visto come \u00e8 possibile estendere queste nuove funzionalit\u00e0, come poter impostare diverse condizioni, validazioni ed estendere il Workflow con nuove propriet\u00e0. Nei prossimi post andremo a vedere un esempio di utilizzo di queste, applicandoli a situazioni gi\u00e0 descritte.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"clearfix\"><span class='ldc-ul_cont' onclick=\"alter_ul_post_values(this,'88443','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,'88443','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>Approfondiamo l&#8217;argomento In questo post andremo ad approfondire l&#8217;argomento Workflow, gi\u00e0 trattato in: First look Creiamoci il nostro Workflow Cercheremo, in questa prima fase, di capire che funzionalit\u00e0 abbiamo a disposizione, cercando in una seconda fase di applicarle a dei<\/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,14],"tags":[34,35,56,58,70,82],"_links":{"self":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/88443"}],"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=88443"}],"version-history":[{"count":0,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/88443\/revisions"}],"wp:attachment":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/media?parent=88443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/categories?post=88443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/tags?post=88443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}