论坛首页 Java企业应用论坛

领域模型 实践疑惑

浏览 3632 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-04  
项目:合格供应方管理
企业内部的供应方需要通过该企业的合格供应方申请审批流程后,才能成为合格的供应方,才能进行后续的贸易活动。合格供应方申请可以由企业内部员工或者是合格供应方(同一平台上的)自己提交申请;企业内部通过已经建立好的评估方案对该申请进行评估考核;最后由企业的决策层审批。
模块关系图:



建模思路:
实体:
评估方案、申请单、供应商、产品信息、审批信息、评审信息(上图暂未给出)
因为这些都是需要跟踪的。

值对象:
评估分类、评估项目

疑惑:
建立类图时,申请单与审批、评审信息之间的关系如何表示?申请单中有审批、评审的集合?审批、评审中有申请的引用?还是前面两者都做,用双向关联?

望各位发表一下高见。
   发表时间:2008-12-04  
怎样设计取决于系统的行为,这些静态的结构如何组织很大程度上取决于你用的时候是怎么去做查询的。所以要正确评价领域模型,必须结合他们被使用的场景。
0 请登录后投票
   发表时间:2008-12-30  
我觉得,评审信息 和审批信息,是不是值对象阿?虽然要保存,但它们属于申请单的属性,脱离了申请单,它们就是没有意义的,它们是表达申请单的状态的?
如果要查询,本年度所有评审通过的申请单
从目的来说,这不是要得到哪一条评审结果,而是要得到整个申请单
从过程来说,如果有实体:评审结果,那它只有2种标识,通过/不通过,每一种标识的实体,内部有申请单的集合,这样查询最方便?
如果评审结果 不是实体,是值对象,那就没办法通过它的标识来查询,那就要通过申请单来查询,这样就麻烦,不过可以直接用sql语句?
另外,评审信息 和审批信息,只要发布了,就不能修改,那也应该是值对象的标准把,虽然不能公用
但是,如果外观上,要先看到评审信息的标题,然后点击标题再看到内容,这个时候 评审信息又要是实体了,因为必须依靠一个id标识来识别/查询,不过这好像也能通过,申请单id/评审发布时间/评审人id 三位一体识别,因为一个人不可能在同一时间,对一个申请单发布2个评审……
乱阿,我也不知道在说什么
0 请登录后投票
   发表时间:2009-09-19   最后修改:2009-09-19
1.申请单单独就行了,
2.评审信息引用申请单,
3.审批信息引用申请单,同时包含一个集合,集合元素引用评审信息。

这样,
我这样做的原则是看他们的生命周期和因果关系,还有那个什么迪米特法则:
申请单提交的时候并不存在评审信息和审批信息,所以在申请单中引用他们不大合适,
评审信息当然要能访问到申请单,至于为什么是引用而不是组合?因为评审信息没有掌控申请单的生命周期,
而审批信息现在要引用申请单,要不然审批啥?同时他会参考一堆评审信息,但是同理根据生命周期,他仅仅是引用评审信息,所以只能是自己用一个集合来引用一堆评审信息。

另外,和taowen相反我的看法是,别管查询,因为我们永远不知道客户会弄出什么样的查询,为了查询而在模型上妥协一般是不值得的,再说我们有无敌sql。

评估分类和评估项目怎么可能是值对象?估计你这里的意思是指在一次审批过程中不会变化的对象。





0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics