Redmineのプロジェクトと入れ子集合モデルのお話し

今回は、あまり聞き慣れない「入れ子集合モデル」のお話です。

Redmineでは、プロジェクトの階層構造を管理するのに「入れ子集合モデル」を使用しています。

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

第5回 SQLで木構造を扱う~入れ子集合モデル (1)入れ子集合モデルとは何か :SQLアタマアカデミー
木構造と呼ばれるデータ構造の一種があります。1つのルート(根)と呼ばれるノードを始点として,(通常)複数のリーフ(葉)と呼ばれるノードまでを経路で結んでできるデータ構造です。

今回は、「Bitnami Redmine 3.3.3-1」と「A5:SQL Mk-2 2.12.1」の環境で説明します。

スポンサーリンク

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

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

 

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

 

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

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

 

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

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

 

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

 

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

 

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

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

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

 

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

 

プロジェクトlft
(左端座標)
rgt
(右端座標)
Project A112
Project A123
Project A249
Project A2-156
Project A2-278
Project A31011
Project B1314
Project c1516

 

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

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

 

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

プロジェクトlft
(左端座標)
rgt
(右端座標)
Project B12
Project A314
Project A145
Project A367
Project A2813
Project A2-2910
Project A2-11112
Project c1516

 

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

 

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

 

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

 

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

 

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

 

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

タイトルとURLをコピーしました