Modifier le workflow de mantis Bugtracker

Cet article est assez ancien, malgré toute l'attention que j' apporte à mes contenus il est possible que celui-ci ne soit plus d'actualité.
N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.

En complément de mes précédents articles sur ce sujet ( Ajouter une étape dans le workflow MantisMantis bugtracker : ajouter un statut personnalisée sur la page « Mon affichage » ) voici un récapitulatif global sur le changement et l’optimisation  du workflow sur mantis bugtracker.
Si vous souhaitez supprimer une étape du worklow mantis, c’est par ici

Pour information voici le workflow standard de Mantis Bugtracker :
Workflow Mantis standard

Voici le workflow que je souhaite obtenir :worklow-modifie Pour obtenir cela voici les modifications à apporter pour mettre en place ces modifications

Modification des fichiers

Dans le fichier config_inc.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#Nouveau Workflow Mantis
$g_status_enum_string                = '10:new,20:feedback,50:assigned,55:waiting_internal_validation,60:waiting_customer_validation,65:waiting_for_production,80:resolved,90:closed';
 
#Définition des changements de statuts pour les statuts standards
$g_status_enum_workflow[NEW_]='20:feedback,50:assigned,80:resolved';
$g_status_enum_workflow[FEEDBACK] ='10:new,50:assigned,55:waiting_internal_validation,60:waiting_customer_validation,65:waiting_for_production,80:resolved';
$g_status_enum_workflow[ASSIGNED] ='20:feedback,55:waiting_internal_validation,60:waiting_customer_validation,65:waiting_for_production,80:resolved,90:closed';
$g_status_enum_workflow[RESOLVED] ='50:assigned,90:closed';
$g_status_enum_workflow[CLOSED] ='50:assigned';
 
#Définition des couleurs des nouveaux statuts
$g_status_colors['waiting_internal_validation'] = '#F3E2A9';
$g_status_colors['waiting_customer_validation'] = '#E0701A';
$g_status_colors['waiting_for_production'] = '#6B67F2';
 
#Definition des changements de statuts possibles pour nos nouveaux statuts
$g_status_enum_workflow[WAITING_INTERNAL_VALIDATION] ='20:feedback,50:assigned,60:waiting_customer_validation,65:waiting_for_production,80:resolved,90:closed';
$g_status_enum_workflow[WAITING_CUSTOMER_VALIDATION] ='20:feedback,50:assigned,55:waiting_internal_validation,65:waiting_for_production,80:resolved,90:closed';
$g_status_enum_workflow[WAITING_FOR_PRODUCTION] ='20:feedback,80:resolved,90:closed';
 
#Paramètres pour la page my_views.php
$g_bug_waiting_internal_validation_status_threshold = WAITING_INTERNAL_VALIDATION;
$g_bug_waiting_customer_validation_status_threshold = WAITING_CUSTOMER_VALIDATION;
$g_bug_waiting_for_production_status_threshold = WAITING_FOR_PRODUCTION;

Dans le fichier custom_constant_inc.php

1
2
3
4
5
#Nouveaux Status de mantis
# ( La numérotation des statuts ne se suis pas, au cas ou on souhaiterais rajouter d'autres statuts intermédiaires ultérieurement )
define('WAITING_INTERNAL_VALIDATION',55); #attente de validation interne
define('WAITING_CUSTOMER_VALIDATION',60); #attente de validation client
define('WAITING_FOR_PRODUCTION',65); #attente de mise en production

