The InfoDict [Domain] Descriptor can appear anyplace after the InfoHub Descriptor, except immediately prior to an ENV descriptor, but most logically falls between any InfoHub Environment Descriptors and the Publisher Descriptors. An InfoDict is an organizational container or domain. While InfoDicts are the tool for organizing the schema and behavior of the InfoHub, they do so indirectly, and never appear in the paths of the main storage schema. The syntax of an InfoDict Domain Descriptor is:
InfoDict:InfoDictName:[InfoDictID][:{ParentInfoDictID | ParentInfoDictName}]
InfoDictID: A unique number that identifies an InfoDict and does not change once it is defined in an InfoHub.
If there is no InfoDictID, the InfoHub configuration process attempts to map the Name to an existing InfoDict; if it finds none, it generates a new unique random 31-bit positive integer to use (that is, InfoDictID is unique for each InfoHubID), and stores the InfoDictID with the InfoDictName. If the configuration process detects an attempt to map multiple InfoDictIDs to one Name, it produces an IHDUPDICT error. If the configuration process finds no InfoDict Name or defined ID, it produces an IHDICTNAMEREQ error. If the configuration process detects an empty InfoDict, it produces an IHDEADDICT error.
InfoDictName: The Name of the InfoDict. For example, "Servers", "Databases", "Regions", and so on.
ParentInfoDictID or ParentInfoDictName: The InfoDictID or Name of a parent node. For example, "Servers" might be the name of the parent for "Databases".
ParentInfoDictID indicates there is an additional InfoDict domain that contains an item or items which fall above the items in this InfoDict domain in a hierarchy. If the configuration process detects there is no definition for the specified parent Name, it produces an IHPARENTUNDEF error. If the configuration process detects a circular path in InfoDict parent references, it produces an IHCIRCDICT error.
InfoHub Internals | |
---|---|
Configuration processing stores InfoDict domain information in the following nodes: ^InfoHubConf(InfoHubID,"InfoDicts",InfoDictID,BeginningSequenceNumber)=EndingSequenceNumber]:InfoDictName ^InfoHubConf(InfoHubID,"InfoDicts",InfoDictID,BeginningSequenceNumber,0,ParentInfoDictID)=[EndingSequenceNumber]: ^InfoHubConf(InfoHubID,"InfoDicts",InfoDictID,BeginningSequenceNumber,"Children",ChildInfoDictID): this node is only maintained for the current configuration of this InfoHub. |
Example:
InfoDict:GenericDict::SystemDict InfoDictItem:GenericDict:OpLog:1137 InfoDictItem:GenericDict:AuthLog:1139
This example defines an InfoDict Domain called GenericDict and places two InfoDict Items—OpLog and AuthLog—under it. This example is a part of SimpleMonitor.conf configuration file in the ULFM Reference Implementation.