私はシステムを設計することを懇願しています。そして、組織を代表する非常に柔軟な構造を持つことが不可欠です。
本質的な要件は単純です。
- コンテナ (組織単位) の階層を持つ
- コンテナーには、次のような他のエンティティ (他のコンテナーを含む) が含まれます。
- ユーザーを含むことができるグループ
- カレンダー
- 等...
- また、構造に応じて許可および登録プロセスを容易にする要件もあります。
- ユーザー\グループは、他のコンテナーに対して異なるロール\アクセス許可で登録でき、他のすべてのエンティティに対して同じロールのアクセス許可が付与されます。また、グループとカレンダーのマネージャーを定義する機能もあります。
最初の考え:
- 「複合」設計パターンを使用してエンティティを表す:
- [[インターフェイス]] IEntity --> int ID、string Name ...
- すべてのエンティティは同じインターフェースを実装します
- コンテナ エンティティは、これらのエンティティを参照する子のリストを保持します。
- 各エンティティは、リーフでユーザーのリストを保持する「権限ツリー」を保持します。このツリーは、ユーザーが管理者としてエンティティに登録される役割と方法を表します。つまり、ユーザーがグループを通じて所有者として登録されている場合、ツリーには所有者 --> グループ 1 --> ユーザー 1 が表示されます。
熟考:
- 各エンティティには独自の Delete\ Add メソッドが必要ですか? インターフェイスレベルで定義されているか、エンティティの追加と編集のすべてのタスクを処理する「EntitiesManager」のような別のクラスが必要です。
- パーミッション ツリー情報を保持するには、データベースをどのようにモデル化すればよいですか?
このトピックに関するアイデア、修正、教訓、提案をいただければ幸いです。
前もって感謝します...