2

我无法弄清楚我应该如何在 Moqui 中存储系统相关信息。

例如,如果我为特定组织 (ABC Corp) 使用 HiveMind 应用程序,我必须在为特定组织制作记录时对值进行硬编码。我找不到任何合适的实体可以让我处理这种特殊情况。

那么有什么方法可以处理这种特殊情况吗?

例如,当我在 HiveMind 应用程序中创建用户和客户端时,数据库中没有记录指定用户是特定组织的员工。

对于客户端,它们仅存储在组织实体中,并且不存在任何关系来指定这一点。每当创建新用户或客户端时,我都可以通过创建参与方关系来处理这种情况。

但我将不得不硬编码我想与之建立关系的政党的价值。假设 ABC corp 正在使用 HiveMind 应用程序,每当我创建新用户或客户端时,我都必须硬编码 ABC corp 的派对 ID。与其对这个值​​进行硬编码,不如从数据库中获取这个特定值对我来说更有效。每当一个新组织想要使用该应用程序时,我只需在数据库中更改它,服务代码将保持原样。

4

1 回答 1

1

这实际上是一个应用程序设计问题,而不是框架的一个方面,但我将分享一些关于它的想法。

业务级别配置通常应在数据库中以为此目的设计的结构(实体)中完成。有时它需要通用值,但这应该是例外且仅是极少数情况。在 Moqui 中,处理用户或用户组首选项的方式是使用 UserPreference 和 UserGroupPreference,并且所有用户都使用 Moqui 中标准的 ALL_USERS 组(所有用户都自动成为该组的一部分)。这可以直接在实体上完成,也可以使用 UserFacade (ec.user) 上的相关方法完成。

也就是说,从基于 Mantle 的应用程序的业务和应用程序设计的角度来看(对于其他阅读,这是基于 Moqui 的业务工件项目),我不建议这样做。如果您想在创建员工时支持多个组织,您应该在表单上有一个字段来选择员工所属的组织(然后按照您的暗示创建 PartyRelationship 记录)。

在 HiveMind 中,可以有多个供应商组织,其中有不同角色的人员与之相关联。在创建项目时,您可以为特定项目选择供应商和客户组织,以便我们知道向谁收费,向谁收费,哪些用户涉及项目的不同方面等。

如果您确实只想支持一个供应商组织,您最好对其进行硬编码,而不是使其在应用程序的任何地方可见或可选择,并使其成为更严格意义上的应用程序“种子”数据的一部分术语种子数据作为代码直接依赖的数据(即使用“硬编码”,尽管该术语具有通常不合理的负面含义,但直接使用字符串值通常非常有用并提高清晰度和可维护性)。

于 2015-04-09T03:10:09.230 回答