MW211 EXIT

devlog
設計/多階層のステータス管理
2013年01月15日
┌───┐
│○┬○│○…正常、×…異常、?…不明
│  └○│
└───┘
二階層以上でそれぞれステータスを持つ場合、上位ステータスが異常となった場合
下位ステータスにどのように反映させるか、以下の三つのパターンがある。
            ┌───┬───┬───┐
            │  A  │  B  │  C  │
┌───┐  ┌───┬───┬───┐  ┌───┐
│○┬○│  │×┬○│×┬×│×┬?│  │○┬○│
│  └○│  │  └○│  └×│  └?│  │  └○│
├───┤  ├───┼───┼───┤  ├───┤
│○┬×│  │×┬×│×┬×│×┬?│  │○┬×│
│  └○│  │  └○│  └×│  └?│  │  └○│
├───┤→├───┼───┼───┤→├───┤
│○┬○│  │×┬○│×┬×│×┬?│  │○┬○│
│  └×│  │  └×│  └×│  └?│  │  └×│
├───┤  ├───┼───┼───┤  ├───┤
│○┬×│  │×┬×│×┬×│×┬?│  │○┬×│
│  └×│  │  └×│  └×│  └?│  │  └×│
└───┘  └───┴───┴───┘  └───┘
  A:下位に反映させない      下位ステータス(正常)の遷移としては、○→○→○
  B:下位にすべて反映させる  下位ステータス(正常)の遷移としては、○→×→○
  C:下位をすべて不明とする  下位ステータス(正常)の遷移としては、○→?→○

外部向け(画面表示等)と内部管理で、分けるというのも一つの手だ。
たいてい、内部管理ではBを採用しづらい。
更新の量が莫大になり、差分による処理(履歴追加)なども莫大になりかねないからだ。
なので、内部的にはAで、外部向けとしてBもしくはCとするのが一般的か。
その間は、外部的には下位ステータスは×か?なのだから、
「○→×」的な遷移が発生しては辻褄が合わなくなることに注意だ。
分類:設計