Utilice el fragmento de código y los gráficos de datos de ejemplo para extender el esquema en un depósito LDAP
El fragmento de código y los gráficos de datos de ejemplo siguientes muestran cómo ampliar el esquema en un depósito LDAP utilizando el objeto de datos propertySchema. En este fragmento de código de ejemplo se incluyen los pasos siguientes:
Asegúrese de leer la información y completar los pasos que se describen en el tema Requisitos previos de programación, incluida la sección Ampliación del esquema de propiedad, que contiene información sobre los objetos de datos propertySchema y extensionPropertySchema e indica la sintaxis válida para los tipos de datos de propiedad.
Debe tener un depósito LDAP configurado en la configuración de los depósitos federados. Consulte el tema Configuración de Lightweight Directory Access Protocol en una configuración de depósito federado en el Information Center de WebSphere Application Server. En el siguiente código de ejemplo, el ID del depósito LDAP configurado en la configuración de depósitos federados es LDAP1.
Añada el siguiente fragmento de código al código de aplicación y sustituya las variables por los valores reales que desea utilizar.
DataObject root = SDOHelper.createRootDataObject();
// Crear un nuevo objeto "schema" bajo root
// Este objeto contendrá los detalles de las modificaciones de esquema que deben realizarse
DataObject schema = root.createDataObject(SchemaConstants.DO_SCHEMA);
// Crear un objeto de datos de esquema de propiedad debajo del objeto de esquema creado antes
DataObject propertySchema = schema.createDataObject(SchemaConstants.DO_PROPERTY_SCHEMA);
// Establecer valores para la propiedad, es decir, URI espacio_nombres, prefijo espacio_nombres, nombre_propiedad
propertySchema.setString(SchemaConstants.PROP_PROPERTY_NAME, "contactNumber");
propertySchema.setString(SchemaConstants.PROP_NS_URI, SchemaConstants.WIM_NS_URI);
// Especificar que la propiedad no es de múltiples valores (si es de múltiples valores, el tipo debe ser List)
propertySchema.setBoolean(SchemaConstants.PROP_MULTI_VALUED, false);
// Especificar el tipo de datos de la propiedad
// Los tipos de datos pueden ser simples como boolean, int, float, double, String
// o especiales como Address, Person, Group, etc.
propertySchema.setString(SchemaConstants.PROP_DATA_TYPE, SchemaConstants.DATA_TYPE_STRING);
// Añadir tipos de entidad a la lista de tipos de entidad aplicables para esta propiedad
// Esto añadirá la propiedad para todos los tipos de entidad en la lista
propertySchema.getList(SchemaConstants.PROP_APPLICABLE_ENTITY_TYPE_NAMES).add(Service.DO_PERSON_ACCOUNT);
// Correlacionar la nueva propiedad con el atributo LDAP, ‘primaryOwnerContact', sólo para el depósito LDAP, "LDAP1".
// Para otros depósitos se correlacionará con el mismo nombre.
DataObject metaDataDO = propertySchema.createDataObject(SchemaConstants.DO_META_DATA);
metaDataDO.set(SchemaConstants.PROP_REPOSITORY_ID, "LDAP1");
metaDataDO.set(SchemaConstants.PROP_NAME, SchemaConstants.META_REPOSITORY_PROPERTY_NAME);
metaDataDO.getList(SchemaConstants.PROP_VALUES).add("primaryOwnerContact");
// Invocar API de creación de esquema para añadir la definición de propiedad al modelo de esquema
DataObject outRoot = service.createSchema(root);
System.out.println("\nCLIENT: new property is created.");
Gráfico de datos de entrada para añadir la propiedad:
<?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:propertySchema nsURI="http://www.ibm.com/websphere/wim" dataType="String"
multiValued="false" propertyName="contactNumber">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
<wim:metaData name="repositoryPropertyName" repositoryId="LDAP1">
<wim:values>primaryOwnerContact</wim:values>
</wim:metaData>
</wim:propertySchema>
</wim:schema>
</wim:Root>
</sdo:datagraph>
Gráfico de datos de salida posterior a la adición de la propiedad:
<?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:propertySchema nsURI="http://www.ibm.com/websphere/wim" dataType="String"
multiValued="false" propertyName="contactNumber">
<wim:repositoryIds>LDAP1</wim:repositoryIds>
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
<wim:metaData name="repositoryPropertyName" repositoryId="LDAP1">
<wim:values>primaryOwnerContact</wim:values>
</wim:metaData>
</wim:propertySchema>
</wim:schema>
</wim:Root>
</sdo:datagraph>