Redmineプロジェクトのツリー構造と入れ子集合モデル

今回は、Redmineのプロジェクトのツリー構造に関するお話です。Redmineでは、プロジェクトのツリー構造を表現するのに「入れ子集合モデル」を使用しています。

ツリー構造の「入れ子集合モデル」による表現について、詳しく解説したサイトもありますので、あわせて是非ご覧ください。

長らく更新をサボっていたので、今回「Bitnami Redmine 3.3.3-1」と「A5:SQL Mk-2 2.12.1」に、それぞれバージョンアップしての投稿です!w

Redmineは、近々3.4が出るようですね!

スポンサーリンク

Redmineにおけるプロジェクトの階層表示

今回の投稿用に、次のようなプロジェクトの階層を作成してみました。通常は、プロジェクトの並び順を、カスタムフィールドのように自由に設定することはできません。

一覧画面でも階層表示されますが、プロジェクトは自動的に名前の昇順で表示されます。

プロジェクトの概要です。やはり、サブプロジェクトは名前の昇順に表示されます。

最後にプロジェクトの並び順を、チカラ技で変更する方法を紹介します️‍

「A5:sql mk-2」で「projects」テーブルを表示

Redmineは、プロジェクトの設定を「projects」テーブルに保存しています。
「A5:sql mk-2」から確認すると、次のようなっています。

分かりやすくするため、表示項目を絞って、並び順を変更します。

表示フォントも少し大きくしてみましょう。
設定 > オプションの「全般」タブから変更できます。

「入れ子集合モデル」によるツリー構造の表現

準備も終わりましたので、本題に入ります。

サンプルのプロジェクトのツリー構造を、集合の包含関係として捉えなおして「入れ子集合モデル」で表すと、次のようになります。

Redmineでは、この入れ子集合モデルの各集合(プロジェクト)の左右の端を、X座標上の値で数値化してツリー構造を表しています。

プロジェクト lft
(左端座標)
rgt
(右端座標)
Project A 1 12
Project A1 2 3
Project A2 4 9
Project A2-1 5 6
Project A2-2 7 8
Project A3 10 11
Project B 13 14
Project c 15 16

プロジェクトのX座標上の位置を入れ替えてみる

では、通常は名前の昇順に並んでいるプロジェクトのX座標上の位置を、次のように入れ替えてみます。

左端座標と右端座標の値も、実際に書き出してみます。

プロジェクト lft
(左端座標)
rgt
(右端座標)
Project B 1 2
Project A 3 14
Project A1 4 5
Project A3 6 7
Project A2 8 13
Project A2-2 9 10
Project A2-1 11 12
Project c 15 16

さきほどの「A5:SQL Mk-2」から、projectsテーブルの値を変更します。

Redmineでプロジェクトの一覧を表示してみると、意図した通り並び順が替わっています。

横並びですが、プロジェクトの概要も替わっています。

プロジェクトの管理画面も、やはり同じように替わっています。

Redmineのバージョン3.3.3以外では試していませんが、プロジェクトを新たに追加したり階層を変更しても、自動的に元(プロジェクトの名前の昇順)には戻らなかったので、ご注意ください。

久しぶりの投稿だったので、思った以上に時間がかかってしまいました。一旦止まってまた動き始めるには、やはり多くのエネルギーが要りますね😥