Dans le fichier custom_strings_inc.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 #Nouveau Workflow Mantis traduit en Français
 $s_status_enum_string = '10:Nouveau,20:Commentaire,50:affecté,55:Attente validation interne,60:Attente validation client,65:Atttente mise en production,80:Résolu ,90:Fermé';
 
 #Titre des boutons lors du changement de statut
 $s_waiting_internal_validation_bug_button = 'En attente de validation interne';
 $s_waiting_customer_validation_bug_button = 'En attente de validation client';
 $s_waiting_for_production_bug_button = 'En attente de Mise en production';
 
 #Titre des statuts dans le listing des bugs
 $s_waiting_internal_validation_bug_title = 'En attente de validation interne';
 $s_waiting_customer_validation_bug_title = 'En attente de validation client';
 $s_waiting_for_production_bug_title = 'En attente de Mise en production';
 
 #Sujet de l'email envoyé pour notifier le changement de statut
 $s_email_notification_title_for_status_bug_waiting_internal_validation = "Le bug suivant est en attente de validation interne";
 $s_email_notification_title_for_status_bug_waiting_customer_validation = "Le bug suivant est en attente de validation client";
 $s_email_notification_title_for_status_bug_waiting_for_production = "Le bug suivant est en attente de mise en production";
 
 #Titres pour la page my_view
 $s_my_view_title_waiting_internal_validation = "En attente de validation interne";
 $s_my_view_title_waiting_customer_validation  = "En attente de validation client";
 $s_my_view_title_waiting_for_production = "En attente de Mise en production";

Il est ensuite nécessaire de modifier le fichier système my_view_inc.php pour insérer les nouveaux filtres.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# H-hennes : Nouveaux Status sur la page my_view
#En attente de validation interne
$t_bug_waiting_internal_validation_status_threshold = config_get('bug_waiting_internal_validation_status_threshold');
$c_filter['waiting_internal_validation'] = array(
	FILTER_PROPERTY_CATEGORY => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_SEVERITY_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_STATUS_ID => Array(
	'0' => $t_bug_waiting_internal_validation_status_threshold,
	),
	FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed,
	FILTER_PROPERTY_REPORTER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HANDLER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_RESOLUTION_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_BUILD => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_VERSION => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HIDE_STATUS_ID => Array(
	'0' => $t_hide_status_default,
	),
	FILTER_PROPERTY_MONITOR_USER_ID => Array(
	'0' => META_FILTER_ANY,
	),
);
$url_link_parameters['waiting_internal_validation'] = FILTER_PROPERTY_STATUS_ID . '=' . $t_bug_waiting_internal_validation_status_threshold . '&' . FILTER_PROPERTY_HIDE_STATUS_ID . '=' . $t_bug_waiting_internal_validation_status_threshold;
 
#En attente de validation client
$t_bug_waiting_customer_validation_status_threshold = config_get('bug_waiting_customer_validation_status_threshold');
$c_filter['waiting_customer_validation'] = array(
	FILTER_PROPERTY_CATEGORY => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_SEVERITY_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_STATUS_ID => Array(
	'0' => $t_bug_waiting_for_prod_status_threshold,
	),
	FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed,
	FILTER_PROPERTY_REPORTER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HANDLER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_RESOLUTION_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_BUILD => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_VERSION => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HIDE_STATUS_ID => Array(
	'0' => $t_hide_status_default,
	),
	FILTER_PROPERTY_MONITOR_USER_ID => Array(
	'0' => META_FILTER_ANY,
	),
);
$url_link_parameters['waiting_customer_validation'] = FILTER_PROPERTY_STATUS_ID . '=' . $t_bug_waiting_customer_validation_status_threshold . '&' . FILTER_PROPERTY_HIDE_STATUS_ID . '=' . $t_bug_waiting_customer_validation_status_threshold;
 
#En attente de mise en production
$t_bug_waiting_for_production_status_threshold = config_get('bug_waiting_for_production_status_threshold');
$c_filter['waiting_for_production'] = array(
	FILTER_PROPERTY_CATEGORY => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_SEVERITY_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_STATUS_ID => Array(
	'0' => $t_bug_waiting_for_production_status_threshold,
	),
	FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed,
	FILTER_PROPERTY_REPORTER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HANDLER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_RESOLUTION_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_BUILD => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_VERSION => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HIDE_STATUS_ID => Array(
	'0' => $t_hide_status_default,
	),
	FILTER_PROPERTY_MONITOR_USER_ID => Array(
	'0' => META_FILTER_ANY,
	),
);
$url_link_parameters['waiting_for_production'] = FILTER_PROPERTY_STATUS_ID . '=' . $t_bug_waiting_for_production_status_threshold . '&' . FILTER_PROPERTY_HIDE_STATUS_ID . '=' . $t_bug_waiting_for_production_status_threshold;
 
