Virtual member manager 配置为使用动态模型。您可创建新属性类型并在运行时动态地将其添加到现有 virtual member manager 内置实体类型。
关于此任务
您需要调用 virtual member manager 的 createSchema API 来创建新属性类型并在运行时将其添加到现有的 virtual member manager 内置实体类型,而无需重新启动 virtual member manager。现成可用的 LDAP 适配器和数据库适配器均支持这一类型的过程。对于此示例,您希望创建一个名为 postOfficeBox 的新属性类型,并将此属性类型添加到 virtual member manager 内置实体类型 PersonAccount。此示例使用 LDAP 适配器。
执行以下步骤:
过程
- 如果底层适配器包含 LDAP 适配器,请确保新属性类型的相应 LDAP 属性模式已在 LDAP 服务器中定义,并且包含在实体类型的 LDAP 对象类中。 Virtual member manager 不提供用于在 LDAP 服务器上创建和更新 LDAP 模式的功能。在此示例中,实体类型 PersonAccount 的对象类 inetOrgPerson 已包含 LDAP 属性 postOfficeBox
如果底层适配器包括数据库适配器,那么无需额外的准备工作。
- 在客户机端上,构建一个数据图以创建新属性类型。 数据对象 PropertySchema 用于创建新属性类型。诸如 propertyName、dataType、multiValued 之类的属性用于指定新属性类型的元数据。适用的实体类型在元素 applicableEntityTypeNames 中定义。
可以指定多个实体类型。您可通过添加 LDAP 属性配置并指定相应 virtual member manager property 特性名的名称来定义此属性的相应存储库属性名称。有关使用命令行界面配置此内容的信息,请阅读 WebSphere Application Server 信息中心中 AdminTask 对象的 IdMgrRepositoryConfig 命令组中的 addIdMgrLDAPAttr 命令。
以下是一个样本数据图。要创建的新属性类型名为 postOfficeBox,并添加到实体类型 PersonAccount。由于相应的 LDAP 属性名称与特性名相同,因此您无需为此特性名添加 LDAP 配置。
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:schema>
<wim:propertySchema nsURI="http://www.yourco.com/wim/yourext"
dataType="STRING" multiValued="true"
propertyName="postOfficeBox">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
</wim:propertySchema>
</wim:schema>
</sdo:datagraph>
结果
在客户机端上,在用的 virtual member manager 应用程序通过本地服务提供程序来调用 virtual member manager 的 createSchema API。本地服务提供程序检测到此调用更改了模式,并在 createSchema API 调用完成之后更新本地模式 (ECore)。
在服务器端上,模式管理器从客户机检索 API 调用。
模式管理器首先检查新属性类型是否已存在,如果已存在,便抛出异常。之后,模式管理器更新存储器中的 ECore 模型以将新实体类型添加到现有实体类型。在此样本中,将 PersonAccount 的 EClass 添加到了名为 postOfficeBox 的新 EAttribute。
模式管理器将新属性类型的模式添加到 wimxmlextension.xml 文件。以下是此更新完成之后 wimxmlextension.xml 文件的样本内容。
<wim:propertySchema nsURI="http://www.yourco.com/wim/yourext"
dataType="STRING" multiValued="true" propertyName="postOfficeBox">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
</wim:propertySchema>
模式管理器调用存储库管理器,后者接着调用所有适配器的 createSchema SPI 方法。
之后,支持创建模式的适配器将执行任何必要操作来支持新模式。例如,LDAP 适配器刷新高速缓存以反映模式和配置中的更改。
数据库适配器在新的实体和属性的数据库中创建新的实体和属性的模式,并刷新该数据库的高速缓存。
注: 不支持创建模式的适配器(例如,不支持在运行时创建新类型的文件适配器)将抛出 OperationNotSupportedException。
如果至少一个存储库适配器支持创建新实体并且没有抛出 OperationNotSupportedException,那么 virtual member manager 将在输出数据图中返回这些存储库的存储库标识。
在客户机端,返回 createSchema API 调用之后,本地服务提供程序将调用 getEPackages API 以检索最新模式。本地服务提供程序将在客户机 JVM 中注册模式。在用应用程序可调用 virtual member manager 的 create API 来创建 PersonAccount 类型的新实体,且带有属性 postOfficeBox。Virtual member manager 不需要重新启动即可激活模式更改。