Cet exemple de fragment de code et ces graphiques de données permettent d'étendre le schéma dans un référentiel LDAP.
L'exemple de fragment de code et les graphiques de données suivants expliquent comment étendre le schéma dans un référentiel LDAP à l'aide de l'objet de données propertySchema. Les étapes abordées dans cet exemple de fragment de code sont les suivantes :
Assurez-vous d'avoir bien lu les informations et effectué les étapes décrites dans la rubrique Prérequis pour la programmation et notamment dans la section Schéma de propriété étendu, qui contient des informations sur les objets de données propertySchema et extensionPropertySchema et indique la syntaxe valide pour les types de données de propriété.
Un référentiel LDAP doit être configuré dans la configuration des référentiels fédérés. Voir la rubrique Configuration du protocole LDAP (Lightweight Directory Access Protocol) dans une configuration de référentiel fédéré dans le centre de documentation de WebSphere Application Server. Dans l'exemple de code ci-après, l'ID du référentiel LDAP configuré dans la configuration des référentiels fédérés est LDAP1.
Ajoutez le fragment de code ci-après à votre code d'application, puis remplacez les variables par les valeurs réelles à utiliser.
DataObject root = SDOHelper.createRootDataObject();
// Création d'un objet "schema" sous la racine
// Cet objet contiendra les détails des modifications de schéma qui doivent être apportées
DataObject schema = root.createDataObject(SchemaConstants.DO_SCHEMA);
// Création d'un objet de données de schéma de propriété sous l'objet de schéma créé précédemment
DataObject propertySchema = schema.createDataObject(SchemaConstants.DO_PROPERTY_SCHEMA);
// Définition des valeurs de la propriété (par exemple, URI d'espace de nom, préfixe d'espace de nom, nom de la propriété)
propertySchema.setString(SchemaConstants.PROP_PROPERTY_NAME, "contactNumber");
propertySchema.setString(SchemaConstants.PROP_NS_URI, SchemaConstants.WIM_NS_URI);
// Indiquez que la propriété n'est pas à valeurs multiple (si elle l'est, son type doit être Liste)
propertySchema.setBoolean(SchemaConstants.PROP_MULTI_VALUED, false);
// Spécification du type de données de la propriété
// Les types de données peuvent être simples, comme boolean, int, float, double, String
// ou spéciaux comme Address, Person, Group, etc.
propertySchema.setString(SchemaConstants.PROP_DATA_TYPE, SchemaConstants.DATA_TYPE_STRING);
// Ajout de types d'entité à la liste des types d'entité applicables pour cette propriété
// Ajoutez la propriété de tous les types d'entité de la liste
propertySchema.getList(SchemaConstants.PROP_APPLICABLE_ENTITY_TYPE_NAMES).add(Service.DO_PERSON_ACCOUNT);
// Mappez la nouvelle propriété à l'attribut LDAP, ‘primaryOwnerContact', pour le référentiel LDAP, "LDAP1", uniquement.
// Pour les autres référentiels, elle sera mappée au même nom.
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");
// Appelez l'API de création de schéma pour ajouter la définition de propriété au modèle de schéma
DataObject outRoot = service.createSchema(root);
System.out.println("\nCLIENT: new property is created.");
Graphique de données d'entrée pour l'ajout de la propriété :
<?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>
Graphique de données de sortie après l'ajout de la propriété :
<?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>