Épigraphe
"Si je mettais les lèvres de Nikanor Ivanovich sur le nez d'Ivan Kuzmich, je prendrais un fanfaron comme celui de Baltazar Baltazarych et, peut-être, ajouterais l'adversité d'Ivan Pavlovich à cela, je déciderais immédiatement." N.V. Gogol. Se marier.

Il existe deux outils de gestion de projet bien connus et très différents: MS Project et Redmine. Chacun d'eux a ses propres mérites, et ces mérites pourraient parfaitement se compléter.
Je veux attirer votre attention sur un petit utilitaire appelé P2R, qui permet sans aucune installation et avec un minimum de paramètres d'assurer la synchronisation en ligne des projets dans MS Project et Redmine. Il est disponible sur .
À quoi sert Project:
- Il est pratique de modifier le projet dans son ensemble en mode document - une feuille de calcul. C'est également un avantage que plusieurs projets puissent être rapidement combinés en un projet consolidé et considérés dans leur ensemble. (Dans Redmine, les tâches du projet sont modifiées une à la fois via le formulaire de tâche).
- Toutes sortes de variété et de flexibilité des connexions entre les tâches (dans Redmine, les communications sont mises en œuvre de façon minimaliste).
- Surveillance du chargement des ressources et possibilité de distribuer automatiquement les tâches sur un calendrier, en tenant compte des relations et du chargement des ressources Y compris les ressources "inhumaines" telles que l'équipement, les installations, etc. (Il n'y a rien de tout cela dans Redmine; l'outil a été créé pour un autre.)
Ce qui est bien avec Redmine:
- Un produit gratuit sur Ruby On Rails, assez simple, bien personnalisable et extensible, avec une communauté active, une large sélection de plugins, activement développés
- Web et travail d'équipe. Par conséquent, il est très pratique d'enregistrer la progression de chaque tâche, y compris le journal des modifications, la correspondance et les discussions sur la tâche, les fichiers, les rapports individuels sur les heures passées, etc. (le projet n'a rien.)
Il serait pratique de préparer des projets dans MS Project, de les envoyer pour exécution à Redmine, d'obtenir les termes réels des tâches et les heures estimées / passées à partir de là, de les comparer avec la référence précédemment enregistrée, en faisant des ajustements si nécessaire. (C'est particulièrement pratique, par exemple, dans une situation comme la nôtre au travail: il y a un flux de projets avec une structure régulière, qui doit être formée selon des modèles, légèrement spécifiés et donnés au travail.)
Il existe des plugins Rredmine pour cette intégration. Mais ils font l'intégration par le téléchargement et le téléchargement de fichiers xml, mais je le veux sans fichiers et plus facilement.
Le script P2R proposé est écrit en rubis et fonctionne avec MS Project via OLE et avec Redfmine par API. Si ruby n'est pas installé, vous pouvez prendre le même script compilé en .exe (il se trouve dans le dossier des téléchargements, généré par l'utilitaire ocra).
La préparation d'un projet MSP pour la publication et la synchronisation nécessite un minimum d'action.
- P2R stocke les identifiants de tâche Redmine dans l'attribut Hyperlink des tâches MSP. Pour marquer une tâche pour publication, vous devez mettre 0 dans cet attribut. Après la publication, P2R changera automatiquement ce champ en l'ID de tâche réel et générera en même temps l'URL correcte dans l'attribut HyperlinkAddress, de sorte que le lien sera cliquable. (Bien sûr, vous ne devez pas oublier d'enregistrer le projet MSP, il n'est pas automatiquement enregistré.)
- P2R stocke également les ID utilisateur Redmine dans l'attribut «Hyperlien» des ressources MSP. Pour associer cette ressource à un utilisateur Redmine, vous devez trouver l'ID utilisateur auprès de l'administrateur Redmine. (L'administrateur a accès à la liste des utilisateurs et peut voir leur ID, par exemple, dans les liens de la liste).
- P2R prend les paramètres d'accès dans Redmine à partir d'une tâche spéciale appelée «Synchronisation Redmine». Vous devez créer une telle tâche et mettre les paramètres d'accès dans le champ «Notes» au format YAML en fonction de l'exemple (les valeurs des paramètres doivent bien sûr être remplacées par les vôtres):
redmine_host: 192.168.10.10 redmine_port: 3000 redmine_api_key: a21e583e7670b1fc79378441d485b9608e4c2dc4c redmine_project_uuid: test task_default_redmine_tracker_id: 4 resource_default_redmine_role_id: 4
Après cela, le projet est prêt pour la synchronisation. Le but des paramètres est clair d'après leurs noms.
Le paramètre redmine_project_uuid
contient un code de projet unique qui doit être inventé conformément aux règles Redmine, qui peuvent être trouvées via la page des paramètres de tout projet. Si une erreur «Entrée non traitable» se produit lors de la création d'un projet, il est fort probable que vous ayez sélectionné l'uuid de projet incorrect.
Le paramètre task_default_redmine_tracker_id
facultatif. Si vous l'omettez, la piste par défaut des paramètres Redmine sera apposée.
Si vous ne souhaitez pas créer un nouveau projet dans Redmine, mais en connecter un existant, procédez comme suit:
- Ajoutez le paramètre
redmine_project_id
paramètres de synchronisation Redmine et mettez-y l'ID du projet Redmine. Ce n'est pas uuid! Cet entier est l'ID de l'entrée dans la base de données Redmine. Vous pouvez trouver cet ID, par exemple, dans la fiche de projet au format XML ou JSON (pour l'exemple ci-dessus, vous pouvez l'obtenir à http://192.168.10.10/10000000/projects/test.json ). - Pour que les tâches soient synchronisées avec celles existantes dans Redmine, mettez dans le champ Hyperlien non pas leurs zéros, mais leurs vrais ID Redmine.
Il existe une légère restriction sur l'affectation des ressources à une tâche:
- Étant donné qu'un seul exécuteur peut être affecté à une tâche dans Redmine, le script jure et s'arrête lorsqu'il trouve plusieurs ressources dans la tâche MSP marquées pour la synchronisation. (1) Il est possible que dans les versions futures, ce comportement soit remplacé par un comportement plus doux, comme l'émission d'un avertissement et le choix aléatoire de l'un d'entre eux. (2) Les ressources non synchronisées peuvent être affectées autant que vous le souhaitez, P2R les ignore.
L'algorithme de synchronisation suivant est implémenté:
- Le nom de la tâche, la structure de subordination et la personne responsable ont priorité du côté MSP, c'est-à-dire ils doivent être modifiés dans MS Project, et les modifications iront à Redmine pendant la synchronisation.
- Le début de la tâche, la fin, les coûts de main-d'œuvre (évaluation et réels) sont prioritaires du côté de Redmine et vont au MSP lors de la synchronisation.
Il y a aussi un problème avec les coûts de main-d'œuvre: dans MSP, l'estimation des coûts de main-d'œuvre, les coûts de main-d'œuvre réels et le pourcentage d'achèvement sont étroitement liés par la formule, tandis que dans Redmine, ils sont fixés indépendamment. Autrement dit, ils l'ont évalué à 10 heures, ont passé 40 heures et en même temps terminé la tâche de 30%. Cela arrive dans la vie, et Redmine ne s'en soucie pas. La solution choisie est:
- Les coûts réels sont toujours écrits tels quels
- Si les coûts réels sont supérieurs à l'estimation et que le pourcentage d'achèvement est de 0, ignorez l'estimation
- Si les coûts réels sont supérieurs à l'estimation et que le pourcentage d'achèvement n'est pas nul, nous calculons une nouvelle estimation basée sur le fait et le pourcentage d'achèvement.
Au total, le processus de synchronisation ressemble à ceci:
- Nous ouvrons notre projet dans MS Project et le laissons actif.
- Si nous le voulons, nous commençons la course inactive de P2R et nous regardons quels seront les changements.
- Nous commençons la synchronisation proprement dite: avec le commutateur –e.
Le répertoire de travail à partir duquel le script est lancé n'a pas d'importance.
Vous pouvez démarrer le script par minuterie et la synchronisation deviendra complètement automatique.
Merci de votre attention.