我正在研究一个时间管理项目并寻找一些实用的对象/持久性模型。 Fowler在他的“分析模式”一书中对资源分配有一些很好的想法,但是很多都是因为我现在需要的东西,而且是设计,高度概念化(而不是可实现的)
我正在考虑的焦点概念对象是一个Allocation对象,它看起来像:
Allocation : Entity
-------------
Id : Id
ResourceId : Id
AtivityId : Id
EventDate ; DateTime
TimeSpent : TimeQuantity
我也认为这将是一个数据库表,虽然我不确定它是否是资源和活动之间的关联表,或者是一个独立的查找表(域强制参照完整性)。 / p>
另外两个概念对象是资源和活动。两者都有一组Allocations,但在那之后我有点陷入困境,想出接口。不同类型的员工和顾问是感兴趣的资源。活动的主要兴趣将基于项目,非项目活动基于各种工资核算。
这是一个使用nhibernate的c#项目。
我意识到这是一个广泛的问题,而不是关于编程本身的问题。如果有人知道更适合讨论这个问题的论坛,那就太好了。如果您对该域名有一些经验并且有一些您愿意分享的想法或链接,那就太棒了!
好问题:
1)跟踪谁的时间(资源),可以是
- FullTimeStaff
- AdminStaff
- 顾问
2)录音周期为每周一次
- 用户可以在发布之前的任何时间输入和修改花费的时间
- 必须每周(周日)张贴时间表以供部门经理审核
(系统不会让用户发布,除非符合每周配额)
- 经理必须在下周二批准/拒绝
3)时间必须分配给活动,这是两种基本类型
- 基于项目的活动
- 非项目活动(最终发布到各个P / R账户)
4)通过临时时间段提供的资源或活动s / b报告。
我遇到的主要问题围绕资源和活动所需的多态性以及如何持久化。在域中,拥有IResource或IActivity更有用,它们都实现了IAllocatable: UniqueId:Id BusinessId:string 描述:字符串 分配:ISet
资源只能为Activity分配时间的约束使得它们不同(Activity需要ClockIn方法而Resource不需要)。两者都需要是用于系统中其他目的的众所周知的对象的包装器(即StaffMember,Project)。
我需要一个唯一的持久性ID,也许是分配本身的代理键。我也不确定分配和包装的资源/活动之间是否必须存在参照完整性,以及如果必须如何映射。我一直在使用Fluent NHibernate,但我认为最好只使用NHibernate。
再次感谢您提出的好问题。