Virtual Member Manager ist so konfiguriert, dass entweder das dynamische Modell oder das statische Modell verwendet wird. Sie können während der Ausführung neue Entitätstypen und neue Merkmaltypen erstellen und vorhandene oder neue Merkmaltypen zu den neuen Entitätstypen hinzufügen.
Sie müssen die API "createSchema" von Virtual Member Manager aufrufen, um neue Entitätstypen und neue Merkmaltypen zu erstellen sowie vorhandene oder neue Merkmaltypen zu den neuen Entitätstypen während der Ausführung hinzuzufügen, ohne Virtual Member Manager erneut zu starten. Per Vordefinition unterstützen der LDAP-Adapter und der Datenbankadapter diese Vorgehensweise. Im folgenden Beispiel wird der neue Entitätstyp "ContactPerson" erstellt, der eine Erweiterung des integrierten Virtual Member Manager-Entitätstyp "PersonAccount" ist. Außerdem wird der neue Merkmaltyp "cellPhone" erstellt und dem neuen Entitätstyp hinzugefügt. Für das vorliegende Beispiel wird der LDAP-Adapter verwendet.
Gehen Sie wie folgt vor:
Auf der Clientseite ruft die Virtual Member Manager-Anwendung die Virtual Member Manager-API "createSchema" über den Local Service Provider auf. Der Local Service Provider stellt fest, dass durch den Aufruf das Schema geändert wird und aktualisiert das lokale Schema (ECore), nachdem der API-Aufruf "createSchema" beendet ist.
Auf der Serverseite empfängt der Schemamanager den API-Aufruf des Clients. Der Schemamanager prüft zunächst, ob die neuen Entitätstypen und Merkmaltypen bereits vorhanden sind und löst eine Ausnahmebedingung aus, falls dies der Fall ist. Dann erstellt der Schemamanager ein neues ECore-Modell (EPackage) mit einer Namespace-URI (http://www.yourco.com/wim/yourext), falls noch nicht vorhanden. Anschließend fügt er die Schemata der neuen Entitätstypen und Merkmaltypen dem ECore-Modell im Hauptspeicher hinzu.
<?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>
Der Schemamanager ruft anschließend den Konfigurationsmanager auf.<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>
Der Schemamanager ruft anschließend den Repository Manager auf.Wenn mindestens ein Repository-Adapter das Erstellen neuer Entitäten unterstützt und nicht die Ausnahmebedingung "OperationNotSupportedException" auslöst, gibt Virtual Member Manager die Repository-IDs der betreffenden Repositorys im Ausgabedatengraph zurück.
Auf der Clientseite ruft der Local Service Provider, nachdem der API-Aufruf "createSchema" zurückgegeben wurde, die API "getEPackages" auf, um die neusten Schemata abzurufen. Der Local Service Provider registriert die Schemata erneut in der Client-JVM. Die verwendenden Anwendungen können die Virtual Member Manager-API "create" aufrufen, um eine neue Entität des Typs "ContactPerson" mit dem Merkmal "cellPhone" zu erstellen. Virtual Member Manager muss nicht erneut gestartet werden, die Schemaänderungen werden auch ohne einen Neustart aktiv.