今回は、あまり聞き慣れない方もいるかもしれませんが「入れ子集合モデル」のお話です。
Redmineでは、プロジェクトの階層構造を管理するのに「入れ子集合モデル」を使用しています。
「入れ子集合モデル」による階層構造の表現については、詳しく解説したサイトもありますので、興味のある方はあわせてご覧ください。
Bitnami Redmine 3.3.3-1と、A5:SQL Mk-2 を例にお話します。
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で表示すると、意図した通り並び順が替わっていることが分かります。
●プロジェクト一覧画面
●プロジェクト概要画面
●プロジェクト管理画面
コメント