// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved #pragma namespace ("\\\\.\\root\\default") // ================================================================== // NamedElement // ================================================================== [Assoc ("True") , Description ( "The Meta_NamedElement class represents the root class for the " "Metaschema. It has one property: Name, which is inherited by all the " "non-association classes in the Metaschema. Every metaconstruct is " "expressed as a descendent of the class Meta_Named Element.") ] class Meta_NamedElement { [Description ( "The Name property indicates the name of the current Metaschema element. " "The following rules apply to the Name property, depending on the " "creation type of the object:Note: " "Reference names are not required to be unique within the scope of the " "related class. Within such a scope, the reference provides the name of " "the class within the context defined by the association.") ] string Name; }; // ================================================================== // Schema // ================================================================== [Description ( "The Meta_Schema class represents a group of classes with a single owner." " Schemas are used for administration and class naming. Class names must " "be unique within their owning schemas.") ] class Meta_Schema:Meta_NamedElement { }; // ================================================================== // Trigger // ================================================================== [Description ( "The Meta_Trigger class represents a state change of a class instance (" "such as create, delete, update, or access) or a property (update, or " "access only).") ] class Meta_Trigger:Meta_NamedElement { }; // ================================================================== // Qualifier // ================================================================== [Description ( "The Meta_Qualifier class represents characteristics of named elements. " "For example, there are qualifiers that define the characteristics of a " "property or the key of a class. Qualifiers provide a mechanism that " "makes the Metaschema extensible in a limited and controlled fashion." "

It is possible to add new types of qualifiers by the introduction of " "a new qualifier name, thereby providing new types of metadata to " "processes that manage and manipulate classes, properties, and other " "elements of the Metaschema.") ] class Meta_Qualifier:Meta_NamedElement { [Description ("The Name property indicates the name of the qualifier.") ] string Name; [Description ("The Value property indicates the value of the qualifier." ) ] string Value; }; // ================================================================== // Method // ================================================================== [Description ( "The Meta_Method class represents a declaration of a signature; that is, " "the method name, return type and parameters, and (in the case of a " "concrete class) may imply an implementation.") ] class Meta_Method:Meta_NamedElement { }; // ================================================================== // Property // ================================================================== [Description ( "The Meta_Property class represents a value used to characterize " "instances of a class. A property can be thought of as a pair of Get and " "Set functions that, when applied to an object, return state and set " "state, respectively.") ] class Meta_Property:Meta_NamedElement { }; // ================================================================== // Reference // ================================================================== [Description ( "The Meta_Reference class represents (and defines) the role each object " "plays in an association. The reference represents the role name of a " "class in the context of an association, which supports the provision of " "multiple relationship instances for a given object. For example, a " "system can be related to many system components.") ] class Meta_Reference:Meta_Property { }; // ================================================================== // Class // ================================================================== [Description ( "The Meta_Class class is a collection of instances that support the same " "type; that is, the same properties and methods. Classes can be arranged " "in a generalization hierarchy that represents subtype relationships " "between classes.

The generalization hierarchy is a rooted, directed " "graph and does not support multiple inheritance. Classes can have " "methods, which represent the behavior relevant for that class. A Class " "may participate in associations by being the target of one of the " "references owned by the association.") ] class Meta_Class:Meta_NamedElement { }; // ================================================================== // Indication // ================================================================== [Description ( "The Meta_Indication class represents an object created as a result of a " "trigger. Because Indications are subtypes of Meta_Class, they can have " "properties and methods, and be arranged in a type hierarchy. ") ] class Meta_Indication:Meta_Class { }; // ================================================================== // Association // ================================================================== [Description ( "The Meta_Association class represents a class that contains two or more " "references and represents a relationship between two or more objects. " "Because of how associations are defined, it is possible to establish a " "relationship between classes without affecting any of the related " "classes.

For example, the addition of an association does not affect " "the interface of the related classes; associations have no other " "significance. Only associations can have references. Associations can " "be a subclass of a non-association class . Any subclass of " "Meta_Association is an association.") ] class Meta_Association:Meta_Class { }; // ================================================================== // Characteristics // ================================================================== [Association, Description ( "The Meta_Characteristics class relates a Meta_NamedElement to a " "qualifier that characterizes the named element. Meta_NamedElement may " "have zero or more characteristics.") ] class Meta_Characteristics { [Description ( "The Characteristic reference represents the qualifier that " "characterizes the named element.") ] Meta_Qualifier REF Characteristic; [Description ( "The Characterized reference represents the named element that is being " "characterized.") ] Meta_NamedElement REF Characterized; }; // ================================================================== // PropertyDomain // ================================================================== [Association, Description ( "The Meta_PropertyDomain class represents an association between a class " "and a property.

