Virtual member manager se ha configurado para utilizar el modelo dinámico o el modelo estático. Puede crear durante la ejecución nuevos tipos de entidad, nuevos tipos de propiedad y añadir tipos de propiedad existentes o nuevos a los nuevos tipos de entidad.
Necesita invocar la API createSchema de virtual member manager para crear nuevos tipos de entidad, nuevos tipos de propiedad y añadir los tipos de propiedad existentes o nuevos a los nuevos tipos de entidad durante la ejecución sin reiniciar virtual member manager. De forma predeterminada, tanto el adaptador LDAP como el adaptador de BD soportan este tipo de procedimiento. En este ejemplo desea crear un nuevo tipo de entidad llamado ContactPerson que se extiende desde el tipo de entidad incorporado de virtual member manager PersonAccount. También desea crear un nuevo tipo de propiedad llamado cellPhone y añadirlo a este tipo de entidad. En este ejemplo se utiliza el adaptador LDAP.
Realice lo siguiente:
En el lado del cliente, la aplicación de virtual member manager en uso invoca la API createSchema de virtual member manager a través del Proveedor local de servicios. El Proveedor local de servicios detecta que esta llamada cambia el esquema y actualiza el esquema local (ECore) después de que finalice la llamada de la API createSchema.
En el lado del servidor, el Gestor de esquemas recibe la llamada de la API del cliente. El Gestor de esquemas primero comprueba si los nuevos tipos de entidad y tipos de propiedad ya existen y emite una excepción en caso de que así sea. A continuación, el Gestor de esquemas crea un nuevo modelo ECore (EPackage) con el URI de espacio de nombres (http://www.yourco.com/wim/yourext) si todavía no existe. A continuación, añadirá el esquema de los nuevos tipos de entidad y tipos de propiedad al modelo ECore en la memoria.
<?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>
A continuación, el Gestor de esquemas llama al
Gestor de configuración. <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>
A continuación, el Gestor de esquemas llama
al Gestor de depósitos. Si al menos un adaptador de depósito da soporte a la creación de nuevas entidades y no emite la excepción OperationNotSupportedException, Virtual member manager devuelve los ID de depósito de estos depósitos en el gráfico de datos de salida.
En el lado del cliente, después del retorno de la llamada de la API createSchema API, el Proveedor local de servicios invoca la API getEPackages para recuperar los últimos esquemas. El Proveedor local de servicios vuelve a registrar los esquemas en la JVM del cliente. Las aplicaciones en uso pueden invocar la API de creación de virtual member manager para crear una nueva entidad de tipo ContactPerson con la propiedad cellPhone. No es necesario reiniciar virtual member manager para que se active el cambio en el esquema.