Modelos dinámicos y estáticos: creación de nuevas entidades y propiedades durante la ejecución

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.

Acerca de esta tarea

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:

Procedimiento

  1. Si los adaptadores subyacentes incluyen el adaptador LDAP, asegúrese de que el esquema de atributo LDAP correspondiente del nuevo tipo de propiedad esté definido en el servidor LDAP e incluido en las clases de objetos LDAP del tipo de entidad. Virtual member manager no proporciona funciones para crear y actualizar el esquema LDAP en el servidor LDAP. En este ejemplo, es necesario crear la clase de objeto eContactPerson y el atributo cellularTelephoneNumber si no están predefinidos.

    Si los adaptadores subyacentes incluyen el adaptador de BD, no es necesaria ninguna preparación adicional.

  2. En el lado del cliente, construya un gráfico de datos para crear el nuevo tipo de propiedad.

    El objeto de datos EntitySchema se utiliza para crear el nuevo tipo de entidad y el objeto de datos PropertySchema se utiliza para crear el nuevo tipo de propiedad. Ambos objetos de datos deben especificar el URI de espacio de nombres en el cual se crean el nuevo tipo de entidad y de propiedad. El nuevo tipo de entidad debe especificar el tipo de entidad padre desde el que se extiende.

    Además de la información del esquema, ambos objetos de datos especifican la información de configuración necesaria para virtual member manager y el adaptador subyacente (Adaptador LDAP) para dar soporte a los nuevos tipos de entidad y tipos de propiedad. Por ejemplo, el padre predeterminado y la propiedad RDN son necesarias para añadir esta nueva entidad al archivo XML de configuración de virtual member manager (wimconfig.xml). El padre predeterminado definido en la esfera se crea mediante el Gestor de configuración. Los atributos objectClasses y objectClassForCreate son necesarios para que el adaptador LDAP pueda correlacionar la nueva entidad con las clases de objeto LDAP correspondientes. En el caso de una nueva propiedad, el Adaptador LDAP necesita el nombre del atributo LDAP correspondiente, que tal vez no sea el mismo que el nombre de propiedad. Si no son el mismo, debe añadir una configuración de atributo LDAP y especificar el nombre de propiedad de virtual member manager correspondiente. Para obtener información sobre cómo configurarlo utilizando la interfaz de línea de mandatos, lea sobre el mandato addIdMgrLDAPAttr en Grupo de mandatos IdMgrRepositoryConfig para el objeto AdminTask, en el Information Center de WebSphere Application Server.

    A continuación se proporciona el gráfico de datos de ejemplo. El elemento entitySchema se utiliza para definir el esquema para la entidad ContactPerson. El elemento entityConfig contiene la información de configuración para el tipo de entidad. Por ejemplo, el elemento actionNotAllow se utiliza para especificar que este tipo de entidad no se puede suprimir. El elemento propertySchema se utiliza para definir el esquema para la propiedad cellPhone.
    <?xml version="1.0" encoding="UTF-8"?>
    <sdo:datagraph xmlns:sdo="commonj.sdo"
        xmlns:wim="http://www.ibm.com/websphere/wim">
      <wim:Root>
        <wim:schema>
          <wim:entitySchema entityName="ContactPerson" 
                            nsPrefix="yourext" 
                            nsURI="http://www.yourco.com/wim/yourext"
              parentEntityName="PersonAccount">
            <wim:entityConfiguration defaultParent="cn=users,dc=yourco,dc=com" 
                                     rdnProperty="uid">
              <wim:actionNotAllow actionName="delete"/>
              <wim:metaData name="objectClasses">
                <wim:values>eContactPerson</wim:values>
              </wim:metaData>
              <wim:metaData name="objectClassesForCreate">
                <wim:values>eContactPerson</wim:values>
                <wim:values>inetOrgPerson</wim:values>
              </wim:metaData>
              <wim:metaData name="rdnProperties">
                <wim:values>uid</wim:values>
              </wim:metaData>
            </wim:entityConfiguration>
          </wim:entitySchema>
          <wim:propertySchema nsURI="http://www.yourco.com/wim/yourext"
                              dataType="STRING" 
                              multiValued="true" 
                              propertyName="cellPhone">
            <wim:applicableEntityTypeNames>yourext:ContactPerson</wim:applicableEntityTypeNames>
          </wim:propertySchema>
        </wim:schema>
      </wim:Root>
    </sdo:datagraph>
    Nota: Para obtener más información sobre el uso de los objetos de datos propertySchema y extensionPropertySchema, consulte el apartado Ampliación del esquema de propiedad en el tema Requisitos previos de programación. Consulte además Configuración de repositorios de extensiones de propiedades en configuraciones de repositorios de federados en el Information Center de WebSphere Application Server.

Resultados

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.

El Gestor de esquemas añade el esquema del nuevo tipo de entidad y tipo de propiedad a wimxmlextension.xml. Si este archivo no existe, se crea un archivo nuevo. A continuación se proporciona el contenido de ejemplo de wimxmlextension.xml después de finalizar esta operación.
Nota: La información de configuración no se graba en este archivo XML.
<?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.
El Gestor de configuración añade la información de configuración de los nuevos tipos al archivo XML de configuración de virtual member manager (wimconfig.xml). A continuación se proporcionan las secciones añadidas para el nuevo tipo de entidad ContactPerson en wimconfig.xml después de finalizar esta operació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.
El Gestor de depósitos invoca el método de SPI createSchema de todos los adaptadores. Los adaptadores que dan soporte a la creación del esquema, a continuación realizan las operaciones necesarias para dar soporte al nuevo esquema. A modo de ejemplo, el Adaptador LDAP renueva la memoria caché para reflejar los cambios en el esquema y en la configuración. El Adaptador de BD crea el esquema de la nueva entidad y propiedad en la base de datos y renueva las memorias caché.
Nota: Los adaptadores que no dan soporte a la creación del esquema, por ejemplo, el Adaptador de archivos que no da soporte a la creación de nuevos tipos en la ejecución, emiten una excepción OperationNotSupportedException.

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.



Condiciones de uso | Comentarios