Object Dictionary Extensions for ZOM

ZOM stores and manipulates information in the Zim Object Dictionary. This information is stored in fields in the Object Dictionary tables, and additional tables.

ZOM Fields in the Object Dictionary

ZOM uses the following fields in the Object Dictionary EntitySets EntitySets, Relationships, Roles, Fields, Documents, Windows, Displays, Forms, Menus, Directories, Variables, NamedSets and Constants:

ObjectKey

This field is the unique identifier of an object, not only within a given Zim environment, but globally within a given development lab. The key itself does not mean anything, except to serve as a unique identifier for the object. There is a strategy that exists to ensure that keys, when created are globally unique as well as unique within a given environment. For more information on entity keys, see the Dependencies EntitySet section.

ObjectType

This field describes the type of object. It is a constant string that is used by Zim when identifying the object in create and erase statements. For example, the value of ObjectType in the EntitySet Variables is "VARIABLE."

NullObjectKey

This is a virtual field which is set to "Y" if ObjectKey is $null. If ObjectKey is not $null, this field is $null. It is a sparse index, used to find objects which have not been registered in ZOM.

NullDirName

This is a virtual field which is set to "Y" if DirName is $null. If DirName is not $null, this field is $null. It is a sparse index, used to find objects that have not had their DirName set to an explicit value.

The ObjectList EntitySet

The ObjectList contains the registration data for an object in ZOM. It also stores a number of status values and flags which are maintained by ZOM as it performs its actions. The fields in ObjectList are:

ObjectName

 

ObjectType

 

OwnerName

 

DirName

 

NotExist

If set to "Y", indicates that the object is not created in its Zim directory. It is $null if the object exists, which is its most common value. It is a sparse index, so searches on NotExist = "Y" are optimized.

NotDefined

If set to "Y", indicates that the object is not described in the Zim Object Dictionary. It is $null if the object is described, which is its most common value. It is a sparse index, so searches on NotDefined = "Y" are optimised.

NotActive

If set to "Y", indicates that the object is not considered active. Inactive objects are not normally processed. It is $null if the object is considered active, which is its most common value. It is a sparse index, so searches on NotActive = "Y" are optimised.

ToProcess

If set to "Y", indicates that the object is considered to be on the to-process list. If the flag is set to "D" or "P", it indicates that the object was placed on the to-process list by either dependency explosion or dependency implosion. "D" indicates a creation dependency explosion/implosion, and "P" indicates a program tree explosion/implosion. It is $null if the object is considered not on the to-process list, which is its most common value. It is a sparse index, so searches on ToProcess in ("Y","D","P") are optimised.

Locked

If set to "Y", indicates that the object is locked against changes. Many ZOM actions do not operate against locked objects. It is $null if the object is not considered locked, which is its most common value. It is a sparse index, so searches on Locked = "Y" are optimised.

Compilable

If set to "Y", "I" or "M", it indicates that the object is a document which is considered to be a program. If it is set to "Y" or "I", it indicates that the document is to be normally compiled. The "I" value is a special state which indicates that warnings are to be ignored. This applies when the code manipulates such EntitySets as FormFields, which generate warnings when updated. The "M" value indicates that the document is a program but considered to be a macro or template, which is not compiled. It is $null if the object is not to be compiled, which is its most common value. It is a sparse index, so searches on Compilable in ("Y","I","M") are optimised.

CompileError

If set to "Y", indicates that the document, when last compiled, encountered an error or warning. If the compilable flag = "I", it is only "Y" if an error was encountered. It is $null if the object did not encounter an error, which is its most common value. It is a sparse index, so searches on CompileError = "Y" are optimised.

CompileStatus

If set to a value other than $null, it represents the value returned by the function $compilestatus regarding the object. This value is used in conjunction with the compilable flag to determine if a document requires compilation (or uncompilation, if Compilable = $null). It is $null if the object is not a document, which is its most common value. It is a sparse index, so searches on CompileStatus between "0" and "8" are optimised.

AutoDataSave

If set to "Y", indicates that the EntitySet or relationship is to have its contents preserved when recreated. This is its default state EntitySets and relationships with fields, but is irrelevant to all other objects. It is $null if the object is not an EntitySet or relationship with fields, or is not to have data preserved, which is its most common value. It is a sparse index, so searches on AutoDataSave = "Y" are optimised.

Selected

If set to "Y", indicates that the object is selected.. It is $null if the object is not considered to be selected, which is its most common value. It is a sparse index, so searches on Selected = "Y" are optimised.

The Keywords EntitySet

The Keywords EntitySet records the keywords assigned to objects.

The Dependencies EntitySet

The Dependencies EntitySet records interdependent object keys, indicating that a given object depends on another object. This information is deduced at runtime by the ZOM services and should be considered read-only by all other users and processes.

The Shadow Object Dictionary

A number of EntitySets, known collectively as the Shadow Object Dictionary, implement an exact duplicate of the Zim Object Dictionary. Each table starts with "sh", followed by the name of the Object Dictionary table it duplicates, ShEntitySets for example. The Shadow Dictionary is used by ZOM to compare different descriptions for objects (for example, in the ZOMDiff command) and as a staging area for importing and exporting object descriptions.