【问题标题】:Data modeling Issue for Moqui custom applicationMoqui 自定义应用程序的数据建模问题
【发布时间】:2025-12-28 07:00:07
【问题描述】:

我们正在开发一款基于 Moqui 框架的自定义项目管理应用程序。我们的要求是,我们需要通过电子邮件将票证的任何变化通知与项目相关的开发人员。

目前我们使用 WorkEffortParty 实体来存储与项目相关的所有各方,然后使用 PartyContactMech 实体来存储他们的电子邮件地址。在这里,我们需要每次都遍历 WorkEffortParty 和 PartyContactMech 以获取我们每次需要发送电子邮件以更改票证的所有电子邮件地址。

为了避免这些迭代,我们现在正在考虑提供在项目级别添加逗号分隔电子邮件地址的功能。项目管理员可以添加相关方的电子邮件地址或邮件列表地址,他需要发送电子邮件通知以更改票证。

针对这个要求,我们研究了数据模型,但没有找到合适的位置来存储这些信息。我们是否需要为此扩展任何实体,或者是否有任何最佳实践?此要求在任何项目管理应用程序中都非常有用。我们感谢任何有关此数据建模问题的帮助。

【问题讨论】:

    标签: moqui


    【解决方案1】:

    最佳做法是使用可用的现有数据模型元素。拥有一个规范化的数据模型需要在查询数据方面做更多的工作,但在不改变数据结构的情况下也可以更灵活地满足各种需求。

    在这种情况下,使用联合查询,您可以根据项目的 workEffortId 在单个查询中获取电子邮件地址列表。如果您正在处理海量数据和消息量,则有比非规范化源数据更好的解决方案,但我怀疑是这种情况......除非您每天处理超过数千个项目和数百万条消息,否则基本查询和迭代方法会很好用。

    如果您需要超越 Moqui,最简单的方法是使用 DataDocument 和 DataFeed 将更新动态发送到 ElasticSearch,然后将其用于您的大量查询和过滤(具有任意复杂的过滤等要求) )。

    您的问题过于开放,无法直接回答,数据建模是一个复杂的主题,如果没有很好地理解上下文和预期用途,就没有好的答案。一般来说,最好从基于数十年经验并在大量生产系统中使用的数据模型开始。 Mantle UDM 就是这样一种模型。

    【讨论】:

    • 感谢大卫的帮助指导。我们正在使用 WorkEffortContactMech 来完成这项任务。我将尝试在这里再次解释需求。我们有一个要求,我们需要将票证的任何更改通知给目标用户集,并且我们希望避免通过实体进行迭代以获取目标方的电子邮件地址。所以我们考虑在项目级别存储用户的所有电子邮件地址(逗号分隔),这样就不需要任何迭代来获取地址。我们不确定应该使用数据模型中的哪个字段。