我们正在建立一个由CRM、人力资源管理、销售、物业等组成的企业平台。
真正的问题是:、客户关系管理和人力资源管理将作为单独的独立微服务进行部署,但这两个微服务通常需要相互交流。人力资源管理用户创建公司联系人员工,人力资源管理微服务API将人力资源管理模块中与人力资源管理相关的信息保存在“人力资源管理”数据库中,而员工的姓名、姓氏、地址等详细信息将保存到客户关系管理数据库中,即联系人API将上述信息保存为“内部”或“员工”类型的联系人。所以,基本上,我在这里要做的是分离与每个微服务相关的数据。
这种域设计方法正确吗?还是应该处理和存储所有信息(由人力资源管理许可用户输入)在人力资源管理模块和“人力资源管理”数据库中?所以我们不在乎CRM。如果是这样的话,CRM似乎只管理外部联系?这将来会有问题吗?
发布于 2015-12-01 12:41:38
我不知道你的问题与DDD有何真正的联系,你有多少想要拥抱DDD,但它有一个无处不在的语言的重要概念。该语言包含非常精确和明确的领域术语,这些术语必须在领域专家的口中、在所有模型中以及最终在代码中是相同的。
联系人就是联系人。雇员就是雇员。他们的名字不同是有原因的。它们反映了不同的领域概念。
除非联系人可以以某种方式成为员工(只有您所在领域的专家才能告诉员工,而StackOverflow上肯定没有人),否则他们就没有理由分享任何东西--不管是数据库表、基类等等,如果他们处于不同的有界上下文中,则更是如此。
发布于 2015-11-23 23:15:36
这里有几件事:
( 1) CRM和人力资源管理不是微观服务。这些领域没有任何微观的东西。
2)一般来说,您希望尽可能少地在服务之间进行耦合。这并不意味着您不能使用组合模式,但是您应该考虑为什么在任何给定的情况下都要使用它们。如果您这样做只是为了避免代码复制或数据库复制,那么您真的应该对此持怀疑态度。
您希望通过将员工放入CRM数据库来完成什么任务?您是否已经在CRM中拥有了"person“域/数据库?如果是这样的话,你在CRM中留住员工的理由是非常薄弱的。另一方面,如果您的目标是将员工视为客户,并对他们进行内部市场营销,那么将员工放入CRM可能是很有价值的。
我真的建议你把这些设计成单独的商店。它将允许这些系统独立地进化,独立地扩展,等等。
如果您真的想要在一个系统中的所有联系人,考虑一个新的服务(可能更“微”),存储和检索联系人。这两个服务都可以使用,但将独立于每个服务。
https://stackoverflow.com/questions/33869866
复制相似问题