Mit dem Mustercode-Snippet und den Datengraphen können Sie das Schema in einem LDAP-Repository erweitern.
Der folgende Mustercode und die Datengraphen zeigen, wie Sie das Schema in einem LDAP-Repository unter Verwendung des Datenobjekts "propertySchema" erweitern können. Dieses Mustercode-Snippet deckt die folgenden Schritte ab:
Stellen Sie sicher, dass Sie die Informationen gelesen und die Schritte ausgeführt haben, die im Thema Voraussetzungen für die Programmierung beschrieben sind. Hierzu gehört auch der Abschnitt Merkmalschema erweitern, in dem Informationen zu Datenobjekten "propertySchema" und "extensionPropertySchema" enthalten sind und die gültige Syntax für Merkmalsdatentypen aufgeführt ist.
In der Konfiguration mit föderierten Repositorys muss ein LDAP-Repository konfiguriert sein. Entsprechende Informationen enthält das Thema über das Konfigurieren von LDAP in einer Konfiguration mit föderierten Repositorys im Information Center von WebSphere Application Server. Im folgenden Mustercode hat das LDAP-Repository, das in der Konfiguration mit föderierten Repositorys konfiguriert ist, die ID LDAP1.
Fügen Sie das folgende Code-Snippet zu Ihrem Anwendungscode hinzu und ersetzen Sie die Variablen durch die tatsächlichen Werte, die Sie verwenden wollen.
DataObject root = SDOHelper.createRootDataObject();
// Create a new "schema" object under root
// This object will contain the details of the schema modifications that need to be made
DataObject schema = root.createDataObject(SchemaConstants.DO_SCHEMA);
// Create a property schema data object under the schema object created earlier
DataObject propertySchema = schema.createDataObject(SchemaConstants.DO_PROPERTY_SCHEMA);
// Set the values for the property viz. namespace URI, namespace prefix, property name
propertySchema.setString(SchemaConstants.PROP_PROPERTY_NAME, "contactNumber");
propertySchema.setString(SchemaConstants.PROP_NS_URI, SchemaConstants.WIM_NS_URI);
// Specify the property is not multi-valued (if it is multi-valued, its type must be List)
propertySchema.setBoolean(SchemaConstants.PROP_MULTI_VALUED, false);
// Specify the data type of the property
// Data types can be simple like boolean, int, float, double, String
// or special like Address, Person, Group, etc.
propertySchema.setString(SchemaConstants.PROP_DATA_TYPE, SchemaConstants.DATA_TYPE_STRING);
// Add entity types to the list of applicable entity types for this property
// This will add the property for all the entity types in the list
propertySchema.getList(SchemaConstants.PROP_APPLICABLE_ENTITY_TYPE_NAMES).add(Service.DO_PERSON_ACCOUNT);
// Map the new property to LDAP attribute, ‘primaryOwnerContact', for LDAP repository, "LDAP1", only.
// For other repositories it will be mapped to the same name.
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");
// Invoke the create schema API to actually add the property definition to the schema model
DataObject outRoot = service.createSchema(root);
System.out.println("\nCLIENT: new property is created.");
Eingabedatengraph für das Hinzufügen des Merkmals:
<?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>
Ausgabedatengraph nach dem Hinzufügen des Merkmals:
<?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>