When defining your object model, schema, and maps with the ObjectExtender browsers, in effect, you are describing metadata. The metadata is used by the framework to create the domain classes that will instantiate and service your business objects. When compared to typical class browsers, the Model, Schema, and Map browsers can be thought of as metadata browsers. That is, when browsing a class with a typical class browser, you are browsing the real class definition with all of its state and behavior. The metadata browsers are used to describe your object model to the ObjectExtender framework so that it can build a persistent layer for your business objects. Therefore, the metadata browsers are only concerned with the pertinent details to make your business objects persist. However, like the typical class browsers, ObjectExtender metadata browsers are integrated with the Envy features so that you can save editions of your object model in the repository.
The ObjectExtender framework makes use of Envy features to store networks of objects such as Model or Schema into a private field of a User-Defined classes. Each entity (Model, Schema or Map) is associated with and stored to a unique class. This gives you the flexibility to store and save different versions of the entity by maintaining different versions of the associated storage class.
The hierarchy of storage classes is as follows:
VapStorage ModelStorageClass UserDefinedModelStorageClass-1 UserDefinedModelStorageClass-2 UserDefinedModelStorageClass-n SchemaStorageClass UserDefinedSchemaStorageClass-1 UserDefinedSchemaStorageClass-2 UserDefinedSchemaStorageClass-n MapStorageClass UserDefinedMapStorageClass-1 UserDefinedMapStorageClass-2 UserDefinedMapStorageClass-n
The browsers recognize new entities that you create as well as entities that are stored in storage classes. For example, if you open a Model Browser and select Load Available Models, the image is scanned for subclasses of ModelStorageClass. For each subclass found, a model is reconstructed from the saved format. The model is then cached and displayed in the browser. This operation will not write over models which are currently cached and displayed in the browser. If you change and save the model, it will be stored back to its associated storage class. If the storage class is an open edition, then the new model, the one that you have just changed, will overwrite the previously stored copy. If the storage class was not an open edition then a new edition will be created and the new model will be saved there.
When you create a new model and save it for the first time, the Model Browser prompts you for a class and application name. If the application does not exist then it will be created.
TheModel Browser also provides a way to restore the copy you are currently browsing to the match the stored copy. If you make changes and decide you want to restore the original, you can do so by choosing the Revert model option.
To maintain consistent sets of associated models, schemas, and maps, it is assumed that you will use these Envy features just as you would when developing applications outside the ObjectExtender framework.
For example, suppose you want to use the application named WizBangProjectPersistenceApp which contains the three storage classes: WizBangModelStorage, WizBangSchemaStorage, and WizBangMapStorage to store other versions of models, schemas, and maps.
Envy versioning could be employed to do something like this:
WizBangProjectPersistenceApp ProjectMilestone 1 WizBangModelStorageClass 1.0 WizBangSchemaStorageClass 1.0 WizBangMapStorageClass 1.0
Loading this version of WizBangProjectPersistenceApp would make its associated storage classes (and therefore their stored metadata entities) available to the Model, Schema, and Map Browsers.