OFBiz应用程序的不同部分可以连接到不同的数据库吗?例如: -Party Management =>连接数据库1 -Catalog Management =>连接数据库2 - 在Ofbiz应用程序的相同实例中工作。 我的计划是在OFbiz中创建租户,并将OFBiz的不同部分连接到租户,而其他部分连接到默认/原始OFBiz数据库。
答案 0 :(得分:4)
简短是肯定的,你可以,很长的答案可能是你不想这样做,因为在实体层面上存在着主动的依赖关系。
首先,您必须了解它们如何组合在一起: Ofbiz实体通常在entitymodel.xml中定义,并在ofbiz-component.xml中引用。大多数现有组件仅具有此级别的配置。利用这种配置,实体属于称为“org.ofbiz”的默认组。然后在entityengine.xml中,该组被分配给数据源:
<group-map group-name="org.ofbiz" datasource-name="localpostgres"/>
这是将表分配给组的方式,然后将该组分配给数据库。
因此,要将组件中的所有实体分配给新数据库,您必须执行以下操作:
在每个组件中创建一个新的实体组定义,并将实体分配给该组:<entity-group group="org.ofbiz.tenant" entity="Tenant"/>
从ofbiz-component.xml引用组定义
<entity-resource type="group" reader-name="main" loader="main" location="entitydef/entitygroup.xml"/>
在entityengine.xml中,将新组分配给不同的数据源:
<group-map group-name="org.ofbiz.tenant" datasource-name="localpostgres"/>
有关示例,请查看olap和租户组。
如果要创建新组件,或者如果要对specialpurpose文件夹中的组件执行此操作,则可以执行上述步骤并将实体放在单独的数据库中。如果你想从框架或应用程序文件夹(比如你提到的内容组件)对现有组件执行此操作,您会注意到组件具有依赖关系(实体关系),并且将一些实体移动到单独的数据库将会破坏它。