I'm currently trying out DDD with a sample Application "Task Management System". This does not apply to a specific domain, but is a generic application that can be used in any domain.
- The main concept of task management is "task". It can contain several subtasks.
- The task can have a specific duration and be assigned to different roles or users.
- Each subtask can be assigned to different roles or users
- Task can be submitted for approval for other users or roles
- Once approved, tasks and subtasks are available for execution
Based on the above knowledge, I introduced myself to three limited contexts.
a] Task & subtasks – core domain
b] Approval Process – Supporting Domain
c] Roles, Users, Authorization – User Domain
Roles, users in a generic domain have a different meaning in the task domain.
For example, a user in the user domain is referred to as the creator / approver / person responsible in the task domain. Similarly, roles in the user domain are referred to as Responsible / Approving Roles.
Data related to the list of users, roles are assigned by an external system, and authentication is also performed by an external system. The list of users and roles is used to create, assign, and approve tasks.
Need clarity on the following points
- Have I clearly identified limited contexts?
- Am I correct in separating the users and roles in a different context, even though they are very important for creating tasks?
- Should the approval process be in a different context? I'm confused about that, as it's actually very important and part of the task management.