組織階層管理を含むシステムを設計しています。システムには、ユーザー、管理者、マネージャー、調達部門の4つの役割があります。
各組織の管理者に、システムで事前定義されたタスクと特権を使用して新しいロールを作成することにより、独自の階層を作成させようとしています。
たとえば、管理者はユーザーと調達部門の間に、市場調査責任者という名前のユーザーを追加できます。管理者は、システムで事前定義されている購入リクエストの承認など、この新しいユーザータスクを割り当てます。
このシステムのクラス図を作成しようとしていますが、作成する新しいロールを表す方法がわかりません。どんな助けでもありがたいです。前もって感謝します。
あなたが持っている問題は、ユーザーの概念と役割の概念をマージすることです。したがって、同じ人が複数のタスクで調達の責任者である場合、その人はいくつかの無関係なオブジェクトを持っています。
最初のステップは、たとえば次のように、懸念事項を適切に分離することです。
ご覧のとおり、特定の役割とより一般的な概念との混乱を避けるために、最初の「ユーザー」を「寄稿者」に名前を変更しました(たとえば、addUser()
はあるがaddManager()
もaddHeadOfProcurement()
)。
この設計により柔軟性が向上しますが、アプリケーションにはいくつかの制約を適用する機会があります(たとえば、監査人がいくつかの 職務の分離 を適用することを望む場合)。
それにもかかわらず、この設計は依然として事前定義された役割に依存しています。管理者は新しいロールを作成できませんでしたが、クラスモデルで利用可能なロールを再利用するだけです。
管理者が新しいロールを作成できるように、より高いレベルの柔軟性が必要な場合は、次のことを実行できます。
もちろん、この追加の柔軟性により、さらに複雑なレイヤーが追加されます。