Demandes liées et mapping de champs : la solution avec Exocet pour JIRA


Publié par
Jérémie MARTINEZ

12 mai 2014

Si vous avez déjà essayé de mettre en place une notion de hiérarchie entre vos demandes dans JIRA, vous vous êtes certainement heurté aux limitations du système de sous-tâches natif de l’outil.

En effet, dans JIRA, vous n’avez pas la possibilité de mapper automatiquement les champs de vos demandes « mères » avec leurs sous-tâches.
Résultat, vous vous retrouvez à saisir manuellement à de multiples reprises le contenu hérité d’un champ lors de la création de demandes liées. Fastidieux, non ?

Exocet – notre add-on, pas le missile – répond à ces problématiques en vous permettant de créer des demandes liées de manière plus ou moins avancée :copie simple, opérations multiples, « mapping » personnalisé etc.

Avec sa dernière version, Exocet rend la Copie/Creation plus simple et efficace que jamais :

  • Vous pouvez créer une demande liée en un clic depuis une demande, sans avoir à passer par le menu déroulant « Plus d’actions »
  • Vous pouvez afficher les données réellement utiles, et seulement celles là : champs personnalisés, images, transitions disponibles… ce dont vos utilisateurs ont besoin pour traiter les demandes efficacement.

Voyons maintenant en détail comment ça marche.

Créer et  lier des demandes en un seul clic 

Pour vous permettre de créer des demandes directement depuis la vue de la demande sans passer par des menus déroulants surchargés, vous pouvez désormais choisir que vos opérations apparaissent sous formes de boutons.

Configuration

Dans l’administration d’Exocet, un nouveau menu « Accessibilité de l’opération » apparaît désormais dans la pop up de création d’une opération :

Le nouveau menu

Le nouveau menu « Accessibilité de l’opération »

En choisissant seulement « Menu Actions » vous garderez le même comportement qu’auparavant mais lorsque l’option « Vue de la Demande » sera cochée, l’opération apparaîtra sous forme de bouton directement dans la demande.

Résultat

Lorsque l’option « Vue de la demande » est cochée, les opérations disponibles apparaissent désormais directement :

Les nouveaux boutons d'opération dans la vue de Demande

Les nouveaux boutons d’opération dans la vue de Demande

En cas d’opérations multiples, il est possible de choisir dans le menu « Général » le nombre maximal d’opérations affichées directement dans la demande. Les opérations en plus seront disponibles dans un menu déroulant. (Nous avons repris le même principe que pour les transitions de workflow).

Les Opérations peuvent se trouver dans un menu déroulant

Les Opérations peuvent se trouver dans un menu déroulant

 

Une vue personnalisée pour les demandes liées

Afin de sortir de la très simpliste liste de demandes liées et de la très générique liste de sous-tâches, le panel « Données avancées » d’Exocet vous permet de choisir quelles données de vos demandes liées vous allez choisir d’afficher.

Configuration

Dans l’administration d’Exocet, un nouveau panel « Données Avancées » a fait son apparition. Vous pouvez désormais y créer/modifier/supprimer des « Tableaux ».

Le menu de gestion des tableaux d'Exocet

Le menu de gestion des tableaux d’Exocet

Dans Exocet, un » Tableau » est composé d’un titre, d’une requête « JQL », d’un ensemble de colonnes et, éventuellement de champs calculés. Ce sont ces tableaux sous forme de panels que vous retrouverez ensuite dans la demande.

La création d'un tableau dans Exocet

La création d’un tableau dans Exocet

Il est possible d’ajouter n’importe quel champ natif ou personnalisé en tant que colonne du Tableau.

Un lien envoyant vers la demande  est disponible dans le panel  lorsque le trombone est coché.

Il est primordial d’écrire une requête juste. Pour cela, vous pourrez vous aider du Navigateur de Demandes.

Résultat

Dans la vue d’une demande, tous les tableaux ayant au moins une demande correspondant à la requête JQL en fonction de la demande courante seront affichés :

Le panel données avancées

Le panel données avancées

En affichant la colonne sous-tâche, il devient alors possible d’avoir une vision sur 3 niveaux de demandes. La colonne Σ Progrès affichera alors la progression du travail pour la demande et ses sous-tâches.
La roue crantée située à droite de chaque demande apparaît quand une ou plusieurs transitions est/sont disponible(s) pour l’utilisateur.
Il est possible d’afficher plusieurs tableaux dans une même demande.

En plus de remonter les données des fichées liées dans une fiche mère, nous allons pouvoir les « utiliser ». En effet, durant la configuration d’un tableau il devient également possible de sélectionner un ou plusieurs « Scripted field » (Fourni par Script Runner) afin, par exemple de calculer une somme différenciée en fonction de la valeur d’un autre champ.

Exemple :

Plaçons nous dans le cas où, depuis une demande « mère », nous remontons dans le panel « Données Avancées » 3 demandes. Ces demandes contiennent un champ numérique nommé « Prix » et un champ radio nommé « Criteria » :

Liste de demandes origniales

Liste de demandes origniales

Pour notre exemple, nous souhaitons calculer la somme des prix seulement quand le critère associé au prix est « Yes » :

1. Créer un champ de type Scripted Field « Total Yes »

2. Le configurer avec un code de la forme suivante :

<code>import com.atlassian.jira.ComponentManager</code>import com.atlassian.plugin.PluginAccessor</p>
<p>import java.util.HashMap
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption
import com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType</p>
<p>enableCache = {-> false}</p>
<p>PluginAccessor pluginAccessor = componentManager.getPluginAccessor();
Class dataPanelScoringServiceClass = pluginAccessor.getClassLoader().findClass("com.valiantys.jira.plugins.exocet.service.DataPanelScoringService");</p>
<p>def dataPanelScoringService = componentManager.getOSGiComponentInstanceOfType(dataPanelScoringServiceClass);
def customFieldManager = ComponentManager.getInstance().getCustomFieldManager();</p>
<p>def prix = customFieldManager.getCustomFieldObjectByName("Prix");
def criteria = customFieldManager.getCustomFieldObjectByName("Criteria");</p>
<p>Double sommePrix = 0;
Double sommeNull = 0;</p>
<p>for (returnedIssue in dataPanelScoringService.getSetOfIssuesByCfName("Total Yes",issue))
{
if(returnedIssue.getCustomFieldValue(criteria)?.value.equals("Yes")){
sommePrix +=returnedIssue.getCustomFieldValue(prix);
}
}</p>
<p>if(sommePrix == 0)
return sommeNull;
else
return sommePrix;
</code>

3. Associer  le champ "Total Yes" au tableau :

Associer un Scripted Field à un tableau

Associer un Scripted Field à un tableau

4. Mettre à jour la demande et vérifier que le calcul est exact :

Le calcul est effectué dans le volet

Le calcul est effectué dans le volet

Conclusion

Avec ces nouvelles fonctionnalités nous avons voulu rendre Exocet plus séduisant afin qu'il réponde mieux à vos attentes: créer des demandes liées et personnaliser ensuite leurs affichages dans une demande "mère" devient un jeu d'enfant et vous permettra d'utiliser JIRA plus simplement.

Exocet n'attend désormais plus que vous l'essayiez... pour l'adopter.