我目前正在处理一个应用,其中Facilities
Facility Items
和Assessments
Findings
被管理(这是一个带有Windows管理应用的移动应用,我只描述了它的一小部分。)
目前它的CRUD实现了非常贫乏的模型,我想从DDD中应用一些想法,使我的模型更丰富/更健壮,并强制执行一些不变量。
我想要实施的新要求是通过扫描附加到它们的Tag
来获取有关设施项目/结果的信息。
Team
拥有一组预定义的标签。目前这些是在磁性标签上印刷的一些qr代码,但当然也可以使用nfc标签。
当一个团队成员进行评估时,每当他确定一个发现时,他都会在“目标”上标记并扫描它。稍后其他团队成员可以扫描现有标签并获取有关该发现的信息。如果发现不再相关,则标签可能会被重复用于其他发现。
这些是我(简单)的要求:
简单/明显的解决方案是直接从查找/设施项引用标记。但我认为这有一些缺点:
我认为我可以使用某种“标记分配”实体来引用标记和设施项目/查找。使用此解决方案,我可以轻松更改分配。这有意义吗? 但是这个解决方案至少存在一个问题:在DDD中对标签的设施项目/发现的引用是“不允许的”(因为只应引用AR)。
我想知道有人会用DDD模拟这个吗?有什么想法吗?谢谢!
答案 0 :(得分:0)
我认为我可以使用某种“标记分配”实体来引用标记和设施项目/查找。使用此解决方案,我可以轻松更改分配。这有意义吗?但是这个解决方案至少存在一个问题:在DDD中对标签的设施项目/发现的引用是“不允许的”(因为只应引用AR)。
我想知道有人会用DDD模拟这个吗?有什么想法吗?
您描述的问题有一个在设计解决方案时理解至关重要的功能:该模型不是记录簿。
目前这些是在磁性标签上印刷的一些qr代码,但当然也可以使用nfc标签。当一个团队成员进行评估时,无论何时他确定一个发现,他都会在“目标”上标记并扫描它
请注意,这些活动正在现实世界中进行;你的域名模型没有否决权。
要注意的第二件事是,虽然Tag
可能是现实世界中的实体,但您实际上并不关心。您的扫描仪会从标签上反射光线,分析反射,推断出QR码,然后发送该QR码的表示。 (你的模型图片已经暗示你明白了这一点。)
如果某个发现不再相关,则该标记可能会被重复用于其他发现。
这听起来像你的模特需要理解时间。现实世界中的人们希望能够告诉您的模型“从{date:...}开始,Tag {qrcode:...}已被分配到Finding {id:...}”
团队拥有一组预定义的标签。
您需要仔细考虑所有权在您的设计中的真正含义。问题描述中没有任何内容表明AR团队负责维护关于标记状态的业务不变性。如果一个团队重组不存在,它的所有标签都会“消失”吗?可能不是。
我的猜测是所有权更像是作业“从{date:...}开始,Team {id:...}负责Tag {qrcode:...}”;再一次 - 你需要特别注意“谁来决定?”该模型?还是现实世界?