Redmine 便利ですよね。
最近ようやく会社のメンバーの説得に成功しまして、本格的な Redmine によるタスク運用をはじめました。

といっても自分も含め全員ちゃんとしたチケット駆動による業務ってあんまやってなかったもんですから全体的に手探りなんですけどね。

ところで、便利な Redmine ですが、やはりかゆいところに微妙に手が届かないこともありまして。今回はそれをなんとかするメモです。

そのかゆいところというのが、つまりは進捗率の話です。

進捗率はなかなか更新してもらえないので、チケットに連動するように設定しているんですが(これは Redmine についている機能)、チケットの進捗率をステータス連動にしてしまうと、親チケットもステータス連動になってしまうんですよね。

手動入力の場合、親子関係を設定すると、親チケットの進捗率は編集できなくなり、子チケットの進行状況に連動して自動的に計算してくれました。

でも、ステータス連動にすると、親チケットもステータス連動になってしまうので、子チケットが全部クローズして、進捗も 100% になってるのに、親チケットが未だに 30% とかになってたりするのが気持ち悪い。

子チケ全て片付いたら親もステータスを更新するわけだし、親チケもステータスをアップデートすれば進捗率は変わるんですが、できれば親チケットの進捗は子チケット群の全体の進捗を見られるような形にしたい。

そんな都合のいいプラグインとかないのかなーと調べていたのですが、どうやらすこし Redmine のコードをいじることで進捗率をステータス連動にしても親チケは子チケの進捗率に連動させることができるようです。

redmineで進捗率をステータスに連動させた場合でも、親チケットのステータスは小チケットの進捗率に連動させる方法 – suzan2号の戯れ

こちらの記事によると、

を少しいじることで、ステータス連動になっていても親チケットは子チケットの進捗に連動させることができるようです。

プラグインとかではなく、Redmine のソースをいじることになりますので更新とかあると消えるかもですがそのときはまた直せばいいかな、と。今のところ編集するのは3箇所だけだしね。あと、ほんとは良くないんだろうけど、Redmine は依存関係とかがきついんであんま更新しなそうだから、一度いじっておけば当分は平気かも?って気もしないでもないですw

とはいえコアファイルをいじるので作業は慎重にやったほうが良いです。あと自己責任でおねがいしますね。

さて、参考にした記事は1年位前のもので、本体も Redmine2.5 での話みたいなのですが、今使ってる Redmine 3.0.1 でもちゃんと動きました。

ということで修正する場所ですが、現在使っているのは Bitnami版 の Redmine 3.0.1.stable で、インストール先は初期設定なので、私の環境では

を編集しました。 ((元記事の model は models の間違いなのか、それともバージョンが変わってディレクトリ名が変わったのかは不明です。))

Redmineのコードを編集する

まず、 Issue.use_status_for_done_ratio? から始まる行を探して、その末尾に && !p.children? を追加します。これが2箇所ほど。

571行目付近

652行目付近

そして、 unless Issue.use_status_for_done_ratio? という行を探して、こちらも末尾に && !p.children? を追加します。こっちは1418行目付近にあります。

ruby についても redmine のコアについても詳しくはないのですが、元記事の内容や、わからないなりにコードを読んでみた感じですと、どうやら進捗率の計算にステータス(ごとに設定された値)を使用する条件として、「子チケットを持っていないこと」を追加することで、子チケットを持っている場合は進捗率の計算にステータスを使わなくなり、もともとの親チケットの動作、つまり子チケットの進捗率をつかって進捗率を計算できるようになるってことだと思います。

Redmineを再起動

設定が完了したら、Redmine を再起動して、変更を反映させます。再起動方法もインストール方法によって変わってくると思うんですが、Bitnami 版の場合は制御スクリプトが用意されてますので

とすればOKです。

進捗率グラフがしっかり動いてくれるとプロジェクトの進み具合が見えるようになるのでモチベーションの維持にもいいですよね。

というかこれ、本体の機能として追加されないんかなぁ?

コメントする