我无法弄清楚如何在Moqui中存储系统相关信息。
例如,如果我正在为特定组织(ABC Corp)使用HiveMind应用程序,我必须在为特定组织制作记录时对该值进行硬编码。我找不到任何合适的实体来允许我处理这种特殊情况。
那么有什么方法可以处理这个特殊情况吗?
例如,当我在HiveMind应用程序中创建用户和客户端时,数据库中没有指定用户是特定组织的员工的记录。
对于客户,他们只是存储在组织实体中,并且不存在将指定该关系的关系。我可以通过在创建新用户或客户端时创建派对关系来处理这种情况。
但我必须硬编码我想要创建关系的Party的价值。假设ABC公司正在使用HiveMind应用程序,每当我创建新用户或客户端时,我都必须硬编码ABC公司的参与方ID。而不是硬编码这个值,我从数据库中获取这个特定的值会更有效。每当新组织想要使用该应用程序时,我只会在数据库中更改它,服务代码将保持不变。
答案 0 :(得分:1)
这实际上是一个应用程序设计问题,而不是框架的一个方面,但我会分享一些想法。
业务级别配置通常应在数据库中为此目的而设计的结构(实体)中完成。有时它需要一般值,但这应该是例外,只有极少数情况。在Moqui中,处理用户或用户组首选项的方法是使用UserPreference和UserGroupPreference,并且对于所有用户使用Moqui中标准的ALL_USERS组(所有用户都自动成为此组的一部分)。这可以直接在实体上完成,也可以使用UserFacade(ec.user)上的相关方法完成。
也就是说,从基于Mantle的应用程序的业务和应用程序设计角度来看(对于其他人来说,这是基于Moqui的业务工件项目)我不建议这样做。如果您想在创建员工时支持多个组织,您应该在表单上有一个字段,以选择员工所属的组织(然后按照您的暗示创建PartyRelationship记录)。
在HiveMind中,可能有多个供应商组织,其中包含与其关联的不同角色的人员。在创建项目时,您可以选择特定项目的供应商和客户组织,以便我们知道向谁收取费用,哪些用户参与项目的不同方面等。
如果您确实只想支持一个供应商组织,您也可以对其进行硬编码,而不是在应用程序的任何位置使其可见或可选择,并使其成为更严格的应用程序“种子”数据的一部分作为代码直接依赖的数据的种子数据一词的意义(即使用“硬编码”,尽管该术语具有通常不合理的负面含义,直接使用字符串值通常非常有用并且提高清晰度和可维护性)。 p>