A property has only one domain: the class that owns " "the property. A property can have an override relationship with another " "property from a different class. The domain of the overridden property " "must be a supertype of the domain of the overriding property. The " "domain of a reference must be an association.") ] class Meta_PropertyDomain { [Description ( "The Property reference represents the property that is owned by the " "class referenced by Domain.") ] Meta_Property REF Property; [Description ( "The Domain reference represents the class that owns the property " "referenced by Property.") ] Meta_Class REF Domain; }; // ================================================================== // MethodDomain // ================================================================== [Association, Description ( "The Meta_MethodDomain class represents an association between a class " "and a method.

A method has only one domain: the class that owns the " "method, which can have an override relationship with another method " "from a different class. The domain of the overridden method must be a " "supertype of the domain of the overriding method. The signature of the " "method (that is, the name, parameters and return type) must be " "identical.") ] class Meta_MethodDomain { [Description ( "The Method reference represents the method that is owned by the class " "referenced by Domain.") ] Meta_Method REF Method; [Description ( "The Domain reference represents the class that owns the method " "referenced by Method.") ] Meta_Class REF Domain; }; // ================================================================== // ReferenceRange // ================================================================== [Association, Description ( "The Meta_ReferenceRange class defines the type of the reference.") ] class Meta_ReferenceRange { [Description ( "The Reference reference represents the reference whose type is defined " "by Range.") ] Meta_Reference REF Reference; [Description ( "The Range reference represents the class that defines the type of " "reference.") ] Meta_Class REF Range; }; // ================================================================== // SubtypeSupertype // ================================================================== [Association, Description ( "The Meta_SubtypeSupertype class represents subtype/supertype " "relationships between classes arranged in a generalization hierarchy. " "This generalization hierarchy is a rooted, directed graph and does not " "support multiple inheritance.") ] class Meta_SubtypeSupertype { [Description ( "The SuperClass reference represents the class that is hierarchically " "immediately above the class referenced by SubClass.") ] Meta_Class REF SuperClass; [Description ( "The SubClass reference represents the class that is the immediate " "descendent of the class referenced by SuperClass.") ] Meta_Class REF SubClass; }; // ================================================================== // PropertyOverride // ================================================================== [Association, Description ( "The Meta_PropertyOverride class represents an association between two " "properties where one overrides the other.

Properties have reflexive " "associations that represent property overriding. A property can " "override an inherited property, which implies that any access to the " "inherited property will result in the invocation of the implementation " "of the overriding property. A Property can have an override " "relationship with another property from a different class.

The domain " "of the overridden property must be a supertype of the domain of the " "overriding property. The class referenced by the Meta_ReferenceRange " "association of an overriding reference must be the same as, or a " "subtype of, the class referenced by the Meta_ReferenceRange " "associations of the reference being overridden.") ] class Meta_PropertyOverride { [Description ( "The OverridingProperty reference represents the property that overrides " "the property referenced by OverriddenProperty.") ] Meta_Property REF OverridingProperty; [Description ( "The OverriddenProperty reference represents the property that is " "overriden by the property reference by OverridingProperty.") ] Meta_Property REF OverriddenProperty; }; // ================================================================== // MethodOverride // ================================================================== [Association, Description ( "The Meta_MethodOverride class represents an association between two " "methods, where one overrides the other. Methods have reflexive " "associations that represent method overriding. A method can override an " "inherited method, which implies that any access to the inherited method " "will result in the invocation of the implementation of the overriding " "method.") ] class Meta_MethodOverride { [Description ( "The OverridingMethod reference represents the method that overrides the " "method referenced by OverriddenMethod.") ] Meta_Method REF OverridingMethod; [Description ( "The OverriddenMethod reference represents the method that is overriden " "by the method reference by OverridingMethod.") ] Meta_Method REF OverriddenMethod; }; // ================================================================== // ElementSchema // ================================================================== [Association, Description ( "The Meta_ElementSchema class represents the elements (typically classes " "and qualifiers) that make up a schema.") ] class Meta_ElementSchema { [Description ( "The Element reference represents the named element that belongs to the " "schema referenced by Schema.") ] Meta_NamedElement REF Element; [Description ( "The Schema reference represents the schema to which the named element " "referenced by Element belongs.") ] Meta_Schema REF Schema; }; // ================================================================== // ElementTrigger // ================================================================== [Association, Description ( "The Meta_ElementTrigger association defines the relationship between an " "element and the triggers that are possible against that element. For " "example, all classes can have creation, deletion, and update triggers " "that are fired when creation, deletion, or update activity is applied " "to the class.") ] class Meta_ElementTrigger { [Description ( "The Element reference represents the named element against which the " "trigger (referenced by Trigger) is activated.") ] Meta_NamedElement REF Element; [Description ( "The Trigger reference represents a trigger that can be activated " "against the named element referenced by Element.") ] Meta_Trigger REF Trigger; };