2010-02-24 60 views
4

这个问题并没有真正关注DDD,但想知道是否有任何方法来模拟松散耦合域模型。我的意思是?我为一个软件HR编辑工作,我们计划从头开始一个新的应用程序。我们对我们为150位客户所做的所有项目进行了审计,事实是,从DDD的角度来看,我们不能说有一个有效的域模型。建模松散耦合域模型

为什么?因为每个公司都以不同的方式根据公司有多大来处理人力资源等。等等。

当然,我们可以确定人力资源领域的社区实体,例如:工作,报价,合作者,技能等,但他们是对于客户端A和客户端B没有以相同的方式链接。因此,从域模型的角度来看,我们不能说实体A具有对具有技能集合的实体B的引用,因为它不会是对另一位顾客是真的。

即使对于我们80%的客户,我们可以设计满足90%需求的模型,但我们不会牺牲其他客户,另一方面希望有一个产品可以针对特定开发进行解决不同的担忧。

我们研究了BPM解决方案,但这不符合我们的需求。另一方面,我无法想象你能如何处理我们所需要的。事实上,实体之间的链接应该在运行时从每种客户端的一种参数xml等中“完成”。我们希望不必编写其他应用程序,因为域模型稍有改变。这可能完全是疯狂的,因为没有一个合适的领域模型,但基于消息的东西可以帮助我们。

想要你的想法。你是怎么处理这种情况的。

感谢,

回答

4

域模型的目的是封装常见的行为和关系。尽管你可以(也应该)松散地耦合你的实现,但是你可以通过配置驱动来实现它。

如果您继续将其推向越来越多的可配置性,在某个点上它将不再是域模型,而是成为框架。然后,您可以使用框架来定义特定的域模型。

编写一个框架真的非常困难,所以我不认为以这个明确的目标开始一个项目是一个可行的计划。

如果可以,从一个公共的代码库开始,每次获取客户特定的请求时,都要重构内核,以便您可以将客户功能实现为插件

随着大量的时间,运气和技巧,您可以能够发展的内核函数为域特定框架

+0

我明白,不可能通过配置完成所有操作。我们面临的挑战就是制作一个软件,您可以从头到尾查看流程/工作流程。有了一个插件,当你有超过150个客户时,这是个问题。因此,为每个客户保留插件的版本。要知道这个插件是否与其他应用程序兼容,这在当时的诅咒中得到了改进。处理来源。在我们的情况下,它是我们现在拥有的,它是一个地狱。 还有其他问题,每个客户的域逻辑将分布在应用程序和插件中。 – 2010-02-24 15:34:42

+0

有关插件等的兼容性问题最好通过持续集成和大量自动化测试来解决。 – 2010-02-24 17:13:50

1

“神奇的产品问题”,我们所有的人都在寻找那些:)之一。我刚刚完成了一个使用SOA的成功案例。我们做了很好的识别服务的工作,后来我们稍微改变了一些编排或业务服务。

我想说的是,你将永远无法通过配置来解决所有的差异,我应该把努力做在一个简单的适应性良好的代码思维,但恕我直言,“魔术产品”是不可能的。