OFBiz应用程序的不同部分可以连接到不同的数据库吗?

时间:2013-03-23 20:32:23

标签: database ofbiz multi-tenant

OFBiz应用程序的不同部分可以连接到不同的数据库吗?例如:     -Party Management =>连接数据库1     -Catalog Management =>连接数据库2      - 在Ofbiz应用程序的相同实例中工作。 我的计划是在OFbiz中创建租户,并将OFBiz的不同部分连接到租户,而其他部分连接到默认/原始OFBiz数据库。

1 个答案:

答案 0 :(得分:4)

简短是肯定的,你可以,很长的答案可能是你不想这样做,因为在实体层面上存在着主动的依赖关系。

首先,您必须了解它们如何组合在一起: Ofbiz实体通常在entitymodel.xml中定义,并在ofbiz-component.xml中引用。大多数现有组件仅具有此级别的配置。利用这种配置,实体属于称为“org.ofbiz”的默认组。然后在entityengine.xml中,该组被分配给数据源:

<group-map group-name="org.ofbiz" datasource-name="localpostgres"/>

这是将表分配给组的方式,然后将该组分配给数据库。

因此,要将组件中的所有实体分配给新数据库,您必须执行以下操作:

  1. 在每个组件中创建一个新的实体组定义,并将实体分配给该组:<entity-group group="org.ofbiz.tenant" entity="Tenant"/>

  2. 从ofbiz-component.xml引用组定义 <entity-resource type="group" reader-name="main" loader="main" location="entitydef/entitygroup.xml"/>

  3. 在entityengine.xml中,将新组分配给不同的数据源: <group-map group-name="org.ofbiz.tenant" datasource-name="localpostgres"/>

  4. 有关示例,请查看olap和租户组。

    如果要创建新组件,或者如果要对specialpurpose文件夹中的组件执行此操作,则可以执行上述步骤并将实体放在单独的数据库中。如果你想从框架或应用程序文件夹(比如你提到的内容组件)对现有组件执行此操作,您会注意到组件具有依赖关系(实体关系),并且将一些实体移动到单独的数据库将会破坏它。