#H-hennes : Fin des nouveaux status sur la page my_view

L’ensemble des fichiers sont à présents modifiés.

Affichage de la page my_view

Il est à présent possible d’affiner la page « my_view » en fonction des utilisateurs, de leur profil et des projets.
Voici 3 exemples d’affichage pour les profils suivants :

  • Client
  • Chef de projet
  • Développeur

Ces données sont à insérer dans « Administration / Gérer la configuration ».
Sélectionner ensuite l’utilisateur et le projet souhaité.

La clé de configuration est my_view_boxes
( Attention à ne pas mettre de « ; » à la fin du tableau de configuration )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#Configuration Client
array ('reported' => 1,
	   'waiting_customer_validation' => 2
	   'feedback' => 3,
	   'resolved' => 4,
	   'assigned' => 0,
	   'unassigned' => 0,
	   'recent_mod' => 0,
	   'monitored' => 0,
	   'confirmed' => 0,
	   )
 
#Configuration Chef de projet Interne
array ( 
	   'reported' => 1,
	   'unassigned' => 2,
	   'waiting_internal_validation' => 3,
	   'feedback' => 4,
	   'waiting_customer_validation' => 5,
	   'assigned' => 6,
	   'waiting_for_production' => 7,
	   'resolved' => 8,
	   'monitored' => 9,
	   'recent_mod' => 10,
	   'confirmed' => 0,
	   )
 
#Configuration Développeur
array ( 
	   'assigned' => 1,
	   'unassigned' => 2,
	   'waiting_internal_validation' => 3,
	   'waiting_customer_validation' => 4,
	   'feedback' => 5,
	   'waiting_for_production' => 6,
	   'resolved' => 7,
	   'monitored' => 8,
	   'reported' => 9,
	   'recent_mod' => 10,
	   'confirmed' => 0,
	   )

Et voila nous en avons fini avec l’optimisation de mantis bugtracker.
Pour ceux qui le souhaite, vous pouvez télécharger directement les fichier modifiés :mantis-changement-worflow
Attention à bien remettre vos paramètres de base de données dans le fichier config_inc.php

