Virtual member manager 配置为使用动态模型或静态模型。您可在运行时创建新实体类型和新属性类型,并将现有或新属性类型添加到新实体类型。
您需要调用 virtual member manager createSchema API 以创建新实体类型和新属性类型,并在运行时将现有或新属性类型添加到新实体类型,而无需重新启动 virtual member manager。 现成可用的 LDAP 适配器和数据库适配器均支持这一类型的过程。对于此示例,您希望创建一个名为 ContactPerson 的新实体类型,其扩展自 virtual member manager 内置实体类型 PersonAccount。您还希望创建名为 cellPhone 的新属性类型,并将此属性类型添加到此实体类型。此示例使用 LDAP 适配器。
执行以下步骤:
在客户机端上,在用的 virtual member manager 应用程序通过本地服务提供程序来调用 virtual member manager 的 createSchema API。本地服务提供程序检测到此调用更改了模式,并在 createSchema API 调用完成之后更新本地模式 (ECore)。
在服务器端上,模式管理器从客户机检索 API 调用。 模式管理器首先检查新实体类型和属性类型是否已存在,如果已存在,便抛出异常。然后,模式管理器创建一个具有名称空间 URI (http://www.yourco.com/wim/yourext) 的 ECore 模型 (EPackage)(如果其尚不存在)。然后,模式管理器将新实体类型和属性类型的名称添加到存储器中的 ECore 模型。
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:schema>
<wim:entitySchema nsPrefix="yourext"
nsURI="http://www.yourco.com/wim/yourext"
entityName="ContactPerson"
parentEntityName="PersonAccount"/>
<wim:propertySchema nsURI="http://www.yourco.com/yourext"
dataType="STRING"
multiValued="true"
propertyName="cellPhone">
<wim:applicableEntityTypeNames>ContactPerson</wim:applicableEntityTypeNames>
</wim:propertySchema>
</wim:schema>
</sdo:datagraph>
之后,模式管理器调用配置管理器。<config:supportedEntityTypes defaultParent="cn=users,dc=yourco,dc=com"
name="yourext:ContactPerson">
<config:rdnProperties>uid</config:rdnProperties>
</config:supportedEntityTypes>
<config:repositories xsi:type="config:LdapRepositoryType" ...>
<config:EntityTypesNotAllowDelete>yourext:ContactPerson</config:EntityTypesNotAllowDelete>
<config:ldapEntityTypes name="yourext:ContactPerson">
<config:rdnAttributes name="uid"/>
<config:objectClasses>eContactPerson</config:objectClasses>
<config:objectClassesForCreate>eContactPerson</config:objectClassesForCreate>
<config:objectClassesForCreate>inetOrgPerson</config:objectClassesForCreate>
</config:ldapEntityTypes>
</config:repositories>
之后,模式管理器调用存储库管理器。如果至少一个存储库适配器支持创建新实体并且没有抛出 OperationNotSupportedException,那么 virtual member manager 将在输出数据图中返回这些存储库的存储库标识。
在客户机端,返回 createSchema API 调用之后,本地服务提供程序将调用 getEPackages API 以检索最新模式。本地服务提供程序将在客户机 JVM 中注册模式。在用应用程序可调用 virtual member manager 的 create API 来创建 ContactPerson 类型的新实体,且带有属性 cellPhone。Virtual member manager 不需要重新启动即可激活模式更改。