23 réflexions sur “Modifier le workflow de mantis Bugtracker”

  1. Bonjour,

    Vraiment très bien ce tuto! tout a fait ce que je cherche !
    Par contre malheureusement j’ai un petit pb, je ne vois nulpart les nouveaux status et mes anciens status 30 (ack) et 40 (confirmed) sont toujours présents, a la fois dans la liste des status en bas et toujours dans les listes de selection.
    Avez vous une idée pour résoudre ce pb??

    Merci beaucoup!

    Greg

    1. Bonjour,
      Afin de pouvoir vous aider il me faudrait un peu plus de détails :

      • Quelle version de mantis avez-vous testé ?
      • Nouvelle installation ou un bugtracker existant ?
      • Avez vous téléchargé le fichier en fin d’article ou adapté le fonctionnement ?

      Pour ma part j’ai testé sur une nouvelle installation de mantis 1.2.15 sans problèmes.

  2. Merci beaucoup pour votre réponse rapide! Je suis en version 1.2.8.

    J’ai fait les deux méthodes dans le doute, en premier modifier les fichiers « a la mano » et vu que ca ne fonctionnait pas, j’ai utilisé le rar en PJ de l’article. Mais même résultats.

    Je vais peut etre essayer de monter en version 1.2.15 dans ce cas…

  3. Je viens de passer en 1.2.15. Mais toujours ce problème malheureusement :/
    Par contre je viens de regarder le workflow dans l’admin, et la par magie les nouveaux status sont apparut. J’ai donc pu paramétrer le workflow car rien n’était définit (rien de cocher sur les nouveaux status).
    Et maintenant c’est bon!

    Merci beaucoup pour ce tuto et ton aide!

    1. Dans le cas ou le bugtracker comporte déjà des éléments, il est donc nécessaire de modifier le workflow dans l’administration.
      Je n’avais pas rencontré ce problème comme je l’avais testé sur une plateforme vierge.

      Merci de tes précisions 🙂

  4. Bonjour,
    merci pour le tuto.

    Juste une précision pour ceux qui sont allez trop vite comme moi en le suivant (j’ai négligé la partie traduction dans custom_strings_inc.php et je me suis retrouvé avec un workflow ayant des états incochables, car avec des libellés absents dans mes 2 langues français et anglais): le workflow personnalisé est en fait stocké dans la table mantis_config_table.value: ça indique le nombre d’états (« a:… »), suivi des index de chaque état de départ avec ses états possibles d’arrivée, chaque état étant séparer du suivant par un point-virgule –> un UPDATE de ce champ permet de créer le workflow voulu (avec tous les libellés d’états), et enfin de cocher ce qu’il en est vraiment.

    Cordialement.

  5. Bonjour

    Nous sommes en 1.3 et pour le fichier custom_strings_inc.php, nous n’avons modifié que le $s_status_enum_string et pas les autres variables ( $s_waiting_internal_validation_bug_button, $s_waiting_internal_validation_bug_title …), ni le fichier my_view_inc.php.

    Et pourtant tout fonctionne …

    Par ailleurs, pourquoi certaines variables sont en majuscule et d’autres en minuscule ? Nous, nous avons même mis des noms différents dans les 3 fichiers et ça ne pose pas de pb, par exemple recette_presta dans config_inc et dans custom_constants_inc alors que nous avons mis recette presta (sans _) dans customs_strings_inc. Et c’est bien le « sans _ » qui s’affiche partout.

    1. Bonjour,

      Merci pour votre retour.
      Cet article est assez ancien et la version 1.3 de mantis apporte de nombreux changements.
      Je n’ai pas restesté ce processus qui a sans doute du être simplifié depuis.

      Cordialement,
      Hervé

  6. Bonjour
    Un grand merci pour ce tuto très clair. J’ai réalisé toutes les étapes et c’est presque tout bon.
    J’ai juste un souci sur la dernière partie concernant l’affichage des bugs dans chacune des box.
    J’ai bien toutes mes box correspondant à tous mes statuts mais le filtre ne se fait pas correctement. Tous les bugs se retrouvent affichés dans chacune des box quelque soit so statut.
    J’ai installé MantisBT 2.0
    Quelqu’un a t’il déjà eu ce problème.
    Merci

    1. Bonjour,

      Il est possible que ce point ait été changé sur la version 2.0 de mantis.
      Je n’ai pour l’instant pas eut le temps de tester ces changements sur cette version.
      J’essaierais de mettre à jour l’article en conséquence.

      Cordialement,
      Hervé

  7. En version 2.0.0, le code permettant le filtrage des bugs dans my_view_inc.php ont changé.
    Dans les blocs de code définissant les filtres:

    $c_filter[‘waiting_internal_validation’] = array(
    FILTER_PROPERTY_CATEGORY => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    FILTER_PROPERTY_SEVERITY_ID => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    FILTER_PROPERTY_STATUS_ID => Array(
    ‘0’ => $t_bug_waiting_internal_validation_status_threshold,
    ),
    FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed,
    FILTER_PROPERTY_REPORTER_ID => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    FILTER_PROPERTY_HANDLER_ID => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    FILTER_PROPERTY_RESOLUTION_ID => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    FILTER_PROPERTY_PRODUCT_BUILD => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    FILTER_PROPERTY_PRODUCT_VERSION => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    FILTER_PROPERTY_HIDE_STATUS_ID => Array(
    ‘0’ => $t_hide_status_default,
    ),
    FILTER_PROPERTY_MONITOR_USER_ID => Array(
    ‘0’ => META_FILTER_ANY,
    ),
    );
    $url_link_parameters[‘waiting_internal_validation’] = FILTER_PROPERTY_STATUS_ID . ‘=’ . $t_bug_waiting_internal_validation_status_threshold . ‘&’ . FILTER_PROPERTY_HIDE_STATUS_ID . ‘=’ . $t_bug_waiting_internal_validation_status_threshold;

    ——–

    FILTER_PROPERTY_CATEGORY devient FILTER_PROPERTY_CATEGORY_ID
    FILTER_PROPERTY_SEVERITY_ID devient FILTER_PROPERTY_SEVERITY
    FILTER_PROPERTY_STATUS_ID devient FILTER_PROPERTY_STATUS
    FILTER_PROPERTY_RESOLUTION_ID devient FILTER_PROPERTY_RESOLUTION
    FILTER_PROPERTY_PRODUCT_BUILD devient FILTER_PROPERTY_BUILD
    FILTER_PROPERTY_PRODUCT_VERSION devient FILTER_PROPERTY_VERSION

    Et aussi,
    $url_link_parameters qui devient $t_url_link_parameters

    Et là, tout fonctionne

    Merci encore pour ce tuto ( le plus complet du Web … y compris les tutos en anglais)

    1. Génial merci pour ces informations et votre analyse, ravi de voir que cet article peut être utile 🙂
      Ceci devrait aider ceux qui sont bloqués avec Mantis BT 2.0 !
      J’espère pouvoir m’y mettre bientôt.

      Cordialement,
      Hervé

  8. Bonjour, je suis sous le version 2.0 et j’ai un problème, mon status c’est bien ajouter à la liste des statut dans les filtre et son workflow est configurer. Mais il n’est pas présent dans la liste des statut lors de modification … Quelqu’un aurais la solution ? Merci.

  9. les statuts accessibles depuis le formulaire de modification sont définis grace à la variable
    g_status_enum_workflow
    En théorie, pour un bug à un statut donné, vous devriez pouvoir accéder à tous les status présents dans
    $g_status_enum_workflow[VOTRE_STATUT]=’XX:xxxx,YY:yyyy’;
    C’est à dire que vous devriez pouvoir sélectionner xxxx et yyyy

  10. Bonjour, merci pour ta réponse mais si ce que tu dis est correct j’ai un problème car j’ai bien configurer cette ligne et j’ai aussi essayer avec les autres statuts mais aucun changement. Les seules changements que je vois ce trouve dans $g_satus_enum_string, où je peux ajouter ou supprimer des statuts mais sans que ça affecte la liste dans le formulaire de modification.

  11. Bonjour,

    Je travail acutellement sur mantis bt. On m’a demandé de faire un workflow par catégorie. J’aimerai si c’est possible et si oui comment faire. Par projet pas de souci j’y arrive.
    Merci de votre aide

  12. Merci de votre réponse rapide.
    En faite le probléme que j’ai c’est que dans les workflows que j’utilise donc 50 projets différents un seul projet n’affiche pas le bon workflow et je ne comprend pas pourquoi. impossible de modifier le statut d’un bug

  13. Bonjour,

    Est-il possible d’avoir deux workflow différent au sein de Mantis ?
    En effet je souhaiterais avoir un Workflow pour mon projet 1 et un deuxième workflow ( différent du premier ) pour mon projet 2.

    cordialement

    1. Bonjour Romain,

      C’est tout à fait possible effectivement.
      Cet article date un peu et ne précise pas forcément l’approche la plus pratique.
      Il reste d’actualité pour la configuration des informations des différents status.

      Pour avoir des workflow différents pour 2 projets il vous suffit de redédinir les valeurs :
      status_enum_string et status_enum_workflow via la configuration dans l’administration 🙂

      Cordialement,
      Hervé

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.