UML Metamodel In TextUML
From textuml
This is the full UML 2.1 metamodel rendered in TextUML. You can render any UML2 .uml file (including the UML metamodel that is shipped with UML2) using the TextUML notation by opening it with the TextUML Viewer.
It is far from perfect, but still can be quite useful. But remember: the TextUML Toolkit is open source, your contributions in the form of bug reports and patches are greatly appreciated.
See also:
Full source
[Ecore::EPackage(packageName="uml",nsPrefix="uml",nsURI="http://www.eclipse.org/uml2/2.1.0/UML",basePackage="org.eclipse.uml2",prefix="UML",annotations=[]), Standard::Metamodel] model uml; apply Ecore; apply Standard; import ecore; (* A comment is a textual annotation that can be attached to a set of elements. *) [Standard::Metaclass] class Comment specializes Element (* Specifies a string that is the comment. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute body : String; (* References the Element(s) being commented. *) public attribute annotatedElement : Element[0, *]; end; (* A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements. *) [Standard::Metaclass] abstract class DirectedRelationship specializes Relationship (* Specifies the sources of the DirectedRelationship. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant source : Element[1, *]; (* Specifies the targets of the DirectedRelationship. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant target : Element[1, *]; end; (* A literal specification identifies a literal constant being modeled. *) [Standard::Metaclass] abstract class LiteralSpecification specializes ValueSpecification end; (* A literal integer is a specification of an integer value. *) [Standard::Metaclass] class LiteralInteger specializes LiteralSpecification (* The specified Integer value. *) public attribute value : Integer := 0; [Ecore::EOperation(annotations=[])] protected operation stringValue() : String; (* The query isComputable() is redefined to be true. *) public operation isComputable() : Boolean; (* The query integerValue() gives the value. *) public operation integerValue() : Integer; end; (* A literal string is a specification of a string value. *) [Standard::Metaclass] class LiteralString specializes LiteralSpecification (* The specified String value. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute value : String; [Ecore::EOperation(annotations=[])] protected operation integerValue() : Integer; [Ecore::EOperation(annotations=[])] protected operation unlimitedValue() : UnlimitedNatural; (* The query isComputable() is redefined to be true. *) public operation isComputable() : Boolean; (* The query stringValue() gives the value. *) public operation stringValue() : String; end; (* A literal Boolean is a specification of a Boolean value. *) [Standard::Metaclass] class LiteralBoolean specializes LiteralSpecification (* The specified Boolean value. *) public attribute value : Boolean := false; [Ecore::EOperation(annotations=[])] protected operation stringValue() : String; (* The query isComputable() is redefined to be true. *) public operation isComputable() : Boolean; (* The query booleanValue() gives the value. *) public operation booleanValue() : Boolean; end; (* A literal null specifies the lack of a value. *) [Standard::Metaclass] class LiteralNull specializes LiteralSpecification (* The query isComputable() is redefined to be true. *) public operation isComputable() : Boolean; (* The query isNull() returns true. *) public operation isNull() : Boolean; end; (* A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element. *) [Standard::Metaclass] class Constraint specializes PackageableElement (* The ordered set of Elements referenced by this Constraint. *) public attribute constrainedElement : Element[0, *]; (* A condition that must be true when evaluated in order for the constraint to be satisfied. *) public attribute specification : ValueSpecification; (* Specifies the namespace that owns the NamedElement. *) public attribute context : Namespace; end; (* An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier. *) [Standard::Metaclass] class ElementImport specializes DirectedRelationship (* Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import. *) public attribute visibility : VisibilityKind := ; (* Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute alias : String; (* Specifies the PackageableElement whose name is to be added to a Namespace. *) public attribute importedElement : PackageableElement; (* Specifies the Namespace that imports a PackageableElement from another Package. *) public attribute importingNamespace : Namespace; (* The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace. *) public operation getName() : String; end; (* A typed element is a kind of named element that represents an element with a type. *) (* A typed element has a type. *) [Standard::Metaclass] abstract class TypedElement specializes NamedElement (* This information is derived from the return result for this Operation. *) (* The type of the TypedElement. *) public attribute type : Type; end; (* A feature declares a behavioral or structural characteristic of instances of classifiers. *) [Standard::Metaclass] abstract class Feature specializes RedefinableElement (* Specifies whether this feature characterizes individual instances classified by the classifier (false) or the classifier itself (true). *) public attribute isStatic : Boolean := false; (* The Classifiers that have this Feature as a feature. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant featuringClassifier : Classifier[0, *]; end; (* A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier. *) [Standard::Metaclass] abstract class RedefinableElement specializes NamedElement (* Indicates whether it is possible to further specialize a RedefinableElement. If the value is true, then it is not possible to further specialize the RedefinableElement. *) public attribute isLeaf : Boolean := false; (* The redefinable element that is being redefined by this element. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant redefinedElement : RedefinableElement[0, *]; (* References the contexts that this element may be redefined from. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant redefinitionContext : Classifier[0, *]; (* The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; (* The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element. *) public operation isRedefinitionContextValid(in redefined : RedefinableElement) : Boolean; end; (* A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier. *) (* By specializing multiplicity element, it supports a multiplicity that specifies valid cardinalities for the collection of values associated with an instantiation of the structural feature. *) [Standard::Metaclass] abstract class StructuralFeature specializes Feature, TypedElement, MultiplicityElement (* States whether the feature's value may be modified by a client. *) public attribute isReadOnly : Boolean := false; end; (* A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature. *) [Standard::Metaclass] class Slot specializes Element (* The instance specification that owns this slot. *) public attribute owningInstance : InstanceSpecification; (* The structural feature that specifies the values that may be held by the slot. *) public attribute definingFeature : StructuralFeature; (* The value or values corresponding to the defining feature for the owning instance specification. *) public attribute value : ValueSpecification[0, *]; end; (* A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces. *) [Standard::Metaclass] class PackageImport specializes DirectedRelationship (* Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not. *) public attribute visibility : VisibilityKind := ; (* Specifies the Namespace that imports the members from a Package. *) public attribute importingNamespace : Namespace; (* Specifies the Package whose members are imported into a Namespace. *) public attribute importedPackage : Package; end; (* A data type is a type whose instances are identified only by their value. A data type may contain attributes to support the modeling of structured data types. *) [Standard::Metaclass] class DataType specializes Classifier (* The Attributes owned by the DataType. *) public attribute ownedAttribute : Property[0, *]; (* The Operations owned by the DataType. *) public attribute ownedOperation : Operation[0, *]; (* Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type. *) public operation createOwnedOperation(in name : String, in parameterNames : String[0, *], in parameterTypes : Type[0, *], in returnType : Type) : Operation; (* Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type. *) public operation createOwnedAttribute(in name : String, in type : Type, in lower : Integer, in upper : UnlimitedNatural) : Property; (* The inherit operation is overridden to exclude redefined properties. *) public operation inherit(in inhs : NamedElement[0, *]) : NamedElement[0, *]; end; (* An enumeration is a data type whose values are enumerated in the model as enumeration literals. *) [Standard::Metaclass] class Enumeration specializes DataType (* The ordered set of literals for this Enumeration. *) public attribute ownedLiteral : EnumerationLiteral[0, *]; end; (* An enumeration literal is a user-defined data value for an enumeration. *) [Standard::Metaclass] class EnumerationLiteral specializes InstanceSpecification (* The Enumeration that this EnumerationLiteral is a member of. *) public attribute enumeration : Enumeration; end; (* A primitive type defines a predefined data type, without any relevant substructure (i.e., it has no parts in the context of UML). A primitive datatype may have an algebra and operations defined outside of UML, for example, mathematically. *) [Standard::Metaclass] class PrimitiveType specializes DataType end; (* An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link. *) [Standard::Metaclass] class Association specializes Relationship, Classifier (* Specifies whether the association is derived from other model elements such as other associations or constraints. *) public attribute isDerived : Boolean := false; (* The ends that are owned by the association itself. *) public attribute ownedEnd : Property[0, *]; (* References the classifiers that are used as types of the ends of the association. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant endType : Type[1, *]; (* Each end represents participation of instances of the classifier connected to the end in links of the association. *) public attribute memberEnd : Property[2, *]; (* The navigable ends that are owned by the association itself. *) public attribute navigableOwnedEnd : Property[0, *]; (* Determines whether this association is a binary association, i.e. whether it has exactly two member ends. *) public operation isBinary() : Boolean; [Ecore::EOperation(operationName="getEndTypes",annotations=[])] (* endType is derived from the types of the member ends. *) public operation endType() : Type[0, *]; end; (* Relationship is an abstract concept that specifies some kind of relationship between elements. *) [Standard::Metaclass] abstract class Relationship specializes Element (* Specifies the elements related by the Relationship. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant relatedElement : Element[1, *]; end; (* A package merge defines how the contents of one package are extended by the contents of another package. *) [Standard::Metaclass] class PackageMerge specializes DirectedRelationship (* References the Package that is being extended with the contents of the merged package of the PackageMerge. *) public attribute receivingPackage : Package; (* References the Package that is to be merged with the receiving package of the PackageMerge. *) public attribute mergedPackage : Package; end; (* An instance value is a value specification that identifies an instance. *) [Standard::Metaclass] class InstanceValue specializes ValueSpecification (* The instance that is the specified value. *) public attribute instance : InstanceSpecification; [Ecore::EOperation(annotations=[])] protected operation stringValue() : String; end; (* A literal unlimited natural is a specification of an unlimited natural number. *) [Standard::Metaclass] class LiteralUnlimitedNatural specializes LiteralSpecification (* The specified UnlimitedNatural value. *) public attribute value : UnlimitedNatural := ; [Ecore::EOperation(annotations=[])] protected operation stringValue() : String; (* The query isComputable() is redefined to be true. *) public operation isComputable() : Boolean; (* The query unlimitedValue() gives the value. *) public operation unlimitedValue() : UnlimitedNatural; end; (* A type is a named element that is used as the type for a typed element. A type can be contained in a package. *) (* A type constrains the values represented by a typed element. *) [Standard::Metaclass] abstract class Type specializes PackageableElement (* Specifies the owning package of this classifier, if any. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute package : Package; (* Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package. *) public operation createAssociation(in end1IsNavigable : Boolean, in end1Aggregation : AggregationKind, in end1Name : String, in end1Lower : Integer, in end1Upper : UnlimitedNatural, in end1Type : Type, in end2IsNavigable : Boolean, in end2Aggregation : AggregationKind, in end2Name : String, in end2Lower : Integer, in end2Upper : UnlimitedNatural) : Association; (* Retrieves the associations in which this type is involved. *) public operation getAssociations() : Association[0, *]; (* The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations. *) public operation conformsTo(in other : Type) : Boolean; end; (* An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context. *) (* An expression represents a node in an expression tree, which may be non-terminal or terminal. It defines a symbol, and has a possibly empty sequence of operands which are value specifications. *) [Standard::Metaclass] class Expression specializes ValueSpecification (* The symbol associated with the node in the expression tree. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute symbol : String; (* Specifies a sequence of operands. *) public attribute operand : ValueSpecification[0, *]; end; (* AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property. *) enumeration AggregationKind none, shared, composite end; (* Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters. *) enumeration ParameterDirectionKind in, inout, out, return end; (* VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model. *) enumeration VisibilityKind public, private, protected, package (* The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility. *) public operation bestVisibility(in vis : VisibilityKind[0, *]) : VisibilityKind; end; association A_ownedElement_owner (* The Elements owned by this element. *) role Element.ownedElement; (* The Element that owns this element. *) role Element.owner; end; association A_source_directedRelationship (* Specifies the sources of the DirectedRelationship. *) role DirectedRelationship.source; role unnamed : DirectedRelationship[0, *]; end; association A_target_directedRelationship (* Specifies the targets of the DirectedRelationship. *) role DirectedRelationship.target; role unnamed : DirectedRelationship[0, *]; end; association A_constrainedElement_constraint (* The ordered set of Elements referenced by this Constraint. *) role Constraint.constrainedElement; role unnamed : Constraint[0, *]; end; association A_type_typedElement (* This information is derived from the return result for this Operation. *) (* The type of the TypedElement. *) role TypedElement.type; role unnamed : TypedElement[0, *]; end; association A_generalization_specific (* Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy. *) role Classifier.generalization; (* References the specializing classifier in the Generalization relationship. *) role Generalization.specific; end; association A_general_generalization (* References the general classifier in the Generalization relationship. *) role Generalization.general; role unnamed : Generalization[0, *]; end; association A_feature_featuringClassifier (* Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features. *) (* Specifies each feature defined in the classifier. *) role Classifier.feature; (* The Classifiers that have this Feature as a feature. *) role Feature.featuringClassifier; end; association A_ownedParameter_ownerFormalParam (* Specifies the ordered set of formal parameters of this BehavioralFeature. *) role BehavioralFeature.ownedParameter; role ownerFormalParam : BehavioralFeature; end; association A_classifier_instanceSpecification (* The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them. *) role InstanceSpecification.classifier; role unnamed : InstanceSpecification[0, *]; end; association A_slot_owningInstance (* A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description. *) role InstanceSpecification.slot; (* The instance specification that owns this slot. *) role Slot.owningInstance; end; association A_definingFeature_slot (* The structural feature that specifies the values that may be held by the slot. *) role Slot.definingFeature; role unnamed : Slot[0, *]; end; association A_annotatedElement_comment (* References the Element(s) being commented. *) role Comment.annotatedElement; role unnamed : Comment[0, *]; end; association A_ownedComment_owningElement (* The Comments owned by this element. *) role Element.ownedComment; role owningElement : Element; end; association A_importedElement_elementImport (* Specifies the PackageableElement whose name is to be added to a Namespace. *) role ElementImport.importedElement; role unnamed : ElementImport[0, *]; end; association A_inheritedMember_classifier (* Specifies all elements inherited by this classifier from the general classifiers. *) role Classifier.inheritedMember; role unnamed : Classifier[0, *]; end; association A_nestedClassifier_class (* References all the Classifiers that are defined (nested) within the Class. *) role Class.nestedClassifier; role class : Class; end; association A_ownedAttribute_class (* The attributes (i.e. the properties) owned by the class. *) role Class.ownedAttribute; (* References the Class that owns the Property. *) role Property.class; end; association A_ownedOperation_class (* The operations owned by the class. *) role Class.ownedOperation; (* The class that owns the operation. *) role Operation.class; end; association A_precondition_preContext (* An optional set of Constraints on the state of the system when the Operation is invoked. *) role Operation.precondition; role preContext : Operation; end; association A_postcondition_postContext (* An optional set of Constraints specifying the state of the system when the Operation is completed. *) role Operation.postcondition; role postContext : Operation; end; association A_redefinedOperation_operation (* References the Operations that are redefined by this Operation. *) role Operation.redefinedOperation; role unnamed : Operation[0, *]; end; association A_redefinedProperty_property (* References the properties that are redefined by this property. *) role Property.redefinedProperty; role unnamed : Property[0, *]; end; association A_ownedEnd_owningAssociation (* The ends that are owned by the association itself. *) role Association.ownedEnd; (* References the owning association of this property, if any. *) role Property.owningAssociation; end; association A_ownedAttribute_datatype (* The Attributes owned by the DataType. *) role DataType.ownedAttribute; (* The DataType that owns this Property. *) role Property.datatype; end; association A_ownedOperation_datatype (* The Operations owned by the DataType. *) role DataType.ownedOperation; (* The DataType that owns this Operation. *) role Operation.datatype; end; association A_ownedLiteral_enumeration (* The ordered set of literals for this Enumeration. *) role Enumeration.ownedLiteral; (* The Enumeration that this EnumerationLiteral is a member of. *) role EnumerationLiteral.enumeration; end; association A_elementImport_importingNamespace (* References the ElementImports owned by the Namespace. *) role Namespace.elementImport; (* Specifies the Namespace that imports a PackageableElement from another Package. *) role ElementImport.importingNamespace; end; association A_packageImport_importingNamespace (* References the PackageImports owned by the Namespace. *) role Namespace.packageImport; (* Specifies the Namespace that imports the members from a Package. *) role PackageImport.importingNamespace; end; association A_importedPackage_packageImport (* Specifies the Package whose members are imported into a Namespace. *) role PackageImport.importedPackage; role unnamed : PackageImport[0, *]; end; association A_redefinedClassifier_classifier (* References the Classifiers that are redefined by this Classifier. *) role Classifier.redefinedClassifier; role unnamed : Classifier[0, *]; end; association A_specification_owningConstraint (* A condition that must be true when evaluated in order for the constraint to be satisfied. *) role Constraint.specification; role owningConstraint : Constraint; end; association A_defaultValue_owningParameter (* Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter. *) role Parameter.defaultValue; role owningParameter : Parameter; end; association A_defaultValue_owningProperty (* A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated. *) role Property.defaultValue; role owningProperty : Property; end; association A_ownedRule_context (* Specifies a set of Constraints owned by this Namespace. *) role Namespace.ownedRule; (* Specifies the namespace that owns the NamedElement. *) role Constraint.context; end; association A_member_namespace (* A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance. *) role Namespace.member; role unnamed : Namespace[0, *]; end; association A_relatedElement_relationship (* Specifies the elements related by the Relationship. *) role Relationship.relatedElement; role unnamed : Relationship[0, *]; end; association A_endType_association (* References the classifiers that are used as types of the ends of the association. *) role Association.endType; role unnamed : Association[0, *]; end; association A_upperValue_owningUpper (* The specification of the upper bound for this multiplicity. *) role MultiplicityElement.upperValue; role owningUpper : MultiplicityElement; end; association A_lowerValue_owningLower (* The specification of the lower bound for this multiplicity. *) role MultiplicityElement.lowerValue; role owningLower : MultiplicityElement; end; composition A_receivingPackage_packageMerge (* References the Package that is being extended with the contents of the merged package of the PackageMerge. *) role PackageMerge.receivingPackage; (* References the PackageMerges that are owned by this Package. *) role Package.packageMerge; end; association A_mergedPackage_packageMerge (* References the Package that is to be merged with the receiving package of the PackageMerge. *) role PackageMerge.mergedPackage; role unnamed : PackageMerge[0, *]; end; association A_instance_instanceValue (* The instance that is the specified value. *) role InstanceValue.instance; role unnamed : InstanceValue[0, *]; end; association A_value_owningSlot (* The value or values corresponding to the defining feature for the owning instance specification. *) role Slot.value; role owningSlot : Slot; end; association A_specification_owningInstanceSpec (* A specification of how to compute, derive, or construct the instance. *) role InstanceSpecification.specification; role owningInstanceSpec : InstanceSpecification; end; association A_packagedElement_owningPackage (* Specifies the packageable elements that are owned by this Package. *) role Package.packagedElement; role owningPackage : Package; end; association A_importedMember_namespace (* References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports. *) role Namespace.importedMember; role unnamed : Namespace[0, *]; end; association A_opposite_property (* In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end. *) role Property.opposite; role unnamed : Property; end; association A_subsettedProperty_property (* References the properties of which this property is constrained to be a subset. *) role Property.subsettedProperty; role unnamed : Property[0, *]; end; association A_memberEnd_association (* Each end represents participation of instances of the classifier connected to the end in links of the association. *) role Association.memberEnd; (* References the association of which this property is a member, if any. *) role Property.association; end; association A_ownedType_package (* References the packaged elements that are Types. *) role Package.ownedType; (* Specifies the owning package of this classifier, if any. *) role Type.package; end; association A_nestedPackage_nestingPackage (* References the packaged elements that are Packages. *) role Package.nestedPackage; (* References the Package that owns this Package. *) role Package.nestingPackage; end; association A_redefinedElement_redefinableElement (* The redefinable element that is being redefined by this element. *) role RedefinableElement.redefinedElement; role unnamed : RedefinableElement[0, *]; end; association A_redefinitionContext_redefinableElement (* References the contexts that this element may be redefined from. *) role RedefinableElement.redefinitionContext; role unnamed : RedefinableElement[0, *]; end; association A_general_classifier (* References the general classifier in the Generalization relationship. *) (* Specifies the general Classifiers for this Classifier. *) role Classifier.general; role unnamed : Classifier[0, *]; end; association A_superClass_class (* This gives the superclasses of a class. *) role Class.superClass; role unnamed : Class[0, *]; end; association A_bodyCondition_bodyContext (* An optional Constraint on the result values of an invocation of this Operation. *) role Operation.bodyCondition; role bodyContext : Operation; end; association A_type_operation (* This information is derived from the return result for this Operation. *) (* Specifies the return result of the operation, if present. *) role Operation.type; role unnamed : Operation[0, *]; end; association A_ownedParameter_operation (* Specifies the ordered set of formal parameters of this BehavioralFeature. *) (* Specifies the parameters owned by this Operation. *) role Operation.ownedParameter; (* References the Operation owning this parameter. *) role Parameter.operation; end; association A_operand_expression (* Specifies a sequence of operands. *) role Expression.operand; role expression : Expression; end; association A_raisedException_operation (* References the Types representing exceptions that may be raised during an invocation of this operation. *) role Operation.raisedException; role unnamed : Operation[0, *]; end; association A_navigableOwnedEnd_association (* The navigable ends that are owned by the association itself. *) role Association.navigableOwnedEnd; role unnamed : Association; end; (* An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context. *) (* Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result. *) [Standard::Metaclass] class OpaqueExpression specializes ValueSpecification (* The text of the expression, possibly in multiple languages. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute body : String[0, *]; (* Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute language : String[0, *]; (* Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant result : Parameter; (* Specifies the behavior of the opaque expression. *) public attribute behavior : Behavior; [Ecore::EOperation(annotations=[])] protected operation getResult() : Parameter; [Ecore::EOperation(annotations=[])] protected operation stringValue() : String; (* The query value() gives an integer value for an expression intended to produce one. *) public operation value() : Integer; (* The query isIntegral() tells whether an expression is intended to produce an integer. *) public operation isIntegral() : Boolean; (* The query isPositive() tells whether an integer expression has a positive value. *) public operation isPositive() : Boolean; (* The query isNonNegative() tells whether an integer expression has a non-negative value. *) public operation isNonNegative() : Boolean; end; (* An behavior with implementation-specific semantics. *) [Standard::Metaclass] class OpaqueBehavior specializes Behavior (* Specifies the behavior in one or more languages. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute body : String[0, *]; (* Languages the body strings use in the same order as the body strings. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute language : String[0, *]; end; (* A function behavior is an opaque behavior that does not access or modify any objects or other external data. *) [Standard::Metaclass] class FunctionBehavior specializes OpaqueBehavior end; composition A_behavioredClassifier_ownedBehavior (* References behavior specifications owned by a classifier. *) role BehavioredClassifier.ownedBehavior; role unnamed : BehavioredClassifier; end; association A_classifierBehavior_behavioredClassifier (* A behavior specification that specifies the behavior of the classifier itself. *) role BehavioredClassifier.classifierBehavior; role unnamed : BehavioredClassifier; end; association A_redefinedBehavior_behavior (* References a behavior that this behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the behavior implements a behavioral feature, it replaces the redefined behavior. If the behavior is a classifier behavior, it extends the redefined behavior. *) role Behavior.redefinedBehavior; role unnamed : Behavior[0, *]; end; association A_method_specification (* A behavioral description that implements the behavioral feature. There may be at most one behavior for a particular pairing of a classifier (as owner of the behavior) and a behavioral feature (as specification of the behavior). *) role BehavioralFeature.method; (* Designates a behavioral feature that the behavior implements. The behavioral feature must be owned by the classifier that owns the behavior or be inherited by it. The parameters of the behavioral feature and the implementing behavior must match. If a behavior does not have a specification, it is directly associated with a classifier (i.e., it is the behavior of the classifier as a whole). *) role Behavior.specification; end; composition A_behavior_ownedParameter (* References a list of parameters to the behavior which describes the order and type of arguments that can be given when the behavior is invoked and of the values which will be returned when the behavior completes its execution. *) role Behavior.ownedParameter; role unnamed : Behavior; end; association A_result_opaqueExpression (* Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior. *) role OpaqueExpression.result; role unnamed : OpaqueExpression[0, *]; end; association A_behavior_opaqueExpression (* Specifies the behavior of the opaque expression. *) role OpaqueExpression.behavior; role unnamed : OpaqueExpression[0, *]; end; association A_context_behavior (* The classifier that is the context for the execution of the behavior. If the behavior is owned by a BehavioredClassifier, that classifier is the context. Otherwise, the context is the first BehavioredClassifier reached by following the chain of owner relationships. For example, following this algorithm, the context of an entry action in a state machine is the classifier that owns the state machine. The features of the context classifier as well as the elements visible to the context classifier are visible to the behavior. *) role Behavior.context; role unnamed : Behavior[0, *]; end; association A_precondition_behavior (* An optional set of Constraints specifying what must be fulfilled when the behavior is invoked. *) role Behavior.precondition; role unnamed : Behavior; end; association A_postcondition_behavior (* An optional set of Constraints specifying what is fulfilled after the execution of the behavior is completed, if its precondition was fulfilled before its invocation. *) role Behavior.postcondition; role unnamed : Behavior; end; (* An action with implementation-specific semantics. *) [Standard::Metaclass] class OpaqueAction specializes Action (* Specifies the action in one or more languages. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute body : String[0, *]; (* Languages the body strings use, in the same order as the body strings *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute language : String[0, *]; (* Provides input to the action. *) public attribute inputValue : InputPin[0, *]; (* Takes output from the action. *) public attribute outputValue : OutputPin[0, *]; end; (* CallAction is an abstract class for actions that invoke behavior and receive return values. *) [Standard::Metaclass] abstract class CallAction specializes InvocationAction (* If true, the call is synchronous and the caller waits for completion of the invoked behavior. If false, the call is asynchronous and the caller proceeds immediately and does not expect a return values. *) public attribute isSynchronous : Boolean := true; (* A list of output pins where the results of performing the invocation are placed. *) public attribute result : OutputPin[0, *]; end; (* A send signal action is an action that creates a signal instance from its inputs, and transmits it to the target object, where it may cause the firing of a state machine transition or the execution of an activity. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor. If the input is already a signal instance, use a send object action. *) [Standard::Metaclass] class SendSignalAction specializes InvocationAction (* The target object to which the signal is sent. *) public attribute target : InputPin; (* The type of signal transmitted to the target object. *) public attribute signal : Signal; end; (* A call operation action is an action that transmits an operation call request to the target object, where it may cause the invocation of associated behavior. The argument values of the action are available to the execution of the invoked behavior. If the action is marked synchronous, the execution of the call operation action waits until the execution of the invoked behavior completes and a reply transmission is returned to the caller; otherwise execution of the action is complete when the invocation of the operation is established and the execution of the invoked operation proceeds concurrently with the execution of the calling behavior. Any values returned as part of the reply transmission are put on the result output pins of the call operation action. Upon receipt of the reply transmission, execution of the call operation action is complete. *) [Standard::Metaclass] class CallOperationAction specializes CallAction (* The operation to be invoked by the action execution. *) public attribute operation : Operation; (* The target object to which the request is sent. The classifier of the target object is used to dynamically determine a behavior to invoke. This object constitutes the context of the execution of the operation. *) public attribute target : InputPin; end; (* A call behavior action is a call action that invokes a behavior directly rather than invoking a behavioral feature that, in turn, results in the invocation of that behavior. The argument values of the action are available to the execution of the invoked behavior. For synchronous calls the execution of the call behavior action waits until the execution of the invoked behavior completes and a result is returned on its output pin. The action completes immediately without a result, if the call is asynchronous. In particular, the invoked behavior may be an activity. *) [Standard::Metaclass] class CallBehaviorAction specializes CallAction (* The invoked behavior. It must be capable of accepting and returning control. *) public attribute behavior : Behavior; end; (* A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element. *) [Standard::Metaclass] abstract class MultiplicityElement specializes Element (* For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered. *) public attribute isOrdered : Boolean := false; (* For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique. *) public attribute isUnique : Boolean := true; (* Specifies the upper bound of the multiplicity interval. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute upper : UnlimitedNatural := ; (* Specifies the lower bound of the multiplicity interval. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute lower : Integer := 1; (* The specification of the upper bound for this multiplicity. *) public attribute upperValue : ValueSpecification; (* The specification of the lower bound for this multiplicity. *) public attribute lowerValue : ValueSpecification; [Ecore::EOperation(annotations=[])] protected operation setLower(in newLower : Integer); [Ecore::EOperation(annotations=[])] protected operation setUpper(in newUpper : UnlimitedNatural); [Ecore::EOperation(operationName="getLower",annotations=[])] (* The derived lower attribute must equal the lowerBound. *) public operation lower() : Integer; [Ecore::EOperation(operationName="getUpper",annotations=[])] (* The derived upper attribute must equal the upperBound. *) public operation upper() : UnlimitedNatural; (* The query isMultivalued() checks whether this multiplicity has an upper bound greater than one. *) public operation isMultivalued() : Boolean; (* The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity. *) public operation includesCardinality(in C : Integer) : Boolean; (* The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity. *) public operation includesMultiplicity(in M : MultiplicityElement) : Boolean; (* The query lowerBound() returns the lower bound of the multiplicity as an integer. *) public operation lowerBound() : Integer; (* The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural. *) public operation upperBound() : UnlimitedNatural; (* The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another. *) public operation compatibleWith(in other : MultiplicityElement) : Boolean; (* The operation is determines if the upper and lower bound of the ranges are the ones given. *) public operation is(in lowerbound : Integer, in upperbound : Integer) : Boolean; end; association A_behavior_callBehaviorAction (* The invoked behavior. It must be capable of accepting and returning control. *) role CallBehaviorAction.behavior; role unnamed : CallBehaviorAction[0, *]; end; association A_operation_callOperationAction (* The operation to be invoked by the action execution. *) role CallOperationAction.operation; role unnamed : CallOperationAction[0, *]; end; association A_target_callOperationAction (* The target object to which the request is sent. The classifier of the target object is used to dynamically determine a behavior to invoke. This object constitutes the context of the execution of the operation. *) role CallOperationAction.target; role unnamed : CallOperationAction; end; association A_target_sendSignalAction (* The target object to which the signal is sent. *) role SendSignalAction.target; role unnamed : SendSignalAction; end; association A_signal_sendSignalAction (* The type of signal transmitted to the target object. *) role SendSignalAction.signal; role unnamed : SendSignalAction[0, *]; end; association A_result_callAction (* A list of output pins where the results of performing the invocation are placed. *) role CallAction.result; role unnamed : CallAction; end; association A_argument_invocationAction (* Specification of the ordered set of argument values that appears during execution. *) role InvocationAction.argument; role unnamed : InvocationAction; end; composition A_action_output (* The ordered set of output pins connected to the Action. The action places its results onto pins in this set. *) role Action.output; role unnamed : Action; end; composition A_action_input (* The ordered set of input pins connected to the Action. These are among the total set of inputs. *) role Action.input; role unnamed : Action; end; association A_value_valuePin (* Value that the pin will provide. *) role ValuePin.value; role unnamed : ValuePin; end; association A_context_action (* The classifier that owns the behavior of which this action is a part. *) role Action.context; role unnamed : Action[0, *]; end; association A_inputValue_opaqueAction (* Provides input to the action. *) role OpaqueAction.inputValue; role unnamed : OpaqueAction; end; association A_outputValue_opaqueAction (* Takes output from the action. *) role OpaqueAction.outputValue; role unnamed : OpaqueAction; end; association A_subgroup_superGroup (* Groups immediately contained in the group. *) role ActivityGroup.subgroup; (* Group immediately containing the group. *) role ActivityGroup.superGroup; end; (* A sequence node is a structured activity node that executes its actions in order. *) [Standard::Metaclass] class SequenceNode specializes StructuredActivityNode (* An ordered set of executable nodes. *) public attribute executableNode : ExecutableNode[0, *]; end; (* An input pin is a pin that holds input values to be consumed by an action. *) [Standard::Metaclass] class InputPin specializes Pin end; (* An output pin is a pin that holds output values produced by an action. *) [Standard::Metaclass] class OutputPin specializes Pin end; composition A_scope_variable (* A structured activity node that owns the variable. *) role Variable.scope; (* A variable defined in the scope of the structured activity node. It has no value and may not be accessed *) role StructuredActivityNode.variable; end; association A_node_inStructuredNode (* Nodes immediately contained in the group. *) role StructuredActivityNode.node; (* Structured activity node containing the node. *) role ActivityNode.inStructuredNode; end; association A_clause_test (* A nested activity fragment with a designated output pin that specifies the result of the test. *) role Clause.test; role unnamed : Clause; end; association A_clause_body (* A nested activity fragment that is executed if the test evaluates to true and the clause is chosen over any concurrent clauses that also evaluate to true. *) role Clause.body; role unnamed : Clause; end; association A_predecessorClause_successorClause (* A set of clauses whose tests must all evaluate false before the current clause can be tested. *) role Clause.predecessorClause; (* A set of clauses which may not be tested unless the current clause tests false. *) role Clause.successorClause; end; association A_loopNode_bodyPart (* The set of nodes and edges that perform the repetitive computations of the loop. The body section is executed as long as the test section produces a true value. *) role LoopNode.bodyPart; role unnamed : LoopNode; end; association A_loopNode_setupPart (* The set of nodes and edges that initialize values or perform other setup computations for the loop. *) role LoopNode.setupPart; role unnamed : LoopNode; end; association A_clause_conditionalNode (* Set of clauses composing the conditional. *) role ConditionalNode.clause; role unnamed : ConditionalNode; end; association A_decider_clause (* An output pin within the test fragment the value of which is examined after execution of the test to determine whether the body should be executed. *) role Clause.decider; role unnamed : Clause; end; association A_decider_loopNode (* An output pin within the test fragment the value of which is examined after execution of the test to determine whether to execute the loop body. *) role LoopNode.decider; role unnamed : LoopNode; end; association A_test_loopNode (* The set of nodes, edges, and designated value that compute a Boolean value to determine if another execution of the body will be performed. *) role LoopNode.test; role unnamed : LoopNode; end; composition A_activity_structuredNode (* Activity immediately containing the node. *) role StructuredActivityNode.activity; (* Top-level structured nodes in the activity. *) role Activity.structuredNode; end; association A_variable_activityScope (* Top-level variables in the activity. *) role Activity.variable; (* An activity that owns the variable. *) role Variable.activityScope; end; association A_executableNode_sequenceNode (* An ordered set of executable nodes. *) role SequenceNode.executableNode; role unnamed : SequenceNode; end; association A_node_activity (* Nodes coordinated by the activity. *) role Activity.node; (* Activity containing the node. *) role ActivityNode.activity; end; (* A usage is a relationship in which one element requires another element (or set of elements) for its full implementation or operation. A usage is a dependency in which the client requires the presence of the supplier. *) [Standard::Metaclass] class Usage specializes Dependency end; (* An abstraction is a relationship that relates two elements or sets of elements that represent the same concept at different levels of abstraction or from different viewpoints. *) [Standard::Metaclass] class Abstraction specializes Dependency (* An composition of an Expression that states the abstraction relationship between the supplier and the client. In some cases, such as Derivation, it is usually formal and unidirectional; in other cases, such as Trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the elements is not specified. *) public attribute mapping : OpaqueExpression; end; (* A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s). *) [Standard::Metaclass] class Dependency specializes DirectedRelationship, PackageableElement (* The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific. *) public attribute supplier : NamedElement[1, *]; (* The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation. *) public attribute client : NamedElement[1, *]; end; (* Realization is a specialized abstraction relationship between two sets of model elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc. *) [Standard::Metaclass] class Realization specializes Abstraction end; (* A substitution is a relationship between two classifiers signifies that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected. *) [Standard::Metaclass] class Substitution specializes Realization (* The contract with which the substituting classifier complies. *) public attribute contract : Classifier; (* Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected. *) public attribute substitutingClassifier : Classifier; end; (* A namespace is an element in a model that contains a set of named elements that can be identified by name. *) [Standard::Metaclass] abstract class Namespace specializes NamedElement (* References the ElementImports owned by the Namespace. *) public attribute elementImport : ElementImport[0, *]; (* References the PackageImports owned by the Namespace. *) public attribute packageImport : PackageImport[0, *]; (* Specifies a set of Constraints owned by this Namespace. *) public attribute ownedRule : Constraint[0, *]; (* A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant member : NamedElement[0, *]; (* References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant importedMember : PackageableElement[0, *]; (* A collection of NamedElements owned by the Namespace. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant ownedMember : NamedElement[0, *]; (* Creates an import of the specified element into this namespace with the specified visibility. *) public operation createElementImport(in element : PackageableElement, in visibility : VisibilityKind) : ElementImport; (* Creates an import of the specified package into this namespace with the specified visibility. *) public operation createPackageImport(in package_ : Package, in visibility : VisibilityKind) : PackageImport; (* Retrieves the elements imported by this namespace. *) public operation getImportedElements() : PackageableElement[0, *]; (* Retrieves the packages imported by this namespace. *) public operation getImportedPackages() : Package[0, *]; [Ecore::EOperation(operationName="getImportedMembers",annotations=[])] (* The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports. *) public operation importedMember() : PackageableElement[0, *]; (* The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package. *) (* The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. The query takes account of importing. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package. *) public operation getNamesOfMember(in element : NamedElement) : String[0, *]; (* The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it. *) public operation membersAreDistinguishable() : Boolean; (* The query importMembers() defines which of a set of PackageableElements are actually imported into the namespace. This excludes hidden ones, i.e., those which have names that conflict with names of owned members, and also excludes elements which would have the same name when imported. *) public operation importMembers(in imps : PackageableElement[0, *]) : PackageableElement[0, *]; (* The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace. *) public operation excludeCollisions(in imps : PackageableElement[0, *]) : PackageableElement[0, *]; end; association A_mapping_abstraction (* An composition of an Expression that states the abstraction relationship between the supplier and the client. In some cases, such as Derivation, it is usually formal and unidirectional; in other cases, such as Trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the elements is not specified. *) role Abstraction.mapping; role unnamed : Abstraction; end; association A_contract_substitution (* The contract with which the substituting classifier complies. *) role Substitution.contract; role unnamed : Substitution[0, *]; end; association A_substitution_substitutingClassifier (* References the substitutions that are owned by this Classifier. *) role Classifier.substitution; (* Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected. *) role Substitution.substitutingClassifier; end; association A_supplierDependency_supplier (* The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific. *) role Dependency.supplier; (* Indicates the dependencies that reference the supplier. *) role supplierDependency : Dependency[0, *]; end; association A_clientDependency_client (* Indicates the dependencies that reference the client. *) role NamedElement.clientDependency; (* The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation. *) role Dependency.client; end; association A_ownedMember_namespace (* A collection of NamedElements owned by the Namespace. *) role Namespace.ownedMember; (* Specifies the namespace that owns the NamedElement. *) role NamedElement.namespace; end; (* An interface realization is a specialized realization relationship between a classifier and an interface. This relationship signifies that the realizing classifier conforms to the contract specified by the interface. *) [Standard::Metaclass] class InterfaceRealization specializes Realization (* References the Interface specifying the conformance contract. *) public attribute contract : Interface; (* References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points). *) public attribute implementingClassifier : BehavioredClassifier; end; composition A_interface_ownedAttribute (* The attributes (i.e. the properties) owned by the class. *) role Interface.ownedAttribute; role unnamed : Interface; end; composition A_interface_ownedOperation (* The Interface that owns this Operation. *) role Operation.interface; (* The operations owned by the class. *) role Interface.ownedOperation; end; association A_contract_interfaceRealization (* References the Interface specifying the conformance contract. *) role InterfaceRealization.contract; role unnamed : InterfaceRealization[0, *]; end; association A_interfaceRealization_implementingClassifier (* The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation. *) role BehavioredClassifier.interfaceRealization; (* References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points). *) role InterfaceRealization.implementingClassifier; end; association A_nestedClassifier_interface (* References all the Classifiers that are defined (nested) within the Class. *) role Interface.nestedClassifier; role unnamed : Interface; end; association A_interface_redefinedInterface (* References all the Interfaces redefined by this Interface. *) role Interface.redefinedInterface; role unnamed : Interface[0, *]; end; (* A structured classifier is an abstract metaclass that represents any classifier whose behavior can be fully or partly described by the collaboration of owned or referenced instances. *) [Standard::Metaclass] abstract class StructuredClassifier specializes Classifier (* References the properties owned by the classifier. *) public attribute ownedAttribute : Property[0, *]; (* References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant part : Property[0, *]; (* References the roles that instances may play in this classifier. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant role : ConnectableElement[0, *]; (* References the connectors owned by the classifier. *) public attribute ownedConnector : Connector[0, *]; (* Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier. *) public operation createOwnedAttribute(in name : String, in type : Type, in lower : Integer, in upper : UnlimitedNatural) : Property; end; association A_type_connector (* An optional association that specifies the link corresponding to this connector. *) role Connector.type; role unnamed : Connector[0, *]; end; association A_ownedAttribute_structuredClassifier (* References the properties owned by the classifier. *) role StructuredClassifier.ownedAttribute; role unnamed : StructuredClassifier; end; association A_part_structuredClassifier (* References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true. *) role StructuredClassifier.part; role unnamed : StructuredClassifier; end; association A_role_structuredClassifier (* References the roles that instances may play in this classifier. *) role StructuredClassifier.role; role unnamed : StructuredClassifier[0, *]; end; association A_ownedConnector_structuredClassifier (* References the connectors owned by the classifier. *) role StructuredClassifier.ownedConnector; role unnamed : StructuredClassifier; end; association A_redefinedConnector_connector (* A connector may be redefined when its containing classifier is specialized. The redefining connector may have a type that specializes the type of the redefined connector. The types of the connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced. *) role Connector.redefinedConnector; role unnamed : Connector[0, *]; end; association A_end_connector (* A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered. *) role Connector.end; role unnamed : Connector; end; association A_definingEnd_connectorEnd (* A derived association referencing the corresponding association end on the association which types the connector owing this connector end. This association is derived by selecting the association end at the same place in the ordering of association ends as this connector end. *) role ConnectorEnd.definingEnd; role unnamed : ConnectorEnd[0, *]; end; association A_attribute_classifier (* Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier. *) role Classifier.attribute; role classifier : Classifier; end; (* Variables are elements for passing data between actions indirectly. A local variable stores values shared by the actions within a structured activity group but not accessible outside it. The output of an action may be written to a variable and read for the input to a subsequent action, which is effectively an indirect data flow path. Because there is no predefined relationship between actions that read and write variables, these actions must be sequenced by control flows to prevent race conditions that may occur between actions that read or write the same variable. *) (* A variable is considered a connectable element. *) [Standard::Metaclass] class Variable specializes MultiplicityElement, ConnectableElement (* A structured activity node that owns the variable. *) public attribute scope : StructuredActivityNode; (* An activity that owns the variable. *) public attribute activityScope : Activity; (* The isAccessibleBy() operation is not defined in standard UML. Implementations should define it to specify which actions can access a variable. *) public operation isAccessibleBy(in a : Action) : Boolean; end; (* A collaboration use represents one particular use of a collaboration to explain the relationships between the properties of a classifier. A collaboration use shows how the pattern described by a collaboration is applied in a given context, by binding specific entities from that context to the roles of the collaboration. Depending on the context, these entities could be structural features of a classifier, instance specifications, or even roles in some containing collaboration. There may be multiple occurrences of a given collaboration within a classifier, each involving a different set of roles and connectors. A given role or connector may be involved in multiple occurrences of the same or different collaborations. Associated dependencies map features of the collaboration type to features in the classifier. These dependencies indicate which role in the classifier plays which role in the collaboration. *) [Standard::Metaclass] class CollaborationUse specializes NamedElement (* The collaboration which is used in this occurrence. The collaboration defines the cooperation between its roles which are mapped to properties of the classifier owning the collaboration use. *) public attribute type : Collaboration; (* A mapping between features of the collaboration type and features of the classifier or operation. This mapping indicates which connectable element of the classifier or operation plays which role(s) in the collaboration. A connectable element may be bound to multiple roles in the same collaboration use (that is, it may play multiple roles). *) public attribute roleBinding : Dependency[0, *]; end; (* A collaboration use represents the application of the pattern described by a collaboration to a specific situation involving specific classes or instances playing the roles of the collaboration. *) [Standard::Metaclass] class Collaboration specializes StructuredClassifier, BehavioredClassifier (* References connectable elements (possibly owned by other classifiers) which represent roles that instances may play in this collaboration. *) public attribute collaborationRole : ConnectableElement[0, *]; end; association A_type_collaborationUse (* The collaboration which is used in this occurrence. The collaboration defines the cooperation between its roles which are mapped to properties of the classifier owning the collaboration use. *) role CollaborationUse.type; role unnamed : CollaborationUse[0, *]; end; association A_roleBinding_collaborationUse (* A mapping between features of the collaboration type and features of the classifier or operation. This mapping indicates which connectable element of the classifier or operation plays which role(s) in the collaboration. A connectable element may be bound to multiple roles in the same collaboration use (that is, it may play multiple roles). *) role CollaborationUse.roleBinding; role unnamed : CollaborationUse; end; association A_classifier_representation (* References a collaboration use which indicates the collaboration that represents this classifier. *) role Classifier.representation; role unnamed : Classifier; end; association A_collaborationUse_classifier (* References the collaboration uses owned by the classifier. *) role Classifier.collaborationUse; role unnamed : Classifier; end; association A_collaborationRole_collaboration (* References connectable elements (possibly owned by other classifiers) which represent roles that instances may play in this collaboration. *) role Collaboration.collaborationRole; role unnamed : Collaboration[0, *]; end; (* A control node is an abstract activity node that coordinates flows in an activity. *) [Standard::Metaclass] abstract class ControlNode specializes ActivityNode end; (* A control flow is an edge that starts an activity node after the previous one is finished. *) [Standard::Metaclass] class ControlFlow specializes ActivityEdge end; (* An initial node is a control node at which flow starts when the activity is invoked. *) [Standard::Metaclass] class InitialNode specializes ControlNode end; (* An activity parameter node is an object node for inputs and outputs to activities. *) [Standard::Metaclass] class ActivityParameterNode specializes ObjectNode (* The parameter the object node will be accepting or providing values for. *) public attribute parameter : Parameter; end; (* A value pin is an input pin that provides a value by evaluating a value specification. *) [Standard::Metaclass] class ValuePin specializes InputPin (* Value that the pin will provide. *) public attribute value : ValueSpecification; end; composition A_activity_edge (* Activity containing the edge. *) role ActivityEdge.activity; (* Edges expressing flow between nodes of the activity. *) role Activity.edge; end; association A_outgoing_source (* Edges that have the node as source. *) role ActivityNode.outgoing; (* Node from which tokens are taken when they traverse the edge. *) role ActivityEdge.source; end; association A_target_incoming (* Node to which tokens are put when they traverse the edge. *) role ActivityEdge.target; (* Edges that have the node as target. *) role ActivityNode.incoming; end; association A_parameter_activityParameterNode (* The parameter the object node will be accepting or providing values for. *) role ActivityParameterNode.parameter; role unnamed : ActivityParameterNode[0, *]; end; association A_redefinedNode_activityNode (* Inherited nodes replaced by this node in a specialization of the activity. *) role ActivityNode.redefinedNode; role unnamed : ActivityNode[0, *]; end; association A_redefinedEdge_activityEdge (* Inherited edges replaced by this edge in a specialization of the activity. *) role ActivityEdge.redefinedEdge; role unnamed : ActivityEdge[0, *]; end; (* A message defines a particular communication between lifelines of an interaction. *) [Standard::Metaclass] class Message specializes NamedElement (* The derived kind of the Message (complete, lost, found or unknown) *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant messageKind : MessageKind := ; (* The sort of communication reflected by the Message *) public attribute messageSort : MessageSort := ; (* References the Receiving of the Message *) public attribute receiveEvent : MessageEnd; (* References the Sending of the Message. *) public attribute sendEvent : MessageEnd; (* The Connector on which this Message is sent. *) public attribute connector : Connector; (* The enclosing Interaction owning the Message *) public attribute interaction : Interaction; (* The arguments of the Message *) public attribute argument : ValueSpecification[0, *]; (* The definition of the type or signature of the Message (depending on its kind). The associated named element is derived from the message end that constitutes the sending or receiving message event. If both a sending event and a receiving message event are present, the signature is obtained from the sending event. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant signature : NamedElement; [Ecore::EOperation(annotations=[])] protected operation getMessageKind() : MessageKind; [Ecore::EOperation(annotations=[])] protected operation getSignature() : NamedElement; end; (* A general ordering represents a binary relation between two occurrence specifications, to describe that one occurrence specification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of occurrence cpecifications that may otherwise not have a specified order. *) [Standard::Metaclass] class GeneralOrdering specializes NamedElement (* The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after. *) public attribute before : OccurrenceSpecification; (* The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before. *) public attribute after : OccurrenceSpecification; end; (* An execution specification is a specification of the execution of a unit of behavior or action within the lifeline. The duration of an execution specification is represented by two cccurrence specifications, the start occurrence specification and the finish occurrence specification. *) [Standard::Metaclass] abstract class ExecutionSpecification specializes InteractionFragment (* References the OccurrenceSpecification that designates the start of the Action or Behavior *) public attribute start : OccurrenceSpecification; (* References the OccurrenceSpecification that designates the finish of the Action or Behavior. *) public attribute finish : OccurrenceSpecification; end; (* An occurrence specification is the basic semantic unit of interactions. The sequences of occurrences specified by them are the meanings of interactions. *) [Standard::Metaclass] class OccurrenceSpecification specializes InteractionFragment (* References the Lifeline on which the OccurrenceSpecification appears. *) public attribute covered : Lifeline; (* References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification *) public attribute toAfter : GeneralOrdering[0, *]; (* References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification *) public attribute toBefore : GeneralOrdering[0, *]; (* References a specification of the occurring event. *) public attribute event : Event; end; (* MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a message. *) [Standard::Metaclass] abstract class MessageEnd specializes NamedElement (* References a Message. *) public attribute message : Message; end; (* A state invariant is a runtime constraint on the participants of the interaction. It may be used to specify a variety of different kinds of constraints, such as values of attributes or variables, internal or external states, and so on. A state invariant is an interaction fragment and it is placed on a lifeline. *) [Standard::Metaclass] class StateInvariant specializes InteractionFragment (* A Constraint that should hold at runtime for this StateInvariant *) public attribute invariant : Constraint; (* References the Lifeline on which the StateInvariant appears. *) public attribute covered : Lifeline; end; (* An action execution specification is a kind of execution specification representing the execution of an action. *) [Standard::Metaclass] class ActionExecutionSpecification specializes ExecutionSpecification (* Action whose execution is occurring. *) public attribute action : Action; end; (* A behavior execution specification is a kind of execution specification representing the execution of a behavior. *) [Standard::Metaclass] class BehaviorExecutionSpecification specializes ExecutionSpecification (* Behavior whose execution is occurring. *) public attribute behavior : Behavior; end; (* An execution event models the start or finish of an execution occurrence. *) [Standard::Metaclass] class ExecutionEvent specializes Event end; (* A creation event models the creation of an object. *) [Standard::Metaclass] class CreationEvent specializes Event end; (* A destruction event models the destruction of an object. *) [Standard::Metaclass] class DestructionEvent specializes Event end; (* A send operation event models the invocation of an operation call. *) [Standard::Metaclass] class SendOperationEvent specializes MessageEvent (* The operation associated with this event. *) public attribute operation : Operation; end; (* A send signal event models the sending of a signal. *) [Standard::Metaclass] class SendSignalEvent specializes MessageEvent (* The signal associated with this event. *) public attribute signal : Signal; end; (* A message occurrence specification pecifies the occurrence of message events, such as sending and receiving of signals or invoking or receiving of operation calls. A message occurrence specification is a kind of message end. Messages are generated either by synchronous operation calls or asynchronous signal sends. They are received by the execution of corresponding accept event actions. *) [Standard::Metaclass] class MessageOccurrenceSpecification specializes MessageEnd, OccurrenceSpecification end; (* An execution occurrence specification represents moments in time at which actions or behaviors start or finish. *) [Standard::Metaclass] class ExecutionOccurrenceSpecification specializes OccurrenceSpecification (* References the execution specification describing the execution that is started or finished at this execution event. *) public attribute execution : ExecutionSpecification; (* The event referenced is restricted to an execution event. *) public attribute event : ExecutionEvent; end; (* A receive operation event specifies the event of receiving an operation invocation for a particular operation by the target entity. *) [Standard::Metaclass] class ReceiveOperationEvent specializes MessageEvent (* The operation associated with this event. *) public attribute operation : Operation; end; (* A receive signal event specifies the event of receiving a signal by the target entity. *) [Standard::Metaclass] class ReceiveSignalEvent specializes MessageEvent (* The signal associated with this event. *) public attribute signal : Signal; end; (* This is an enumerated type that identifies the type of message. *) enumeration MessageKind complete, lost, found, unknown end; (* This is an enumerated type that identifies the type of communication action that was used to generate the message. *) enumeration MessageSort synchCall, asynchCall, asynchSignal, createMessage, deleteMessage, reply end; (* This association shows the lifelines that make up an interaction. A lifeline may be part of more than one interaction use. *) association A_covered_coveredBy (* References the Lifelines that the InteractionFragment involves. *) role InteractionFragment.covered; (* References the InteractionFragments in which this Lifeline takes part. *) role Lifeline.coveredBy; end; (* The event shows the time point at which the action begins execution. *) association A_executionSpecification_start (* References the OccurrenceSpecification that designates the start of the Action or Behavior *) role ExecutionSpecification.start; role unnamed : ExecutionSpecification[0, *]; end; (* The event shows the time point at which the action completes execution. *) association A_executionSpecification_finish (* References the OccurrenceSpecification that designates the finish of the Action or Behavior. *) role ExecutionSpecification.finish; role unnamed : ExecutionSpecification[0, *]; end; (* If a Part has multiplicity, multiple lifelines might be used to show it. *) association A_lifeline_represents (* References the ConnectableElement within the classifier that contains the enclosing interaction. *) role Lifeline.represents; role unnamed : Lifeline[0, *]; end; association A_lifeline_interaction (* Specifies the participants in this Interaction. *) role Interaction.lifeline; (* References the Interaction enclosing this Lifeline. *) role Lifeline.interaction; end; association A_receiveEvent_message (* References the Receiving of the Message *) role Message.receiveEvent; role unnamed : Message; end; association A_sendEvent_message (* References the Sending of the Message. *) role Message.sendEvent; role unnamed : Message; end; association A_events_covered (* References the Lifeline on which the OccurrenceSpecification appears. *) role OccurrenceSpecification.covered; role events : OccurrenceSpecification[0, *]; end; association A_selector_lifeline (* If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set. *) role Lifeline.selector; role unnamed : Lifeline; end; association A_connector_message (* The Connector on which this Message is sent. *) role Message.connector; role unnamed : Message[0, *]; end; association A_message_interaction (* The Messages contained in this Interaction. *) role Interaction.message; (* The enclosing Interaction owning the Message *) role Message.interaction; end; association A_before_toAfter (* The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after. *) role GeneralOrdering.before; (* References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification *) role OccurrenceSpecification.toAfter; end; association A_toBefore_after (* References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification *) role OccurrenceSpecification.toBefore; (* The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before. *) role GeneralOrdering.after; end; association A_argument_message (* The arguments of the Message *) role Message.argument; role unnamed : Message; end; association A_invariant_stateInvariant (* A Constraint that should hold at runtime for this StateInvariant *) role StateInvariant.invariant; role unnamed : StateInvariant; end; association A_stateInvariant_covered (* References the Lifeline on which the StateInvariant appears. *) role StateInvariant.covered; role stateInvariant : StateInvariant[0, *]; end; association A_generalOrdering_interactionFragment (* The general ordering relationships contained in this fragment. *) role InteractionFragment.generalOrdering; role unnamed : InteractionFragment; end; composition A_enclosingInteraction_fragment (* The Interaction enclosing this InteractionFragment. *) role InteractionFragment.enclosingInteraction; (* The ordered set of fragments in the Interaction. *) role Interaction.fragment; end; association A_behavior_behaviorExecutionSpecification (* Behavior whose execution is occurring. *) role BehaviorExecutionSpecification.behavior; role unnamed : BehaviorExecutionSpecification[0, *]; end; association A_action_actionExecutionSpecification (* Action whose execution is occurring. *) role ActionExecutionSpecification.action; role unnamed : ActionExecutionSpecification[0, *]; end; association A_signature_message (* The definition of the type or signature of the Message (depending on its kind). The associated named element is derived from the message end that constitutes the sending or receiving message event. If both a sending event and a receiving message event are present, the signature is obtained from the sending event. *) role Message.signature; role unnamed : Message[0, *]; end; association A_operation_sendOperationEvent (* The operation associated with this event. *) role SendOperationEvent.operation; role unnamed : SendOperationEvent[0, *]; end; association A_signal_sendSignalEvent (* The signal associated with this event. *) role SendSignalEvent.signal; role unnamed : SendSignalEvent[0, *]; end; association A_message_messageEnd (* References a Message. *) role MessageEnd.message; role unnamed : MessageEnd; end; association A_event_occurrenceSpecification (* References a specification of the occurring event. *) role OccurrenceSpecification.event; role unnamed : OccurrenceSpecification[0, *]; end; association A_action_interaction (* Actions owned by the Interaction. *) role Interaction.action; role unnamed : Interaction; end; association A_execution_executionOccurrenceSpecification (* References the execution specification describing the execution that is started or finished at this execution event. *) role ExecutionOccurrenceSpecification.execution; role unnamed : ExecutionOccurrenceSpecification; end; association A_event_executionOccurrenceSpecification (* The event referenced is restricted to an execution event. *) role ExecutionOccurrenceSpecification.event; role unnamed : ExecutionOccurrenceSpecification[0, *]; end; association A_operation_receiveOperationEvent (* The operation associated with this event. *) role ReceiveOperationEvent.operation; role unnamed : ReceiveOperationEvent[0, *]; end; association A_signal_receiveSignalEvent (* The signal associated with this event. *) role ReceiveSignalEvent.signal; role unnamed : ReceiveSignalEvent[0, *]; end; (* An actor specifies a role played by a user or any other system that interacts with the subject. *) [Standard::Metaclass] class Actor specializes BehavioredClassifier end; (* A relationship from an extending use case to an extended use case that specifies how and when the behavior defined in the extending use case can be inserted into the behavior defined in the extended use case. *) [Standard::Metaclass] class Extend specializes DirectedRelationship, NamedElement (* References the use case that is being extended. *) public attribute extendedCase : UseCase; (* References the use case that represents the extension and owns the extend relationship. *) public attribute extension : UseCase; (* References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional. *) public attribute condition : Constraint; (* An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case is associated with the first extension point in the list, the second fragment with the second point, and so on. (Note that, in most practical cases, the extending use case has just a single behavior fragment, so that the list of extension points is trivial.) *) public attribute extensionLocation : ExtensionPoint[1, *]; end; (* An include relationship defines that a use case contains the behavior defined in another use case. *) [Standard::Metaclass] class Include specializes DirectedRelationship, NamedElement (* References the use case which will include the addition and owns the include relationship. *) public attribute includingCase : UseCase; (* References the use case that is to be included. *) public attribute addition : UseCase; end; (* A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system. *) [Standard::Metaclass] class UseCase specializes BehavioredClassifier (* References the Include relationships owned by this use case. *) public attribute include : Include[0, *]; (* References the Extend relationships owned by this use case. *) public attribute extend : Extend[0, *]; (* References the ExtensionPoints owned by the use case. *) public attribute extensionPoint : ExtensionPoint[0, *]; (* References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it. *) public attribute subject : Classifier[0, *]; (* The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case. *) public operation allIncludedUseCases() : UseCase[0, *]; end; (* An extension point identifies a point in the behavior of a use case where that behavior can be extended by the behavior of some other (extending) use case, as specified by an extend relationship. *) [Standard::Metaclass] class ExtensionPoint specializes RedefinableElement (* References the use case that owns this extension point. *) public attribute useCase : UseCase; end; composition A_includingCase_include (* References the use case which will include the addition and owns the include relationship. *) role Include.includingCase; (* References the Include relationships owned by this use case. *) role UseCase.include; end; association A_addition_include (* References the use case that is to be included. *) role Include.addition; role unnamed : Include[0, *]; end; association A_extendedCase_extend (* References the use case that is being extended. *) role Extend.extendedCase; role unnamed : Extend[0, *]; end; composition A_extension_extend (* References the use case that represents the extension and owns the extend relationship. *) role Extend.extension; (* References the Extend relationships owned by this use case. *) role UseCase.extend; end; association A_extensionPoint_useCase (* References the ExtensionPoints owned by the use case. *) role UseCase.extensionPoint; (* References the use case that owns this extension point. *) role ExtensionPoint.useCase; end; association A_condition_extend (* References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional. *) role Extend.condition; role unnamed : Extend; end; association A_extensionLocation_extension (* An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case is associated with the first extension point in the list, the second fragment with the second point, and so on. (Note that, in most practical cases, the extending use case has just a single behavior fragment, so that the list of extension points is trivial.) *) role Extend.extensionLocation; role extension : Extend[0, *]; end; association A_ownedUseCase_classifier (* References the use cases owned by this classifier. *) role Classifier.ownedUseCase; role unnamed : Classifier; end; association A_subject_useCase (* References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it. *) role UseCase.subject; (* The set of use cases for which this Classifier is the subject. *) role Classifier.useCase; end; (* A call event models the receipt by an object of a message invoking a call of an operation. *) [Standard::Metaclass] class CallEvent specializes MessageEvent (* Designates the operation whose invocation raised the call event. *) public attribute operation : Operation; end; (* A change event models a change in the system configuration that makes a condition true. *) [Standard::Metaclass] class ChangeEvent specializes Event (* A Boolean-valued expression that will result in a change event whenever its value changes from false to true. *) public attribute changeExpression : ValueSpecification; end; (* A reception is a declaration stating that a classifier is prepared to react to the receipt of a signal. A reception designates a signal and specifies the expected behavioral response. The details of handling a signal are specified by the behavior associated with the reception or the classifier itself. *) [Standard::Metaclass] class Reception specializes BehavioralFeature (* The signal that this reception handles. *) public attribute signal : Signal; end; (* A signal is a specification of send request instances communicated between objects. The receiving object handles the received request instances as specified by its receptions. The data carried by a send request (which was passed to it by the send invocation occurrence that caused that request) are represented as attributes of the signal. A signal is defined independently of the classifiers handling the signal occurrence. *) [Standard::Metaclass] class Signal specializes Classifier (* The attributes owned by the signal. *) public attribute ownedAttribute : Property[0, *]; (* Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal. *) public operation createOwnedAttribute(in name : String, in type : Type, in lower : Integer, in upper : UnlimitedNatural) : Property; end; (* A signal event represents the receipt of an asynchronous signal instance. A signal event may, for example, cause a state machine to trigger a transition. *) [Standard::Metaclass] class SignalEvent specializes MessageEvent (* The specific signal that is associated with this event. *) public attribute signal : Signal; end; (* A message event specifies the receipt by an object of either a call or a signal. *) [Standard::Metaclass] abstract class MessageEvent specializes Event end; (* A transition trigger associated with an any receive event specifies that the transition is to be triggered by the receipt of any message that is not explicitly referenced in another transition from the same vertex. *) [Standard::Metaclass] class AnyReceiveEvent specializes MessageEvent end; (* A behaviored classifier may have an interface realization. *) (* A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself. *) [Standard::Metaclass] abstract class BehavioredClassifier specializes Classifier (* References behavior specifications owned by a classifier. *) public attribute ownedBehavior : Behavior[0, *]; (* A behavior specification that specifies the behavior of the classifier itself. *) public attribute classifierBehavior : Behavior; (* The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation. *) public attribute interfaceRealization : InterfaceRealization[0, *]; (* References Trigger descriptions owned by a Classifier. *) public attribute ownedTrigger : Trigger[0, *]; (* Retrieves the interfaces on which this behaviored classifier has an interface realization dependency. *) public operation getImplementedInterfaces() : Interface[0, *]; (* Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency. *) public operation getAllImplementedInterfaces() : Interface[0, *]; end; (* An event is the specification of some occurrence that may potentially trigger effects by an object. *) [Standard::Metaclass] abstract class Event specializes PackageableElement end; (* CallConcurrencyKind is an enumeration type. *) enumeration CallConcurrencyKind sequential, guarded, concurrent end; association A_reception_signal (* The signal that this reception handles. *) role Reception.signal; role unnamed : Reception[0, *]; end; association A_operation_callEvent (* Designates the operation whose invocation raised the call event. *) role CallEvent.operation; role unnamed : CallEvent[0, *]; end; association A_signal_signalEvent (* The specific signal that is associated with this event. *) role SignalEvent.signal; role unnamed : SignalEvent[0, *]; end; association A_ownedReception_interface (* Receptions that objects providing this interface are willing to accept. *) role Interface.ownedReception; role unnamed : Interface; end; association A_ownedReception_class (* Receptions that objects of this class are willing to accept. *) role Class.ownedReception; role unnamed : Class; end; association A_changeExpression_changeEvent (* A Boolean-valued expression that will result in a change event whenever its value changes from false to true. *) role ChangeEvent.changeExpression; role unnamed : ChangeEvent; end; association A_raisedException_behavioralFeature (* References the Types representing exceptions that may be raised during an invocation of this feature. *) (* The signals that the behavioral feature raises as exceptions. *) role BehavioralFeature.raisedException; role unnamed : BehavioralFeature[0, *]; end; association A_ownedAttribute_owningSignal (* The attributes owned by the signal. *) role Signal.ownedAttribute; role owningSignal : Signal; end; association A_ownedTrigger_behavioredClassifier (* References Trigger descriptions owned by a Classifier. *) role BehavioredClassifier.ownedTrigger; role unnamed : BehavioredClassifier; end; association A_event_trigger (* The event that causes the trigger. *) role Trigger.event; role unnamed : Trigger[0, *]; end; (* A fork node is a control node that splits a flow into multiple concurrent flows. *) [Standard::Metaclass] class ForkNode specializes ControlNode end; (* A flow final node is a final node that terminates a flow. *) [Standard::Metaclass] class FlowFinalNode specializes FinalNode end; (* A central buffer node is an object node for managing flows from multiple sources and destinations. *) [Standard::Metaclass] class CentralBufferNode specializes ObjectNode end; (* An activity partition is a kind of activity group for identifying actions that have some characteristic in common. *) [Standard::Metaclass] class ActivityPartition specializes NamedElement, ActivityGroup (* Tells whether the partition groups other partitions along a dimension. *) public attribute isDimension : Boolean := false; (* Tells whether the partition represents an entity to which the partitioning structure does not apply. *) public attribute isExternal : Boolean := false; (* Edges immediately contained in the group. *) public attribute edge : ActivityEdge[0, *]; (* Nodes immediately contained in the group. *) public attribute node : ActivityNode[0, *]; (* Partitions immediately contained in the partition. *) public attribute subpartition : ActivityPartition[0, *]; (* Partition immediately containing the partition. *) public attribute superPartition : ActivityPartition; (* An element constraining behaviors invoked by nodes in the partition. *) public attribute represents : Element; end; (* A merge node is a control node that brings together multiple alternate flows. It is not used to synchronize concurrent flows but to accept one among several alternate flows. *) [Standard::Metaclass] class MergeNode specializes ControlNode end; (* A decision node is a control node that chooses between outgoing flows. *) [Standard::Metaclass] class DecisionNode specializes ControlNode (* Provides input to guard specifications on edges outgoing from the decision node. *) public attribute decisionInput : Behavior; end; (* A final node is an abstract control node at which a flow in an activity stops. *) [Standard::Metaclass] abstract class FinalNode specializes ControlNode end; (* An activity final node is a final node that stops all flows in an activity. *) [Standard::Metaclass] class ActivityFinalNode specializes FinalNode end; association A_edge_inPartition (* Edges immediately contained in the group. *) role ActivityPartition.edge; (* Partitions containing the edge. *) role ActivityEdge.inPartition; end; association A_inPartition_node (* Partitions containing the node. *) role ActivityNode.inPartition; (* Nodes immediately contained in the group. *) role ActivityPartition.node; end; association A_subpartition_superPartition (* Partitions immediately contained in the partition. *) role ActivityPartition.subpartition; (* Partition immediately containing the partition. *) role ActivityPartition.superPartition; end; association A_represents_activityPartition (* An element constraining behaviors invoked by nodes in the partition. *) role ActivityPartition.represents; role unnamed : ActivityPartition[0, *]; end; composition A_activityEdge_guard (* Specification evaluated at runtime to determine if the edge can be traversed. *) role ActivityEdge.guard; role unnamed : ActivityEdge; end; association A_decisionInput_decisionNode (* Provides input to guard specifications on edges outgoing from the decision node. *) role DecisionNode.decisionInput; role unnamed : DecisionNode[0, *]; end; association A_partition_activity (* Top-level partitions in the activity. *) role Activity.partition; role unnamed : Activity; end; association A_group_inActivity (* Top-level groups in the activity. *) role Activity.group; (* Activity containing the group. *) role ActivityGroup.inActivity; end; (* A classifier has the ability to own ports as specific and type checked interaction points. *) [Standard::Metaclass] abstract class EncapsulatedClassifier specializes StructuredClassifier (* References a set of ports that an encapsulated classifier owns. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute ownedPort : Port[0, *]; end; composition A_encapsulatedClassifier_ownedPort (* References a set of ports that an encapsulated classifier owns. *) role EncapsulatedClassifier.ownedPort; role unnamed : EncapsulatedClassifier; end; association A_required_port (* References the interfaces specifying the set of operations and receptions which the classifier expects its environment to handle. This association is derived as the set of interfaces required by the type of the port or its supertypes. *) role Port.required; role unnamed : Port[0, *]; end; association A_redefinedPort_port (* A port may be redefined when its containing classifier is specialized. The redefining port may have additional interfaces to those that are associated with the redefined port or it may replace an interface by one of its subtypes. *) role Port.redefinedPort; role unnamed : Port[0, *]; end; association A_provided_port (* References the interfaces specifying the set of operations and receptions which the classifier offers to its environment, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived from the interfaces realized by the type of the port or by the type of the port, if the port was typed by an interface. *) role Port.provided; role unnamed : Port[0, *]; end; association A_partWithPort_connectorEnd (* Indicates the role of the internal structure of a classifier with the port to which the connector end is attached. *) role ConnectorEnd.partWithPort; role unnamed : ConnectorEnd[0, *]; end; (* The realization concept is specialized to (optionally) define the classifiers that realize the contract offered by a component in terms of its provided and required interfaces. The component forms an abstraction from these various classifiers. *) [Standard::Metaclass] class ComponentRealization specializes Realization (* The Component that owns this ComponentRealization and which is implemented by its realizing classifiers. *) public attribute abstraction : Component; (* A classifier that is involved in the implementation of the Component that owns this ComponentRealization. *) public attribute realizingClassifier : Classifier; end; (* Specifies a link that enables communication between two or more instances. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance. The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only. *) (* A delegation connector is a connector that links the external contract of a component (as specified by its ports) to the internal realization of that behavior by the component's parts. It represents the forwarding of signals (operation requests and events): a signal that arrives at a port that has a delegation connector to a part or to another port will be passed on to that target for handling. An assembly connector is a connector between two components that defines that one component provides the services that another component requires. An assembly connector is a connector that is defined from a required interface or port to a provided interface or port. *) [Standard::Metaclass] class Connector specializes Feature (* An optional association that specifies the link corresponding to this connector. *) public attribute type : Association; (* A connector may be redefined when its containing classifier is specialized. The redefining connector may have a type that specializes the type of the redefined connector. The types of the connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced. *) public attribute redefinedConnector : Connector[0, *]; (* A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered. *) public attribute end : ConnectorEnd[2, *]; (* Indicates the kind of connector. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute kind : ConnectorKind; (* The set of Behaviors that specify the valid interaction patterns across the connector. *) public attribute contract : Behavior[0, *]; end; (* ConnectorKind is an enumeration type. *) enumeration ConnectorKind assembly, delegation end; association A_required_component (* The interfaces that the component requires from other components in its environment in order to be able to offer its full set of provided functionality. These interfaces may be Used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports. *) role Component.required; role unnamed : Component[0, *]; end; association A_provided_component (* The interfaces that the component exposes to its environment. These interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports. *) role Component.provided; role unnamed : Component[0, *]; end; association A_realization_abstraction (* The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior. *) role Component.realization; (* The Component that owns this ComponentRealization and which is implemented by its realizing classifiers. *) role ComponentRealization.abstraction; end; association A_realizingClassifier_componentRealization (* A classifier that is involved in the implementation of the Component that owns this ComponentRealization. *) role ComponentRealization.realizingClassifier; role unnamed : ComponentRealization[0, *]; end; association A_contract_connector (* The set of Behaviors that specify the valid interaction patterns across the connector. *) role Connector.contract; role unnamed : Connector[0, *]; end; (* A manifestation is the concrete physical rendering of one or more model elements by an artifact. *) [Standard::Metaclass] class Manifestation specializes Abstraction (* The model element that is utilized in the manifestation in an Artifact. *) public attribute utilizedElement : PackageableElement; end; association A_utilizedElement_manifestation (* The model element that is utilized in the manifestation in an Artifact. *) role Manifestation.utilizedElement; role unnamed : Manifestation[0, *]; end; association A_nestedArtifact_artifact (* The Artifacts that are defined (nested) within the Artifact. The association is a specialization of the ownedMember association from Namespace to NamedElement. *) role Artifact.nestedArtifact; role unnamed : Artifact; end; association A_manifestation_artifact (* The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact. *) role Artifact.manifestation; role unnamed : Artifact; end; association A_ownedOperation_artifact (* The Operations defined for the Artifact. The association is a specialization of the ownedMember association. *) role Artifact.ownedOperation; role unnamed : Artifact; end; association A_ownedAttribute_artifact (* The attributes or association ends defined for the Artifact. The association is a specialization of the ownedMember association. *) role Artifact.ownedAttribute; role unnamed : Artifact; end; (* A node is computational resource upon which artifacts may be deployed for execution. Nodes can be interconnected through communication paths to define network structures. *) [Standard::Metaclass] class Node specializes Class, DeploymentTarget (* The Nodes that are defined (nested) within the Node. *) public attribute nestedNode : Node[0, *]; (* Creates a (binary) communication path between this node and the specified other node, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this node's nearest package. *) public operation createCommunicationPath(in end1IsNavigable : Boolean, in end1Aggregation : AggregationKind, in end1Name : String, in end1Lower : Integer, in end1Upper : UnlimitedNatural, in end1Node : Node, in end2IsNavigable : Boolean, in end2Aggregation : AggregationKind, in end2Name : String, in end2Lower : Integer, in end2Upper : UnlimitedNatural) : CommunicationPath; (* Retrieves the communication paths in which this node is involved. *) public operation getCommunicationPaths() : CommunicationPath[0, *]; end; (* A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices). *) [Standard::Metaclass] class Device specializes Node end; (* An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts. *) [Standard::Metaclass] class ExecutionEnvironment specializes Node end; (* A deployment target is the location for a deployed artifact. *) [Standard::Metaclass] abstract class DeploymentTarget specializes NamedElement (* The set of Deployments for a DeploymentTarget. *) public attribute deployment : Deployment[0, *]; (* The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant deployedElement : PackageableElement[0, *]; [Ecore::EOperation(operationName="getDeployedElements",annotations=[])] public operation deployedElement() : PackageableElement[0, *]; end; (* A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target. *) [Standard::Metaclass] abstract class DeployedArtifact specializes NamedElement end; (* A communication path is an association between two deployment targets, through which they are able to exchange signals and messages. *) [Standard::Metaclass] class CommunicationPath specializes Association end; (* An instance specification is a model element that represents an instance in a modeled system. *) (* An instance specification has the capability of being a deployment target in a deployment relationship, in the case that it is an instance of a node. It is also has the capability of being a deployed artifact, if it is an instance of an artifact. *) [Standard::Metaclass] class InstanceSpecification specializes PackageableElement, DeploymentTarget, DeployedArtifact (* The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them. *) public attribute classifier : Classifier[0, *]; (* A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description. *) public attribute slot : Slot[0, *]; (* A specification of how to compute, derive, or construct the instance. *) public attribute specification : ValueSpecification; end; (* An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message. *) (* An artifact is the source of a deployment to a node. *) [Standard::Metaclass] class Artifact specializes Classifier, DeployedArtifact (* A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute fileName : String; (* The Artifacts that are defined (nested) within the Artifact. The association is a specialization of the ownedMember association from Namespace to NamedElement. *) public attribute nestedArtifact : Artifact[0, *]; (* The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact. *) public attribute manifestation : Manifestation[0, *]; (* The Operations defined for the Artifact. The association is a specialization of the ownedMember association. *) public attribute ownedOperation : Operation[0, *]; (* The attributes or association ends defined for the Artifact. The association is a specialization of the ownedMember association. *) public attribute ownedAttribute : Property[0, *]; (* Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact. *) public operation createOwnedOperation(in name : String, in parameterNames : String[0, *], in parameterTypes : Type[0, *], in returnType : Type) : Operation; (* Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact. *) public operation createOwnedAttribute(in name : String, in type : Type, in lower : Integer, in upper : UnlimitedNatural) : Property; end; association A_deployedArtifact_deployment (* The Artifacts that are deployed onto a Node. This association specializes the supplier association. *) role Deployment.deployedArtifact; role unnamed : Deployment[0, *]; end; association A_deployment_location (* The set of Deployments for a DeploymentTarget. *) role DeploymentTarget.deployment; (* The DeployedTarget which is the target of a Deployment. *) role Deployment.location; end; association A_nestedNode_node (* The Nodes that are defined (nested) within the Node. *) role Node.nestedNode; role unnamed : Node; end; association A_deployedElement_deploymentTarget (* The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget. *) role DeploymentTarget.deployedElement; role unnamed : DeploymentTarget[0, *]; end; (* An interaction use refers to an interaction. The interaction use is a shorthand for copying the contents of the referenced interaction where the interaction use is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal gates with the actual ones. *) [Standard::Metaclass] class InteractionUse specializes InteractionFragment (* Refers to the Interaction that defines its meaning *) public attribute refersTo : Interaction; (* The actual gates of the InteractionUse *) public attribute actualGate : Gate[0, *]; (* The actual arguments of the Interaction *) public attribute argument : Action[0, *]; end; (* A part decomposition is a description of the internal interactions of one lifeline relative to an interaction. *) [Standard::Metaclass] class PartDecomposition specializes InteractionUse end; (* An interaction operand is contained in a combined fragment. An interaction operand represents one operand of the expression given by the enclosing combined fragment. *) [Standard::Metaclass] class InteractionOperand specializes InteractionFragment, Namespace (* Constraint of the operand. *) public attribute guard : InteractionConstraint; (* The fragments of the operand. *) public attribute fragment : InteractionFragment[0, *]; end; (* An interaction constraint is a Boolean expression that guards an operand in a combined fragment. *) [Standard::Metaclass] class InteractionConstraint specializes Constraint (* The minimum number of iterations of a loop *) public attribute minint : ValueSpecification; (* The maximum number of iterations of a loop *) public attribute maxint : ValueSpecification; end; (* A gate is a connection point for relating a message outside an interaction fragment with a message inside the interaction fragment. *) [Standard::Metaclass] class Gate specializes MessageEnd end; (* A combined fragment defines an expression of interaction fragments. A combined fragment is defined by an interaction operator and corresponding interaction operands. Through the use of combined fragments the user will be able to describe a number of traces in a compact and concise manner. *) [Standard::Metaclass] class CombinedFragment specializes InteractionFragment (* Specifies the operation which defines the semantics of this combination of InteractionFragments. *) public attribute interactionOperator : InteractionOperatorKind := ; (* The set of operands of the combined fragment. *) public attribute operand : InteractionOperand[1, *]; (* Specifies the gates that form the interface between this CombinedFragment and its surroundings *) public attribute cfragmentGate : Gate[0, *]; end; (* An interaction is a unit of behavior that focuses on the observable exchange of information between connectable elements. *) [Standard::Metaclass] class Interaction specializes InteractionFragment, Behavior (* Specifies the participants in this Interaction. *) public attribute lifeline : Lifeline[0, *]; (* The Messages contained in this Interaction. *) public attribute message : Message[0, *]; (* The ordered set of fragments in the Interaction. *) public attribute fragment : InteractionFragment[0, *]; (* Actions owned by the Interaction. *) public attribute action : Action[0, *]; (* Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it. *) public attribute formalGate : Gate[0, *]; end; (* A lifeline represents an individual participant in the interaction. While parts and structural features may have multiplicity greater than 1, lifelines represent only one interacting entity. *) [Standard::Metaclass] class Lifeline specializes NamedElement (* References the InteractionFragments in which this Lifeline takes part. *) public attribute coveredBy : InteractionFragment[0, *]; (* References the ConnectableElement within the classifier that contains the enclosing interaction. *) public attribute represents : ConnectableElement; (* References the Interaction enclosing this Lifeline. *) public attribute interaction : Interaction; (* If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set. *) public attribute selector : ValueSpecification; (* References the Interaction that represents the decomposition. *) public attribute decomposedAs : PartDecomposition; end; (* A continuation is a syntactic way to define continuations of different branches of an alternative combined fragment. Continuations is intuitively similar to labels representing intermediate points in a flow of control. *) [Standard::Metaclass] class Continuation specializes InteractionFragment (* True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning. *) public attribute setting : Boolean := true; end; (* InteractionFragment is an abstract notion of the most general interaction unit. An interaction fragment is a piece of an interaction. Each interaction fragment is conceptually like an interaction by itself. *) [Standard::Metaclass] abstract class InteractionFragment specializes NamedElement (* References the Lifelines that the InteractionFragment involves. *) public attribute covered : Lifeline[0, *]; (* The general ordering relationships contained in this fragment. *) public attribute generalOrdering : GeneralOrdering[0, *]; (* The Interaction enclosing this InteractionFragment. *) public attribute enclosingInteraction : Interaction; (* The operand enclosing this InteractionFragment (they may nest recursively) *) public attribute enclosingOperand : InteractionOperand; end; (* A consider ignore fragment is a kind of combined fragment that is used for the consider and ignore cases, which require lists of pertinent messages to be specified. *) [Standard::Metaclass] class ConsiderIgnoreFragment specializes CombinedFragment (* The set of messages that apply to this fragment *) public attribute message : NamedElement[0, *]; end; (* InteractionOperatorKind is an enumeration designating the different kinds of operators of combined fragments. The interaction operand defines the type of operator of a combined fragment. *) enumeration InteractionOperatorKind seq, alt, opt, break, par, strict, loop, critical, neg, assert, ignore, consider end; association A_lifeline_decomposedAs (* References the Interaction that represents the decomposition. *) role Lifeline.decomposedAs; role unnamed : Lifeline; end; association A_guard_interactionOperand (* Constraint of the operand. *) role InteractionOperand.guard; role unnamed : InteractionOperand; end; association A_operand_combinedFragment (* The set of operands of the combined fragment. *) role CombinedFragment.operand; role unnamed : CombinedFragment; end; association A_refersTo_interactionUse (* Refers to the Interaction that defines its meaning *) role InteractionUse.refersTo; role unnamed : InteractionUse[0, *]; end; association A_cfragmentGate_combinedFragment (* Specifies the gates that form the interface between this CombinedFragment and its surroundings *) role CombinedFragment.cfragmentGate; role unnamed : CombinedFragment; end; composition A_interactionUse_actualGate (* The actual gates of the InteractionUse *) role InteractionUse.actualGate; role unnamed : InteractionUse; end; association A_formalGate_interaction (* Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it. *) role Interaction.formalGate; role unnamed : Interaction; end; association A_minint_interactionConstraint (* The minimum number of iterations of a loop *) role InteractionConstraint.minint; role unnamed : InteractionConstraint; end; association A_maxint_interactionConstraint (* The maximum number of iterations of a loop *) role InteractionConstraint.maxint; role unnamed : InteractionConstraint; end; association A_argument_interactionUse (* The actual arguments of the Interaction *) role InteractionUse.argument; role unnamed : InteractionUse; end; association A_fragment_enclosingOperand (* The fragments of the operand. *) role InteractionOperand.fragment; (* The operand enclosing this InteractionFragment (they may nest recursively) *) role InteractionFragment.enclosingOperand; end; association A_message_considerIgnoreFragment (* The set of messages that apply to this fragment *) role ConsiderIgnoreFragment.message; role unnamed : ConsiderIgnoreFragment[0, *]; end; (* A create object action is an action that creates an object that conforms to a statically specified classifier and puts it on an output pin at runtime. *) [Standard::Metaclass] class CreateObjectAction specializes Action (* Classifier to be instantiated. *) public attribute classifier : Classifier; (* Gives the output pin on which the result is put. *) public attribute result : OutputPin; end; (* A destroy object action is an action that destroys objects. *) [Standard::Metaclass] class DestroyObjectAction specializes Action (* Specifies whether links in which the object participates are destroyed along with the object. *) public attribute isDestroyLinks : Boolean := false; (* Specifies whether objects owned by the object are destroyed along with the object. *) public attribute isDestroyOwnedObjects : Boolean := false; (* The input pin providing the object to be destroyed. *) public attribute target : InputPin; end; (* A test identity action is an action that tests if two values are identical objects. *) [Standard::Metaclass] class TestIdentityAction specializes Action (* Gives the pin on which an object is placed. *) public attribute first : InputPin; (* Gives the pin on which an object is placed. *) public attribute second : InputPin; (* Tells whether the two input objects are identical. *) public attribute result : OutputPin; end; (* A read self action is an action that retrieves the host object of an action. *) [Standard::Metaclass] class ReadSelfAction specializes Action (* Gives the output pin on which the hosting object is placed. *) public attribute result : OutputPin; end; (* StructuralFeatureAction is an abstract class for all structural feature actions. *) [Standard::Metaclass] abstract class StructuralFeatureAction specializes Action (* Structural feature to be read. *) public attribute structuralFeature : StructuralFeature; (* Gives the input pin from which the object whose structural feature is to be read or written is obtained. *) public attribute object : InputPin; end; (* A read structural feature action is a structural feature action that retrieves the values of a structural feature. *) [Standard::Metaclass] class ReadStructuralFeatureAction specializes StructuralFeatureAction (* Gives the output pin on which the result is put. *) public attribute result : OutputPin; end; (* WriteStructuralFeatureAction is an abstract class for structural feature actions that change structural feature values. *) [Standard::Metaclass] abstract class WriteStructuralFeatureAction specializes StructuralFeatureAction (* Value to be added or removed from the structural feature. *) public attribute value : InputPin; end; (* A clear structural feature action is a structural feature action that removes all values of a structural feature. *) [Standard::Metaclass] class ClearStructuralFeatureAction specializes StructuralFeatureAction end; (* A remove structural feature value action is a write structural feature action that removes values from structural features. *) [Standard::Metaclass] class RemoveStructuralFeatureValueAction specializes WriteStructuralFeatureAction (* Specifies whether to remove duplicates of the value in nonunique structural features. *) public attribute isRemoveDuplicates : Boolean := false; (* Specifies the position of an existing value to remove in ordered nonunique structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited. *) public attribute removeAt : InputPin; end; (* An add structural feature value action is a write structural feature action for adding values to a structural feature. *) [Standard::Metaclass] class AddStructuralFeatureValueAction specializes WriteStructuralFeatureAction (* Specifies whether existing values of the structural feature of the object should be removed before adding the new value. *) public attribute isReplaceAll : Boolean := false; (* Gives the position at which to insert a new value or move an existing value in ordered structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero. This pin is omitted for unordered structural features. *) public attribute insertAt : InputPin; end; (* LinkAction is an abstract class for all link actions that identify their links by the objects at the ends of the links and by the qualifiers at ends of the links. *) [Standard::Metaclass] abstract class LinkAction specializes Action (* Data identifying one end of a link by the objects on its ends and qualifiers. *) public attribute endData : LinkEndData[2, *]; (* Pins taking end objects and qualifier values as input. *) public attribute inputValue : InputPin[1, *]; (* The association operates on LinkAction. It returns the association of the action. *) public operation association() : Association; end; (* A read link action is a link action that navigates across associations to retrieve objects on one end. *) [Standard::Metaclass] class ReadLinkAction specializes LinkAction (* The pin on which are put the objects participating in the association at the end not specified by the inputs. *) public attribute result : OutputPin; end; (* A link end creation data is not an action. It is an element that identifies links. It identifies one end of a link to be created by a create link action. *) [Standard::Metaclass] class LinkEndCreationData specializes LinkEndData (* Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link. *) public attribute isReplaceAll : Boolean := false; (* Specifies where the new link should be inserted for ordered association ends, or where an existing link should be moved to. The type of the input is UnlimitedNatural, but the input cannot be zero. This pin is omitted for association ends that are not ordered. *) public attribute insertAt : InputPin; end; (* A create link action is a write link action for creating links. *) [Standard::Metaclass] class CreateLinkAction specializes WriteLinkAction (* Specifies ends of association and inputs. *) public attribute endData : LinkEndCreationData[2, *]; end; (* A destroy link action is a write link action that destroys links and link objects. *) [Standard::Metaclass] class DestroyLinkAction specializes WriteLinkAction (* Specifies ends of association and inputs. *) public attribute endData : LinkEndDestructionData[2, *]; end; (* WriteLinkAction is an abstract class for link actions that create and destroy links. *) [Standard::Metaclass] abstract class WriteLinkAction specializes LinkAction end; (* A clear association action is an action that destroys all links of an association in which a particular object participates. *) [Standard::Metaclass] class ClearAssociationAction specializes Action (* Gives the input pin from which is obtained the object whose participation in the association is to be cleared. *) public attribute object : InputPin; (* Association to be cleared. *) public attribute association : Association; end; (* A broadcast signal action is an action that transmits a signal instance to all the potential target objects in the system, which may cause the firing of a state machine transitions or the execution of associated activities of a target object. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately after the signals are sent out. It does not wait for receipt. Any reply messages are ignored and are not transmitted to the requestor. *) [Standard::Metaclass] class BroadcastSignalAction specializes InvocationAction (* The specification of signal object transmitted to the target objects. *) public attribute signal : Signal; end; (* A send object action is an action that transmits an object to the target object, where it may invoke behavior such as the firing of state machine transitions or the execution of an activity. The value of the object is available to the execution of invoked behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor. *) [Standard::Metaclass] class SendObjectAction specializes InvocationAction (* The target object to which the object is sent. *) public attribute target : InputPin; (* The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved. *) public attribute request : InputPin; end; (* A link end destruction data is not an action. It is an element that identifies links. It identifies one end of a link to be destroyed by destroy link action. *) [Standard::Metaclass] class LinkEndDestructionData specializes LinkEndData (* Specifies whether to destroy duplicates of the value in nonunique association ends. *) public attribute isDestroyDuplicates : Boolean := false; (* Specifies the position of an existing link to be destroyed in ordered nonunique association ends. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited. *) public attribute destroyAt : InputPin; end; (* A value specification action is an action that evaluates a value specification. *) [Standard::Metaclass] class ValueSpecificationAction specializes Action (* Value specification to be evaluated. *) public attribute value : ValueSpecification; (* Gives the output pin on which the result is put. *) public attribute result : OutputPin; end; association A_classifier_createObjectAction (* Classifier to be instantiated. *) role CreateObjectAction.classifier; role unnamed : CreateObjectAction[0, *]; end; association A_result_createObjectAction (* Gives the output pin on which the result is put. *) role CreateObjectAction.result; role unnamed : CreateObjectAction; end; association A_target_destroyObjectAction (* The input pin providing the object to be destroyed. *) role DestroyObjectAction.target; role unnamed : DestroyObjectAction; end; association A_first_testIdentityAction (* Gives the pin on which an object is placed. *) role TestIdentityAction.first; role unnamed : TestIdentityAction; end; association A_second_testIdentityAction (* Gives the pin on which an object is placed. *) role TestIdentityAction.second; role unnamed : TestIdentityAction; end; association A_result_testIdentityAction (* Tells whether the two input objects are identical. *) role TestIdentityAction.result; role unnamed : TestIdentityAction; end; association A_result_readSelfAction (* Gives the output pin on which the hosting object is placed. *) role ReadSelfAction.result; role unnamed : ReadSelfAction; end; association A_structuralFeatureAction_structuralFeature (* Structural feature to be read. *) role StructuralFeatureAction.structuralFeature; role unnamed : StructuralFeatureAction[0, *]; end; association A_object_structuralFeatureAction (* Gives the input pin from which the object whose structural feature is to be read or written is obtained. *) role StructuralFeatureAction.object; role unnamed : StructuralFeatureAction; end; association A_result_readStructuralFeatureAction (* Gives the output pin on which the result is put. *) role ReadStructuralFeatureAction.result; role unnamed : ReadStructuralFeatureAction; end; association A_value_writeStructuralFeatureAction (* Value to be added or removed from the structural feature. *) role WriteStructuralFeatureAction.value; role unnamed : WriteStructuralFeatureAction; end; association A_insertAt_addStructuralFeatureValueAction (* Gives the position at which to insert a new value or move an existing value in ordered structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero. This pin is omitted for unordered structural features. *) role AddStructuralFeatureValueAction.insertAt; role unnamed : AddStructuralFeatureValueAction; end; association A_endData_linkAction (* Data identifying one end of a link by the objects on its ends and qualifiers. *) role LinkAction.endData; role unnamed : LinkAction; end; association A_value_linkEndData (* Input pin that provides the specified object for the given end. This pin is omitted if the link-end data specifies an 'open' end for reading. *) role LinkEndData.value; role unnamed : LinkEndData; end; association A_end_linkEndData (* Association end for which this link-end data specifies values. *) role LinkEndData.end; role unnamed : LinkEndData[0, *]; end; association A_result_readLinkAction (* The pin on which are put the objects participating in the association at the end not specified by the inputs. *) role ReadLinkAction.result; role unnamed : ReadLinkAction; end; association A_insertAt_linkEndCreationData (* Specifies where the new link should be inserted for ordered association ends, or where an existing link should be moved to. The type of the input is UnlimitedNatural, but the input cannot be zero. This pin is omitted for association ends that are not ordered. *) role LinkEndCreationData.insertAt; role unnamed : LinkEndCreationData; end; association A_endData_createLinkAction (* Specifies ends of association and inputs. *) role CreateLinkAction.endData; role unnamed : CreateLinkAction; end; association A_object_clearAssociationAction (* Gives the input pin from which is obtained the object whose participation in the association is to be cleared. *) role ClearAssociationAction.object; role unnamed : ClearAssociationAction; end; association A_association_clearAssociationAction (* Association to be cleared. *) role ClearAssociationAction.association; role unnamed : ClearAssociationAction; end; association A_target_sendObjectAction (* The target object to which the object is sent. *) role SendObjectAction.target; role unnamed : SendObjectAction; end; association A_request_sendObjectAction (* The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved. *) role SendObjectAction.request; role unnamed : SendObjectAction; end; association A_signal_broadcastSignalAction (* The specification of signal object transmitted to the target objects. *) role BroadcastSignalAction.signal; role unnamed : BroadcastSignalAction[0, *]; end; association A_removeAt_removeStructuralFeatureValueAction (* Specifies the position of an existing value to remove in ordered nonunique structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited. *) role RemoveStructuralFeatureValueAction.removeAt; role unnamed : RemoveStructuralFeatureValueAction; end; association A_destroyAt_linkEndDestructionData (* Specifies the position of an existing link to be destroyed in ordered nonunique association ends. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited. *) role LinkEndDestructionData.destroyAt; role unnamed : LinkEndDestructionData; end; association A_endData_destroyLinkAction (* Specifies ends of association and inputs. *) role DestroyLinkAction.endData; role unnamed : DestroyLinkAction; end; association A_value_valueSpecificationAction (* Value specification to be evaluated. *) role ValueSpecificationAction.value; role unnamed : ValueSpecificationAction; end; association A_result_valueSpecificationAction (* Gives the output pin on which the result is put. *) role ValueSpecificationAction.result; role unnamed : ValueSpecificationAction; end; association A_inputValue_linkAction (* Pins taking end objects and qualifier values as input. *) role LinkAction.inputValue; role unnamed : LinkAction; end; (* A time expression defines a value specification that represents a time value. *) [Standard::Metaclass] class TimeExpression specializes ValueSpecification (* The value of the time expression. *) public attribute expr : ValueSpecification; (* Refers to the time and duration observations that are involved in expr. *) public attribute observation : Observation[0, *]; [Ecore::EOperation(annotations=[])] protected operation stringValue() : String; end; (* Duration defines a value specification that specifies the temporal distance between two time instants. *) [Standard::Metaclass] class Duration specializes ValueSpecification (* The value of the Duration. *) public attribute expr : ValueSpecification; (* Refers to the time and duration observations that are involved in expr. *) public attribute observation : Observation[0, *]; [Ecore::EOperation(annotations=[])] protected operation stringValue() : String; end; (* A duration interval defines the range between two durations. *) [Standard::Metaclass] class DurationInterval specializes Interval (* Refers to the Duration denoting the minimum value of the range. *) public attribute min : Duration; (* Refers to the Duration denoting the maximum value of the range. *) public attribute max : Duration; end; (* A time constraint is a constraint that refers to a time interval. *) [Standard::Metaclass] class TimeConstraint specializes IntervalConstraint (* A condition that must be true when evaluated in order for the constraint to be satisfied. *) public attribute specification : TimeInterval; (* The value of firstEvent is related to constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within constrainedElement. *) public attribute firstEvent : Boolean := true; end; (* A time interval defines the range between two time expressions. *) [Standard::Metaclass] class TimeInterval specializes Interval (* Refers to the TimeExpression denoting the maximum value of the range. *) public attribute max : TimeExpression; (* Refers to the TimeExpression denoting the minimum value of the range. *) public attribute min : TimeExpression; end; (* A duration constraint is a constraint that refers to a duration interval. *) [Standard::Metaclass] class DurationConstraint specializes IntervalConstraint (* The interval constraining the duration. *) public attribute specification : DurationInterval; (* The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i]. Default value is true applied when constrainedElement[i] refers an element that represents only one time instant. *) public attribute firstEvent : Boolean[0, 2] := true; end; (* An interval constraint is a constraint that refers to an interval. *) [Standard::Metaclass] class IntervalConstraint specializes Constraint (* A condition that must be true when evaluated in order for the constraint to be satisfied. *) public attribute specification : Interval; end; (* An interval defines the range between two value specifications. *) [Standard::Metaclass] class Interval specializes ValueSpecification (* Refers to the ValueSpecification denoting the minimum value of the range. *) public attribute min : ValueSpecification; (* Refers to the ValueSpecification denoting the maximum value of the range. *) public attribute max : ValueSpecification; end; (* Observation is a superclass of TimeObservation and DurationObservation in order for TimeExpression and Duration to refer to either in a simple way. *) [Standard::Metaclass] abstract class Observation specializes PackageableElement end; (* A time observation is a reference to a time instant during an execution. It points out the element in the model to observe and whether the observation is when this model element is entered or when it is exited. *) [Standard::Metaclass] class TimeObservation specializes Observation (* The observation is determined by the entering or exiting of the event element during execution. *) public attribute event : NamedElement; (* The value of firstEvent is related to event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters event. If firstEvent is false, then the corresponding observation event is the time instant the execution exits event. *) public attribute firstEvent : Boolean := true; end; (* A duration observation is a reference to a duration during an execution. It points out the element(s) in the model to observe and whether the observations are when this model element is entered or when it is exited. *) [Standard::Metaclass] class DurationObservation specializes Observation (* The observation is determined by the entering or exiting of the event element during execution. *) public attribute event : NamedElement[1, 2]; (* The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i]. Default value is true applied when event[i] refers an element that represents only one time instant. *) public attribute firstEvent : Boolean[0, 2] := true; end; association A_min_durationInterval (* Refers to the Duration denoting the minimum value of the range. *) role DurationInterval.min; role unnamed : DurationInterval[0, *]; end; association A_max_durationInterval (* Refers to the Duration denoting the maximum value of the range. *) role DurationInterval.max; role unnamed : DurationInterval[0, *]; end; association A_max_timeInterval (* Refers to the TimeExpression denoting the maximum value of the range. *) role TimeInterval.max; role unnamed : TimeInterval[0, *]; end; association A_min_timeInterval (* Refers to the TimeExpression denoting the minimum value of the range. *) role TimeInterval.min; role unnamed : TimeInterval[0, *]; end; association A_specification_timeConstraint (* A condition that must be true when evaluated in order for the constraint to be satisfied. *) role TimeConstraint.specification; role unnamed : TimeConstraint; end; association A_specification_durationConstraint (* The interval constraining the duration. *) role DurationConstraint.specification; role unnamed : DurationConstraint; end; association A_min_interval (* Refers to the ValueSpecification denoting the minimum value of the range. *) role Interval.min; role unnamed : Interval[0, *]; end; association A_max_interval (* Refers to the ValueSpecification denoting the maximum value of the range. *) role Interval.max; role unnamed : Interval[0, *]; end; association A_specification_intervalConstraint (* A condition that must be true when evaluated in order for the constraint to be satisfied. *) role IntervalConstraint.specification; role unnamed : IntervalConstraint; end; association A_observation_duration (* Refers to the time and duration observations that are involved in expr. *) role Duration.observation; role unnamed : Duration; end; association A_observation_timeExpression (* Refers to the time and duration observations that are involved in expr. *) role TimeExpression.observation; role unnamed : TimeExpression; end; association A_when_timeEvent (* Specifies the corresponding time deadline. *) role TimeEvent.when; role unnamed : TimeEvent; end; association A_expr_timeExpression (* The value of the time expression. *) role TimeExpression.expr; role unnamed : TimeExpression; end; association A_expr_duration (* The value of the Duration. *) role Duration.expr; role unnamed : Duration; end; association A_event_timeObservation (* The observation is determined by the entering or exiting of the event element during execution. *) role TimeObservation.event; role unnamed : TimeObservation[0, *]; end; association A_event_durationObservation (* The observation is determined by the entering or exiting of the event element during execution. *) role DurationObservation.event; role unnamed : DurationObservation[0, *]; end; (* InvocationAction is an abstract class for the various actions that invoke behavior. *) (* In addition to targeting an object, invocation actions can also invoke behavioral features on ports from where the invocation requests are routed onwards on links deriving from attached connectors. Invocation actions may also be sent to a target via a given port, either on the sending object or on another object. *) [Standard::Metaclass] abstract class InvocationAction specializes Action (* Specification of the ordered set of argument values that appears during execution. *) public attribute argument : InputPin[0, *]; (* A optional port of the receiver object on which the behavioral feature is invoked. *) public attribute onPort : Port; end; (* A trigger relates an event to a behavior that may affect an instance of the classifier. *) (* A trigger specification may be qualified by the port on which the event occurred. *) [Standard::Metaclass] class Trigger specializes NamedElement (* The event that causes the trigger. *) public attribute event : Event; (* A optional port of the receiver object on which the behavioral feature is invoked. *) public attribute port : Port[0, *]; end; association A_port_trigger (* A optional port of the receiver object on which the behavioral feature is invoked. *) role Trigger.port; role unnamed : Trigger[0, *]; end; association A_onPort_invocationAction (* A optional port of the receiver object on which the behavioral feature is invoked. *) role InvocationAction.onPort; role unnamed : InvocationAction[0, *]; end; (* State machines can be used to express the behavior of part of a system. Behavior is modeled as a traversal of a graph of state nodes interconnected by one or more joined transition arcs that are triggered by the dispatching of series of (event) occurrences. During this traversal, the state machine executes a series of activities associated with various elements of the state machine. *) [Standard::Metaclass] class StateMachine specializes Behavior (* The regions owned directly by the state machine. *) public attribute region : Region[1, *]; (* The connection points defined for this state machine. They represent the interface of the state machine when used as part of submachine state. *) public attribute connectionPoint : Pseudostate[0, *]; (* The state machines of which this is an extension. *) public attribute extendedStateMachine : StateMachine[0, *]; (* References the submachine(s) in case of a submachine state. Multiple machines are referenced in case of a concurrent state. *) public attribute submachineState : State[0, *]; (* The operation LCA(s1,s2) returns an orthogonal state or region which is the least common ancestor of states s1 and s2, based on the statemachine containment hierarchy. *) public operation LCA(in s1 : State, in s2 : State) : Namespace; (* The query ancestor(s1, s2) checks whether s2 is an ancestor state of state s1. context StateMachine::ancestor (s1 : State, s2 : State) : Boolean *) public operation ancestor(in s1 : State, in s2 : State) : Boolean; (* The query isRedefinitionContextValid() specifies whether the redefinition contexts of a statemachine are properly related to the redefinition contexts of the specified statemachine to allow this element to redefine the other. The containing classifier of a redefining statemachine must redefine the containing classifier of the redefined statemachine. *) public operation isRedefinitionContextValid(in redefined : StateMachine) : Boolean; (* The query isConsistentWith() specifies that a redefining state machine is consistent with a redefined state machine provided that the redefining state machine is an extension of the redefined state machine: Regions are inherited and regions can be added, inherited regions can be redefined. In case of multiple redefining state machines, extension implies that the redefining state machine gets orthogonal regions for each of the redefined state machines. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; end; (* A pseudostate is an abstraction that encompasses different types of transient vertices in the state machine graph. *) [Standard::Metaclass] class Pseudostate specializes Vertex (* Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice. *) public attribute kind : PseudostateKind := ; (* The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint. *) public attribute stateMachine : StateMachine; (* The State that owns this pseudostate and in which it appears. *) public attribute state : State; end; (* A special kind of state signifying that the enclosing region is completed. If the enclosing region is directly contained in a state machine and all other regions in the state machine also are completed, then it means that the entire state machine is completed. *) [Standard::Metaclass] class FinalState specializes State end; (* A connection point reference represents a usage (as part of a submachine state) of an entry/exit point defined in the statemachine reference by the submachine state. *) [Standard::Metaclass] class ConnectionPointReference specializes Vertex (* The entryPoint kind pseudo states corresponding to this connection point. *) public attribute entry : Pseudostate[0, *]; (* The State in which the connection point refreshens are defined. *) public attribute state : State; (* The exitPoints kind pseudo states corresponding to this connection point. *) public attribute exit : Pseudostate[0, *]; end; (* A time event specifies a point in time. At the specified time, the event occurs. *) (* A time event can be defined relative to entering the current state of the executing state machine. *) [Standard::Metaclass] class TimeEvent specializes Event (* Specifies whether it is relative or absolute time. *) public attribute isRelative : Boolean := false; (* Specifies the corresponding time deadline. *) public attribute when : ValueSpecification; end; (* PseudostateKind is an enumeration type. *) enumeration PseudostateKind initial, deepHistory, shallowHistory, join, fork, junction, choice, entryPoint, exitPoint, terminate end; (* TransitionKind is an enumeration type. *) enumeration TransitionKind internal, local, external end; composition A_container_subvertex (* The region that contains this vertex. *) role Vertex.container; (* The set of vertices that are owned by this region. *) role Region.subvertex; end; composition A_container_transition (* Designates the region that owns this transition. *) role Transition.container; (* The set of transitions owned by the region. Note that internal transitions are owned by a region, but applies to the source state. *) role Region.transition; end; association A_submachineState_submachine (* References the submachine(s) in case of a submachine state. Multiple machines are referenced in case of a concurrent state. *) role StateMachine.submachineState; (* The state machine that is to be inserted in place of the (submachine) state. *) role State.submachine; end; association A_entry_connectionPointReference (* The entryPoint kind pseudo states corresponding to this connection point. *) role ConnectionPointReference.entry; role unnamed : ConnectionPointReference; end; composition A_state_connection (* The State in which the connection point refreshens are defined. *) role ConnectionPointReference.state; (* The entry and exit connection points used in conjunction with this (submachine) state, i.e. as targets and sources, respectively, in the region with the submachine state. A connection point reference references the corresponding definition of a connection point pseudostate in the statemachine referenced by the submachinestate. *) role State.connection; end; association A_redefinedState_state (* The state of which this state is a redefinition. *) role State.redefinedState; role unnamed : State; end; association A_redefinedTransition_transition (* The transition that is redefined by this transition. *) role Transition.redefinedTransition; role unnamed : Transition; end; association A_exit_connectionPointReference (* The exitPoints kind pseudo states corresponding to this connection point. *) role ConnectionPointReference.exit; role unnamed : ConnectionPointReference; end; association A_region_stateMachine (* The regions owned directly by the state machine. *) role StateMachine.region; (* The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State. *) role Region.stateMachine; end; association A_connectionPoint_stateMachine (* The connection points defined for this state machine. They represent the interface of the state machine when used as part of submachine state. *) role StateMachine.connectionPoint; (* The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint. *) role Pseudostate.stateMachine; end; association A_region_state (* The regions owned directly by the state. *) role State.region; (* The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine. *) role Region.state; end; association A_region_extendedRegion (* The region of which this region is an extension. *) role Region.extendedRegion; role unnamed : Region; end; association A_stateMachine_extendedStateMachine (* The state machines of which this is an extension. *) role StateMachine.extendedStateMachine; role unnamed : StateMachine; end; association A_guard_transition (* A guard is a constraint that provides a fine-grained control over the firing of the transition. The guard is evaluated when an event occurrence is dispatched by the state machine. If the guard is true at that time, the transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed. *) role Transition.guard; role unnamed : Transition; end; association A_redefinitionContext_region (* References the classifier in which context this element may be redefined. *) role Region.redefinitionContext; role unnamed : Region[0, *]; end; association A_state_redefinitionContext (* References the classifier in which context this element may be redefined. *) role State.redefinitionContext; role unnamed : State[0, *]; end; association A_transition_redefinitionContext (* References the classifier in which context this element may be redefined. *) role Transition.redefinitionContext; role unnamed : Transition[0, *]; end; association A_stateInvariant_owningState (* Specifies conditions that are always true when this state is the current state. In protocol state machines, state invariants are additional conditions to the preconditions of the outgoing transitions, and to the postcondition of the incoming transitions. *) role State.stateInvariant; role owningState : State; end; association A_effect_transition (* Specifies an optional behavior to be performed when the transition fires. *) role Transition.effect; role unnamed : Transition; end; association A_entry_state (* An optional behavior that is executed whenever this state is entered regardless of the transition taken to reach the state. If defined, entry actions are always executed to completion prior to any internal behavior or transitions performed within the state. *) role State.entry; role unnamed : State; end; association A_exit_state (* An optional behavior that is executed whenever this state is exited regardless of which transition was taken out of the state. If defined, exit actions are always executed to completion only after all internal activities and transition actions have completed execution. *) role State.exit; role unnamed : State; end; association A_doActivity_state (* An optional behavior that is executed while being in the state. The execution starts when this state is entered, and stops either by itself, or when the state is exited, whichever comes first. *) role State.doActivity; role unnamed : State; end; association A_connectionPoint_state (* The entry and exit pseudostates of a composite state. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite states. *) role State.connectionPoint; (* The State that owns this pseudostate and in which it appears. *) role Pseudostate.state; end; association A_trigger_transition (* Specifies the triggers that may fire the transition. *) role Transition.trigger; role unnamed : Transition; end; association A_deferrableTrigger_state (* A list of triggers that are candidates to be retained by the state machine if they trigger no transitions out of the state (not consumed). A deferred trigger is retained until the state machine reaches a state configuration where it is no longer deferred. *) role State.deferrableTrigger; role unnamed : State; end; (* A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass. *) [Standard::Metaclass] class Stereotype specializes Class (* Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements. *) public attribute icon : Image[0, *]; (* Creates a(n) (required) extension of the specified metaclass with this stereotype. *) public operation createExtension(in metaclass : Class, in isRequired : Boolean) : Extension; (* Retrieves the profile that owns this stereotype. *) public operation getProfile() : Profile; (* Retrieves the localized keyword for this stereotype. *) public operation getKeyword() : String; (* Retrieves the keyword for this stereotype, localized if indicated. *) public operation getKeyword(in localize : Boolean) : String; (* Retrieves the metaclasses extended by this stereotype. *) public operation getExtendedMetaclasses() : Class[0, *]; (* Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes. *) public operation getAllExtendedMetaclasses() : Class[0, *]; (* Retrieves the current definition (Ecore representation) of this stereotype. *) public operation getDefinition() : EClass; (* Creates an icon with the specified location for this stereotype. *) public operation createIcon(in location : String) : Image; (* Creates an icon with the specified format and content for this stereotype. *) public operation createIcon(in format : String, in content : String) : Image; end; (* A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain. *) [Standard::Metaclass] class Profile specializes Package (* References the Stereotypes that are owned by the Profile. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute ownedStereotype : Stereotype[0, *]; (* References a metaclass that may be extended. *) public attribute metaclassReference : ElementImport[0, *]; (* References a package containing (directly or indirectly) metaclasses that may be extended. *) public attribute metamodelReference : PackageImport[0, *]; (* Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile. *) public operation create(in classifier : Classifier) : EObject; (* Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile. *) public operation createOwnedStereotype(in name : String, in isAbstract : Boolean) : Stereotype; (* Determines whether this profile is defined. *) public operation isDefined() : Boolean; (* Defines this profile by (re)creating Ecore representations of its current contents. *) public operation define() : EPackage; (* Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context. *) public operation define(in options : EMap_EString_EString, in diagnostics : EDiagnosticChain, in context : EMap_EJavaObject_EJavaObject) : EPackage; (* Retrieves the current definition (Ecore representation) of this profile. *) public operation getDefinition() : EPackage; (* Retrieves the current definition (Ecore representation) of the specified named element in this profile. *) public operation getDefinition(in namedElement : NamedElement) : ENamedElement; (* Retrieves the metaclasses referenced by this profile. *) public operation getReferencedMetaclasses() : Class[0, *]; (* Retrieves the metamodels referenced by this profile. *) public operation getReferencedMetamodels() : Model[0, *]; (* Retrieves the extensions owned by this profile, excluding non-required extensions if indicated. *) public operation getOwnedExtensions(in requiredOnly : Boolean) : Extension[0, *]; end; (* A class describes a set of objects that share the same specifications of features, constraints, and semantics. *) (* A class may be designated as active (i.e., each of its instances having its own thread of control) or passive (i.e., each of its instances executing within the context of some other object). A class may also specify which signals the instances of this class handle. *) (* A class has the capability to have an internal structure and ports. *) (* Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes. *) [Standard::Metaclass] class Class specializes BehavioredClassifier, EncapsulatedClassifier (* True when a class is abstract. *) (* If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships. *) public attribute isAbstract : Boolean := false; (* References all the Classifiers that are defined (nested) within the Class. *) public attribute nestedClassifier : Classifier[0, *]; (* The attributes (i.e. the properties) owned by the class. *) public attribute ownedAttribute : Property[0, *]; (* The operations owned by the class. *) public attribute ownedOperation : Operation[0, *]; (* This gives the superclasses of a class. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute superClass : Class[0, *]; (* Determines whether an object specified by this class is active or not. If true, then the owning class is referred to as an active class. If false, then such a class is referred to as a passive class. *) public attribute isActive : Boolean := false; (* Receptions that objects of this class are willing to accept. *) public attribute ownedReception : Reception[0, *]; (* References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant extension : Extension[0, *]; [Ecore::EOperation(annotations=[])] protected operation getExtensions() : Extension[0, *]; (* Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class. *) public operation createOwnedOperation(in name : String, in parameterNames : String[0, *], in parameterTypes : Type[0, *], in returnType : Type) : Operation; (* Determines whether this class is a metaclass. *) public operation isMetaclass() : Boolean; (* The inherit operation is overridden to exclude redefined properties. *) public operation inherit(in inhs : NamedElement[0, *]) : NamedElement[0, *]; end; (* A profile application is used to show which profiles have been applied to a package. *) [Standard::Metaclass] class ProfileApplication specializes DirectedRelationship (* References the Profiles that are applied to a Package through this ProfileApplication. *) public attribute appliedProfile : Profile; (* Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied. *) public attribute isStrict : Boolean := false; (* The package that owns the profile application. *) public attribute applyingPackage : Package; (* Retrieves the definition (Ecore representation) of the profile associated with this profile application. *) public operation getAppliedDefinition() : EPackage; (* Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application. *) public operation getAppliedDefinition(in namedElement : NamedElement) : ENamedElement; end; (* An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes. *) [Standard::Metaclass] class Extension specializes Association (* Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the multiplicity of the Property referenced by Extension::ownedEnd; a multiplicity of 1 means that isRequired is true, but otherwise it is false. Since the default multiplicity of an ExtensionEnd is 0..1, the default value of isRequired is false. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant isRequired : Boolean := false; (* References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant metaclass : Class; (* References the end of the extension that is typed by a Stereotype. *) public attribute ownedEnd : ExtensionEnd; (* Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass). *) public operation getStereotypeEnd() : Property; (* Retrieves the stereotype that extends a metaclass through this extension. *) public operation getStereotype() : Stereotype; (* The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype). *) public operation metaclassEnd() : Property; [Ecore::EOperation(operationName="getMetaclass",annotations=[])] (* The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype). *) public operation metaclass() : Class; (* The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1. *) public operation isRequired() : Boolean; end; (* Physical definition of a graphical image. *) [Standard::Metaclass] class Image specializes Element (* This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based). *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute content : String; (* This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute location : String; (* This indicates the format of the content - which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP. In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example "SVG" could instead be expressed as "MIME: image/svg+xml". *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute format : String; end; (* An element is a constituent of a model. As such, it has the capability of owning other elements. *) [Standard::Metaclass] abstract class Element specializes EModelElement (* The Elements owned by this element. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant ownedElement : Element[0, *]; (* The Element that owns this element. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant owner : Element; (* The Comments owned by this element. *) public attribute ownedComment : Comment[0, *]; (* Destroys this element by removing all cross references to/from it and removing it from its containing resource or object. *) public operation destroy(); (* Determines whether this element has the specified keyword. *) public operation hasKeyword(in keyword : String) : Boolean; (* Retrieves the keywords for this element. *) public operation getKeywords() : String[0, *]; (* Adds the specified keyword to this element. *) public operation addKeyword(in keyword : String) : Boolean; (* Removes the specified keyword from this element. *) public operation removeKeyword(in keyword : String) : Boolean; (* Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package). *) public operation getNearestPackage() : Package; (* Retrieves the model that owns (either directly or indirectly) this element. *) public operation getModel() : Model; (* Determines whether the specified stereotype is applicable to this element. *) public operation isStereotypeApplicable(in stereotype : Stereotype) : Boolean; (* Determines whether the specified stereotype is required for this element. *) public operation isStereotypeRequired(in stereotype : Stereotype) : Boolean; (* Determines whether the specified stereotype is applied to this element. *) public operation isStereotypeApplied(in stereotype : Stereotype) : Boolean; (* Applies the specified stereotype to this element. *) public operation applyStereotype(in stereotype : Stereotype) : EObject; (* Unapplies the specified stereotype from this element. *) public operation unapplyStereotype(in stereotype : Stereotype) : EObject; (* Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied. *) public operation getApplicableStereotypes() : Stereotype[0, *]; (* Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable. *) public operation getApplicableStereotype(in qualifiedName : String) : Stereotype; (* Retrieves the stereotype applications for this element. *) public operation getStereotypeApplications() : EObject[0, *]; (* Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists. *) public operation getStereotypeApplication(in stereotype : Stereotype) : EObject; (* Retrieves the stereotypes that are required for this element. *) public operation getRequiredStereotypes() : Stereotype[0, *]; (* Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required. *) public operation getRequiredStereotype(in qualifiedName : String) : Stereotype; (* Retrieves the stereotypes that are applied to this element. *) public operation getAppliedStereotypes() : Stereotype[0, *]; (* Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied. *) public operation getAppliedStereotype(in qualifiedName : String) : Stereotype; (* Retrieves the substereotypes of the specified stereotype that are applied to this element. *) public operation getAppliedSubstereotypes(in stereotype : Stereotype) : Stereotype[0, *]; (* Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied. *) public operation getAppliedSubstereotype(in stereotype : Stereotype, in qualifiedName : String) : Stereotype; (* Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype. *) public operation hasValue(in stereotype : Stereotype, in propertyName : String) : Boolean; (* Retrieves the value of the property with the specified name in the specified stereotype for this element. *) public operation getValue(in stereotype : Stereotype, in propertyName : String) : EJavaObject; (* Sets the value of the property with the specified name in the specified stereotype for this element. *) public operation setValue(in stereotype : Stereotype, in propertyName : String, in newValue : EJavaObject); (* Creates an annotation with the specified source and this element as its model element. *) public operation createEAnnotation(in source : String) : EAnnotation; (* Retrieves the relationships in which this element is involved. *) public operation getRelationships() : Relationship[0, *]; (* Retrieves the relationships of the specified type in which this element is involved. *) public operation getRelationships(in eClass : EClass) : Relationship[0, *]; (* Retrieves the directed relationships for which this element is a source. *) public operation getSourceDirectedRelationships() : DirectedRelationship[0, *]; (* Retrieves the directed relationships of the specified type for which this element is a source. *) public operation getSourceDirectedRelationships(in eClass : EClass) : DirectedRelationship[0, *]; (* Retrieves the directed relationships for which this element is a target. *) public operation getTargetDirectedRelationships() : DirectedRelationship[0, *]; (* Retrieves the directed relationships of the specified type for which this element is a target. *) public operation getTargetDirectedRelationships(in eClass : EClass) : DirectedRelationship[0, *]; (* The query allOwnedElements() gives all of the direct and indirect owned elements of an element. *) public operation allOwnedElements() : Element[0, *]; (* The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation. *) public operation mustBeOwned() : Boolean; end; association A_profileApplication_applyingPackage (* References the ProfileApplications that indicate which profiles have been applied to the Package. *) role Package.profileApplication; (* The package that owns the profile application. *) role ProfileApplication.applyingPackage; end; association A_ownedStereotype_profile (* References the Stereotypes that are owned by the Profile. *) role Profile.ownedStereotype; role unnamed : Profile; end; association A_appliedProfile_profileApplication (* References the Profiles that are applied to a Package through this ProfileApplication. *) role ProfileApplication.appliedProfile; role unnamed : ProfileApplication[0, *]; end; association A_extension_metaclass (* References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class. *) role Class.extension; (* References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd. *) role Extension.metaclass; end; association A_ownedEnd_extension (* References the end of the extension that is typed by a Stereotype. *) role Extension.ownedEnd; role unnamed : Extension; end; association A_type_extensionEnd (* References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes. *) role ExtensionEnd.type; role unnamed : ExtensionEnd[0, *]; end; association A_metaclassReference_profile (* References a metaclass that may be extended. *) role Profile.metaclassReference; role unnamed : Profile; end; association A_metamodelReference_profile (* References a package containing (directly or indirectly) metaclasses that may be extended. *) role Profile.metamodelReference; role unnamed : Profile; end; association A_icon_stereotype (* Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements. *) role Stereotype.icon; role unnamed : Stereotype; end; (* An extension end is used to tie an extension to a stereotype when extending a metaclass. *) (* The default multiplicity of an extension end is 0..1. *) [Standard::Metaclass] class ExtensionEnd specializes Property (* References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes. *) public attribute type : Stereotype; (* This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute lower : Integer := 0; [Ecore::EOperation(annotations=[])] protected operation getLower() : Integer; [Ecore::EOperation(annotations=[])] protected operation setLower(in newLower : Integer); (* The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty. *) public operation lowerBound() : Integer; end; (* VariableAction is an abstract class for actions that operate on a statically specified variable. *) [Standard::Metaclass] abstract class VariableAction specializes Action (* Variable to be read. *) public attribute variable : Variable; end; (* A read variable action is a variable action that retrieves the values of a variable. *) [Standard::Metaclass] class ReadVariableAction specializes VariableAction (* Gives the output pin on which the result is put. *) public attribute result : OutputPin; end; (* WriteVariableAction is an abstract class for variable actions that change variable values. *) [Standard::Metaclass] abstract class WriteVariableAction specializes VariableAction (* Value to be added or removed from the variable. *) public attribute value : InputPin; end; (* A clear variable action is a variable action that removes all values of a variable. *) [Standard::Metaclass] class ClearVariableAction specializes VariableAction end; (* An add variable value action is a write variable action for adding values to a variable. *) [Standard::Metaclass] class AddVariableValueAction specializes WriteVariableAction (* Specifies whether existing values of the variable should be removed before adding the new value. *) public attribute isReplaceAll : Boolean := false; (* Gives the position at which to insert a new value or move an existing value in ordered variables. The types is UnlimitedINatural, but the value cannot be zero. This pin is omitted for unordered variables. *) public attribute insertAt : InputPin; end; (* A remove variable value action is a write variable action that removes values from variables. *) [Standard::Metaclass] class RemoveVariableValueAction specializes WriteVariableAction (* Specifies whether to remove duplicates of the value in nonunique variables. *) public attribute isRemoveDuplicates : Boolean := false; (* Specifies the position of an existing value to remove in ordered nonunique variables. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited. *) public attribute removeAt : InputPin; end; (* A raise exception action is an action that causes an exception to occur. The input value becomes the exception object. *) [Standard::Metaclass] class RaiseExceptionAction specializes Action (* An input pin whose value becomes an exception object. *) public attribute exception : InputPin; end; (* An action input pin is a kind of pin that executes an action to determine the values to input to another. *) [Standard::Metaclass] class ActionInputPin specializes InputPin (* The action used to provide values. *) public attribute fromAction : Action; end; association A_variable_variableAction (* Variable to be read. *) role VariableAction.variable; role unnamed : VariableAction[0, *]; end; association A_result_readVariableAction (* Gives the output pin on which the result is put. *) role ReadVariableAction.result; role unnamed : ReadVariableAction; end; association A_value_writeVariableAction (* Value to be added or removed from the variable. *) role WriteVariableAction.value; role unnamed : WriteVariableAction; end; association A_insertAt_addVariableValueAction (* Gives the position at which to insert a new value or move an existing value in ordered variables. The types is UnlimitedINatural, but the value cannot be zero. This pin is omitted for unordered variables. *) role AddVariableValueAction.insertAt; role unnamed : AddVariableValueAction; end; association A_removeAt_removeVariableValueAction (* Specifies the position of an existing value to remove in ordered nonunique variables. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited. *) role RemoveVariableValueAction.removeAt; role unnamed : RemoveVariableValueAction; end; association A_fromAction_actionInputPin (* The action used to provide values. *) role ActionInputPin.fromAction; role unnamed : ActionInputPin; end; association A_exception_raiseExceptionAction (* An input pin whose value becomes an exception object. *) role RaiseExceptionAction.exception; role unnamed : RaiseExceptionAction; end; (* A generalization set is a packageable element whose instances define collections of subsets of generalization relationships. *) [Standard::Metaclass] class GeneralizationSet specializes PackageableElement (* Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet. *) public attribute isCovering : Boolean := false; (* Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty. For example, Person could have two Generalization relationships, each with the different specific Classifier: Manager or Staff. This would be disjoint because every instance of Person must either be a Manager or Staff. In contrast, Person could have two Generalization relationships involving two specific (and non-covering) Classifiers: Sales Person and Manager. This GeneralizationSet would not be disjoint because there are instances of Person which can be a Sales Person and a Manager. *) public attribute isDisjoint : Boolean := false; (* Designates the Classifier that is defined as the power type for the associated GeneralizationSet. *) public attribute powertype : Classifier; (* Designates the instances of Generalization which are members of a given GeneralizationSet. *) public attribute generalization : Generalization[0, *]; end; (* A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Each instance of the specific classifier is also an indirect instance of the general classifier. Thus, the specific classifier inherits the features of the more general classifier. *) (* A generalization relates a specific classifier to a more general classifier, and is owned by the specific classifier. *) [Standard::Metaclass] class Generalization specializes DirectedRelationship (* Indicates whether the specific classifier can be used wherever the general classifier can be used. If true, the execution traces of the specific classifier will be a superset of the execution traces of the general classifier. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute isSubstitutable : Boolean; (* References the specializing classifier in the Generalization relationship. *) public attribute specific : Classifier; (* References the general classifier in the Generalization relationship. *) public attribute general : Classifier; (* Designates a set in which instances of Generalization is considered members. *) public attribute generalizationSet : GeneralizationSet[0, *]; end; association A_powertypeExtent_powertype (* Designates the GeneralizationSet of which the associated Classifier is a power type. *) role Classifier.powertypeExtent; (* Designates the Classifier that is defined as the power type for the associated GeneralizationSet. *) role GeneralizationSet.powertype; end; association A_generalizationSet_generalization (* Designates a set in which instances of Generalization is considered members. *) role Generalization.generalizationSet; (* Designates the instances of Generalization which are members of a given GeneralizationSet. *) role GeneralizationSet.generalization; end; (* An information item is an abstraction of all kinds of information that can be exchanged between objects. It is a kind of classifier intended for representing information in a very abstract way, one which cannot be instantiated. *) [Standard::Metaclass] class InformationItem specializes Classifier (* Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers. *) public attribute represented : Classifier[0, *]; end; (* An information flow specifies that one or more information items circulates from its sources to its targets. Information flows require some kind of information channel for transmitting information items from the source to the destination. An information channel is represented in various ways depending on the nature of its sources and targets. It may be represented by connectors, links, associations, or even dependencies. For example, if the source and destination are parts in some composite structure such as a collaboration, then the information channel is likely to be represented by a connector between them. Or, if the source and target are objects (which are a kind of instance specification), they may be represented by a link that joins the two, and so on. *) [Standard::Metaclass] class InformationFlow specializes DirectedRelationship, PackageableElement (* Determines which Relationship will realize the specified flow *) public attribute realization : Relationship[0, *]; (* Specifies the information items that may circulate on this information flow. *) public attribute conveyed : Classifier[1, *]; (* Defines from which source the conveyed InformationItems are initiated. *) public attribute informationSource : NamedElement[1, *]; (* Defines to which target the conveyed InformationItems are directed. *) public attribute informationTarget : NamedElement[1, *]; (* Determines which ActivityEdges will realize the specified flow. *) public attribute realizingActivityEdge : ActivityEdge[0, *]; (* Determines which Connectors will realize the specified flow. *) public attribute realizingConnector : Connector[0, *]; (* Determines which Messages will realize the specified flow. *) public attribute realizingMessage : Message[0, *]; end; association A_realization_abstraction (* Determines which Relationship will realize the specified flow *) role InformationFlow.realization; role abstraction : InformationFlow[0, *]; end; association A_represented_representation (* Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers. *) role InformationItem.represented; role representation : InformationItem[0, *]; end; association A_conveyed_informationFlow (* Specifies the information items that may circulate on this information flow. *) role InformationFlow.conveyed; role unnamed : InformationFlow[0, *]; end; association A_informationSource_informationFlow (* Defines from which source the conveyed InformationItems are initiated. *) role InformationFlow.informationSource; role unnamed : InformationFlow[0, *]; end; association A_informationTarget_informationFlow (* Defines to which target the conveyed InformationItems are directed. *) role InformationFlow.informationTarget; role unnamed : InformationFlow[0, *]; end; association A_realizingActivityEdge_informationFlow (* Determines which ActivityEdges will realize the specified flow. *) role InformationFlow.realizingActivityEdge; role unnamed : InformationFlow[0, *]; end; association A_realizingConnector_informationFlow (* Determines which Connectors will realize the specified flow. *) role InformationFlow.realizingConnector; role unnamed : InformationFlow[0, *]; end; association A_realizingMessage_informationFlow (* Determines which Messages will realize the specified flow. *) role InformationFlow.realizingMessage; role unnamed : InformationFlow[0, *]; end; (* A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. This purpose determines what is to be included in the model and what is irrelevant. Thus the model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail. *) [Standard::Metaclass] class Model specializes Package (* The name of the viewpoint that is expressed by a model (This name may refer to a profile definition). *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute viewpoint : String; (* Determines whether this model is a metamodel. *) public operation isMetamodel() : Boolean; end; (* A read extent action is an action that retrieves the current instances of a classifier. *) [Standard::Metaclass] class ReadExtentAction specializes Action (* The runtime instances of the classifier. *) public attribute result : OutputPin; (* The classifier whose instances are to be retrieved. *) public attribute classifier : Classifier; end; (* A reclassify object action is an action that changes which classifiers classify an object. *) [Standard::Metaclass] class ReclassifyObjectAction specializes Action (* Specifies whether existing classifiers should be removed before adding the new classifiers. *) public attribute isReplaceAll : Boolean := false; (* A set of classifiers to be removed from the classifiers of the object. *) public attribute oldClassifier : Classifier[0, *]; (* A set of classifiers to be added to the classifiers of the object. *) public attribute newClassifier : Classifier[0, *]; (* Holds the object to be reclassified. *) public attribute object : InputPin; end; (* A read is classified object action is an action that determines whether a runtime object is classified by a given classifier. *) [Standard::Metaclass] class ReadIsClassifiedObjectAction specializes Action (* Indicates whether the classifier must directly classify the input object. *) public attribute isDirect : Boolean := false; (* The classifier against which the classification of the input object is tested. *) public attribute classifier : Classifier; (* After termination of the action, will hold the result of the test. *) public attribute result : OutputPin; (* Holds the object whose classification is to be tested. *) public attribute object : InputPin; end; (* A start classifier behavior action is an action that starts the classifier behavior of the input. *) [Standard::Metaclass] class StartClassifierBehaviorAction specializes Action (* Holds the object on which to start the owned behavior. *) public attribute object : InputPin; end; (* A qualifier value is not an action. It is an element that identifies links. It gives a single qualifier within a link end data specification. *) [Standard::Metaclass] class QualifierValue specializes Element (* Attribute representing the qualifier for which the value is to be specified. *) public attribute qualifier : Property; (* Input pin from which the specified value for the qualifier is taken. *) public attribute value : InputPin; end; (* A link end data is not an action. It is an element that identifies links. It identifies one end of a link to be read or written by the children of a link action. A link cannot be passed as a runtime value to or from an action. Instead, a link is identified by its end objects and qualifier values, if any. This requires more than one piece of data, namely, the statically-specified end in the user model, the object on the end, and the qualifier values for that end, if any. These pieces are brought together around a link end data. Each association end is identified separately with an instance of the LinkEndData class. *) [Standard::Metaclass] class LinkEndData specializes Element (* Input pin that provides the specified object for the given end. This pin is omitted if the link-end data specifies an 'open' end for reading. *) public attribute value : InputPin; (* Association end for which this link-end data specifies values. *) public attribute end : Property; (* List of qualifier values *) public attribute qualifier : QualifierValue[0, *]; end; (* A read link object end action is an action that retrieves an end object from a link object. *) [Standard::Metaclass] class ReadLinkObjectEndAction specializes Action (* Gives the input pin from which the link object is obtained. *) public attribute object : InputPin; (* Link end to be read. *) public attribute end : Property; (* Pin where the result value is placed. *) public attribute result : OutputPin; end; (* A read link object end qualifier action is an action that retrieves a qualifier end value from a link object. *) [Standard::Metaclass] class ReadLinkObjectEndQualifierAction specializes Action (* Gives the input pin from which the link object is obtained. *) public attribute object : InputPin; (* Pin where the result value is placed. *) public attribute result : OutputPin; (* The attribute representing the qualifier to be read. *) public attribute qualifier : Property; end; (* A create link object action creates a link object. *) [Standard::Metaclass] class CreateLinkObjectAction specializes CreateLinkAction (* Gives the output pin on which the result is put. *) public attribute result : OutputPin; end; (* A accept event action is an action that waits for the occurrence of an event meeting specified conditions. *) [Standard::Metaclass] class AcceptEventAction specializes Action (* Indicates whether there is a single output pin for the event, or multiple output pins for attributes of the event. *) public attribute isUnmarshall : Boolean := false; (* Pins holding the received event objects or their attributes. Event objects may be copied in transmission, so identity might not be preserved. *) public attribute result : OutputPin[0, *]; (* The type of events accepted by the action, as specified by triggers. For triggers with signal events, a signal of the specified type or any subtype of the specified signal type is accepted. *) public attribute trigger : Trigger[1, *]; end; (* An accept call action is an accept event action representing the receipt of a synchronous call request. In addition to the normal operation parameters, the action produces an output that is needed later to supply the information to the reply action necessary to return control to the caller. This action is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent reply action will complete immediately with no effects. *) [Standard::Metaclass] class AcceptCallAction specializes AcceptEventAction (* Pin where a value is placed containing sufficient information to perform a subsequent reply and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model. *) public attribute returnInformation : OutputPin; end; (* A reply action is an action that accepts a set of return values and a value containing return information produced by a previous accept call action. The reply action returns the values to the caller of the previous call, completing execution of the call. *) [Standard::Metaclass] class ReplyAction specializes Action (* The trigger specifying the operation whose call is being replied to. *) public attribute replyToCall : Trigger; (* A pin containing the return information value produced by an earlier AcceptCallAction. *) public attribute returnInformation : InputPin; (* A list of pins containing the reply values of the operation. These values are returned to the caller. *) public attribute replyValue : InputPin[0, *]; end; (* An unmarshall action is an action that breaks an object of a known type into outputs each of which is equal to a value from a structural feature of the object. *) [Standard::Metaclass] class UnmarshallAction specializes Action (* The values of the structural features of the input object. *) public attribute result : OutputPin[1, *]; (* The type of the object to be unmarshalled. *) public attribute unmarshallType : Classifier; (* The object to be unmarshalled. *) public attribute object : InputPin; end; (* A reduce action is an action that reduces a collection to a single value by combining the elements of the collection. *) [Standard::Metaclass] class ReduceAction specializes Action (* Behavior that is applied to two elements of the input collection to produce a value that is the same type as elements of the collection. *) public attribute reducer : Behavior; (* Gives the output pin on which the result is put. *) public attribute result : OutputPin; (* The collection to be reduced. *) public attribute collection : InputPin; (* Tells whether the order of the input collection should determine the order in which the behavior is applied to its elements. *) public attribute isOrdered : Boolean := false; end; association A_result_readExtentAction (* The runtime instances of the classifier. *) role ReadExtentAction.result; role unnamed : ReadExtentAction; end; association A_classifier_readExtentAction (* The classifier whose instances are to be retrieved. *) role ReadExtentAction.classifier; role unnamed : ReadExtentAction; end; association A_oldClassifier_reclassifyObjectAction (* A set of classifiers to be removed from the classifiers of the object. *) role ReclassifyObjectAction.oldClassifier; role unnamed : ReclassifyObjectAction[0, *]; end; association A_newClassifier_reclassifyObjectAction (* A set of classifiers to be added to the classifiers of the object. *) role ReclassifyObjectAction.newClassifier; role unnamed : ReclassifyObjectAction[0, *]; end; association A_classifier_readIsClassifiedObjectAction (* The classifier against which the classification of the input object is tested. *) role ReadIsClassifiedObjectAction.classifier; role unnamed : ReadIsClassifiedObjectAction[0, *]; end; association A_result_readIsClassifiedObjectAction (* After termination of the action, will hold the result of the test. *) role ReadIsClassifiedObjectAction.result; role unnamed : ReadIsClassifiedObjectAction; end; association A_object_readIsClassifiedObjectAction (* Holds the object whose classification is to be tested. *) role ReadIsClassifiedObjectAction.object; role unnamed : ReadIsClassifiedObjectAction; end; association A_object_startClassifierBehaviorAction (* Holds the object on which to start the owned behavior. *) role StartClassifierBehaviorAction.object; role unnamed : StartClassifierBehaviorAction; end; association A_qualifier_linkEndData (* List of qualifier values *) role LinkEndData.qualifier; role unnamed : LinkEndData; end; association A_qualifier_qualifierValue (* Attribute representing the qualifier for which the value is to be specified. *) role QualifierValue.qualifier; role unnamed : QualifierValue[0, *]; end; association A_value_qualifierValue (* Input pin from which the specified value for the qualifier is taken. *) role QualifierValue.value; role unnamed : QualifierValue; end; association A_object_readLinkObjectEndAction (* Gives the input pin from which the link object is obtained. *) role ReadLinkObjectEndAction.object; role unnamed : ReadLinkObjectEndAction; end; association A_end_readLinkObjectEndAction (* Link end to be read. *) role ReadLinkObjectEndAction.end; role unnamed : ReadLinkObjectEndAction; end; association A_result_readLinkObjectEndAction (* Pin where the result value is placed. *) role ReadLinkObjectEndAction.result; role unnamed : ReadLinkObjectEndAction; end; association A_object_readLinkObjectEndQualifierAction (* Gives the input pin from which the link object is obtained. *) role ReadLinkObjectEndQualifierAction.object; role unnamed : ReadLinkObjectEndQualifierAction; end; association A_result_readLinkObjectEndQualifierAction (* Pin where the result value is placed. *) role ReadLinkObjectEndQualifierAction.result; role unnamed : ReadLinkObjectEndQualifierAction; end; association A_qualifier_readLinkObjectEndQualifierAction (* The attribute representing the qualifier to be read. *) role ReadLinkObjectEndQualifierAction.qualifier; role unnamed : ReadLinkObjectEndQualifierAction; end; association A_result_createLinkObjectAction (* Gives the output pin on which the result is put. *) role CreateLinkObjectAction.result; role unnamed : CreateLinkObjectAction; end; composition A_reclassifyObjectAction_object (* Holds the object to be reclassified. *) role ReclassifyObjectAction.object; role unnamed : ReclassifyObjectAction; end; association A_result_acceptEventAction (* Pins holding the received event objects or their attributes. Event objects may be copied in transmission, so identity might not be preserved. *) role AcceptEventAction.result; role unnamed : AcceptEventAction; end; association A_returnInformation_acceptCallAction (* Pin where a value is placed containing sufficient information to perform a subsequent reply and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model. *) role AcceptCallAction.returnInformation; role unnamed : AcceptCallAction; end; association A_replyToCall_replyAction (* The trigger specifying the operation whose call is being replied to. *) role ReplyAction.replyToCall; role unnamed : ReplyAction; end; association A_result_unmarshallAction (* The values of the structural features of the input object. *) role UnmarshallAction.result; role unnamed : UnmarshallAction; end; association A_unmarshallType_unmarshallAction (* The type of the object to be unmarshalled. *) role UnmarshallAction.unmarshallType; role unnamed : UnmarshallAction[0, *]; end; association A_object_unmarshallAction (* The object to be unmarshalled. *) role UnmarshallAction.object; role unnamed : UnmarshallAction; end; association A_returnInformation_replyAction (* A pin containing the return information value produced by an earlier AcceptCallAction. *) role ReplyAction.returnInformation; role unnamed : ReplyAction; end; association A_replyValue_replyAction (* A list of pins containing the reply values of the operation. These values are returned to the caller. *) role ReplyAction.replyValue; role unnamed : ReplyAction; end; association A_trigger_acceptEventAction (* The type of events accepted by the action, as specified by triggers. For triggers with signal events, a signal of the specified type or any subtype of the specified signal type is accepted. *) role AcceptEventAction.trigger; role unnamed : AcceptEventAction; end; association A_result_reduceAction (* Gives the output pin on which the result is put. *) role ReduceAction.result; role unnamed : ReduceAction; end; association A_collection_reduceAction (* The collection to be reduced. *) role ReduceAction.collection; role unnamed : ReduceAction; end; association A_reducer_reduceAction (* Behavior that is applied to two elements of the input collection to produce a value that is the same type as elements of the collection. *) role ReduceAction.reducer; role unnamed : ReduceAction[0, *]; end; (* A join node is a control node that synchronizes multiple flows. *) (* Join nodes have a Boolean value specification using the names of the incoming edges to specify the conditions under which the join will emit a token. *) [Standard::Metaclass] class JoinNode specializes ControlNode (* Tells whether tokens having objects with the same identity are combined into one by the join. *) public attribute isCombineDuplicate : Boolean := true; (* A specification giving the conditions under which the join with emit a token. Default is "and". *) public attribute joinSpec : ValueSpecification; end; (* A data store node is a central buffer node for non-transient information. *) [Standard::Metaclass] class DataStoreNode specializes CentralBufferNode end; (* An object flow is an activity edge that can have objects or data passing along it. *) (* Object flows have support for multicast/receive, token selection from object nodes, and transformation of tokens. *) [Standard::Metaclass] class ObjectFlow specializes ActivityEdge (* Tells whether the objects in the flow are passed by multicasting. *) public attribute isMulticast : Boolean := false; (* Tells whether the objects in the flow are gathered from respondents to multicasting. *) public attribute isMultireceive : Boolean := false; (* Changes or replaces data tokens flowing along edge. *) public attribute transformation : Behavior; (* Selects tokens from a source object node. *) public attribute selection : Behavior; end; (* An object node is an abstract activity node that is part of defining object flow in an activity. *) (* Object nodes have support for token selection, limitation on the number of tokens, specifying the state required for tokens, and carrying control values. *) [Standard::Metaclass] abstract class ObjectNode specializes ActivityNode, TypedElement (* Tells whether and how the tokens in the object node are ordered for selection to traverse edges outgoing from the object node. *) public attribute ordering : ObjectNodeOrderingKind := ; (* Tells whether the type of the object node is to be treated as control. *) public attribute isControlType : Boolean := false; (* The maximum number of tokens allowed in the node. Objects cannot flow into the node if the upper bound is reached. *) public attribute upperBound : ValueSpecification; (* The required states of the object available at this point in the activity. *) public attribute inState : State[0, *]; (* Selects tokens for outgoing edges. *) public attribute selection : Behavior; end; (* A parameter set is an element that provides alternative sets of inputs or outputs that a behavior may use. *) [Standard::Metaclass] class ParameterSet specializes NamedElement (* Parameters in the parameter set. *) public attribute parameter : Parameter[1, *]; (* Constraint that should be satisfied for the owner of the parameters in an input parameter set to start execution using the values provided for those parameters, or the owner of the parameters in an output parameter set to end execution providing the values for those parameters, if all preconditions and conditions on input parameter sets were satisfied. *) public attribute condition : Constraint[0, *]; end; (* An activity is the specification of parameterized behavior as the coordinated sequencing of subordinate units whose individual elements are actions. *) [Standard::Metaclass] class Activity specializes Behavior (* Top-level structured nodes in the activity. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant structuredNode : StructuredActivityNode[0, *]; (* Top-level variables in the activity. *) public attribute variable : Variable[0, *]; (* Nodes coordinated by the activity. *) public attribute node : ActivityNode[0, *]; (* If true, this activity must not make any changes to variables outside the activity or to objects. (This is an assertion, not an executable property. It may be used by an execution engine to optimize model execution. If the assertion is violated by the action, then the model is ill-formed.) The default is false (an activity may make nonlocal changes). *) public attribute isReadOnly : Boolean := false; (* Edges expressing flow between nodes of the activity. *) public attribute edge : ActivityEdge[0, *]; (* Top-level partitions in the activity. *) public attribute partition : ActivityPartition[0, *]; (* Top-level groups in the activity. *) public attribute group : ActivityGroup[0, *]; (* If true, all invocations of the activity are handled by the same execution. *) public attribute isSingleExecution : Boolean := false; end; (* A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature. *) (* Parameters are allowed to be treated as connectable elements. *) (* Parameters have support for streaming, exceptions, and parameter sets. *) [Standard::Metaclass] class Parameter specializes MultiplicityElement, ConnectableElement (* Indicates whether a parameter is being sent into or out of a behavioral element. *) public attribute direction : ParameterDirectionKind := ; (* Specifies a String that represents a value to be used when no argument is supplied for the Parameter. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=true,annotations=[])] public attribute default : String; (* Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter. *) public attribute defaultValue : ValueSpecification; (* References the Operation owning this parameter. *) public attribute operation : Operation; (* Tells whether an output parameter may emit a value to the exclusion of the other outputs. *) public attribute isException : Boolean := false; (* Tells whether an input parameter may accept values while its behavior is executing, or whether an output parameter post values while the behavior is executing. *) public attribute isStream : Boolean := false; (* Specifies the effect that the owner of the parameter has on values passed in or out of the parameter. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute effect : ParameterEffectKind; (* The parameter sets containing the parameter. See ParameterSet. *) public attribute parameterSet : ParameterSet[0, *]; [Ecore::EOperation(annotations=[])] protected operation getDefault() : String; [Ecore::EOperation(annotations=[])] protected operation isSetDefault() : Boolean; [Ecore::EOperation(annotations=[])] protected operation setDefault(in newDefault : String); [Ecore::EOperation(annotations=[])] protected operation unsetDefault(); (* Sets the default value for this parameter to the specified Boolean value. *) public operation setBooleanDefaultValue(in value : Boolean); (* Sets the default value for this parameter to the specified integer value. *) public operation setIntegerDefaultValue(in value : Integer); (* Sets the default value for this parameter to the specified string value. *) public operation setStringDefaultValue(in value : String); (* Sets the default value for this parameter to the specified unlimited natural value. *) public operation setUnlimitedNaturalDefaultValue(in value : UnlimitedNatural); (* Sets the default value for this parameter to the null value. *) public operation setNullDefaultValue(); end; (* An action is a named element that is the fundamental unit of executable functionality. The execution of an action represents some transformation or processing in the modeled system, be it a computer system or otherwise. *) (* An action represents a single step within an activity, that is, one that is not further decomposed within the activity. *) (* An action has pre- and post-conditions. *) [Standard::Metaclass] abstract class Action specializes ExecutableNode (* The ordered set of output pins connected to the Action. The action places its results onto pins in this set. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant output : OutputPin[0, *]; (* The ordered set of input pins connected to the Action. These are among the total set of inputs. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant input : InputPin[0, *]; (* The classifier that owns the behavior of which this action is a part. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant context : Classifier; (* Constraint that must be satisfied when execution is started. *) public attribute localPrecondition : Constraint[0, *]; (* Constraint that must be satisfied when executed is completed. *) public attribute localPostcondition : Constraint[0, *]; end; (* An interruptible activity region is an activity group that supports termination of tokens flowing in the portions of an activity. *) [Standard::Metaclass] class InterruptibleActivityRegion specializes ActivityGroup (* The edges leaving the region that will abort other tokens flowing in the region. *) public attribute interruptingEdge : ActivityEdge[0, *]; (* Nodes immediately contained in the group. *) public attribute node : ActivityNode[0, *]; end; (* ActivityNode is an abstract class for points in the flow of an activity connected by edges. *) [Standard::Metaclass] abstract class ActivityNode specializes RedefinableElement (* Structured activity node containing the node. *) public attribute inStructuredNode : StructuredActivityNode; (* Activity containing the node. *) public attribute activity : Activity; (* Edges that have the node as source. *) public attribute outgoing : ActivityEdge[0, *]; (* Edges that have the node as target. *) public attribute incoming : ActivityEdge[0, *]; (* Inherited nodes replaced by this node in a specialization of the activity. *) public attribute redefinedNode : ActivityNode[0, *]; (* Partitions containing the node. *) public attribute inPartition : ActivityPartition[0, *]; (* Interruptible regions containing the node. *) public attribute inInterruptibleRegion : InterruptibleActivityRegion[0, *]; (* Groups containing the node. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant inGroup : ActivityGroup[0, *]; end; (* A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances. *) (* A behavioral feature is implemented (realized) by a behavior. A behavioral feature specifies that a classifier will respond to a designated request by invoking its implementing method. *) (* A behavioral feature owns zero or more parameter sets. *) [Standard::Metaclass] abstract class BehavioralFeature specializes Feature, Namespace (* Specifies the ordered set of formal parameters of this BehavioralFeature. *) public attribute ownedParameter : Parameter[0, *]; (* If true, then the behavioral feature does not have an implementation, and one must be supplied by a more specific element. If false, the behavioral feature must have an implementation in the classifier or one must be inherited from a more general element. *) public attribute isAbstract : Boolean := false; (* A behavioral description that implements the behavioral feature. There may be at most one behavior for a particular pairing of a classifier (as owner of the behavior) and a behavioral feature (as specification of the behavior). *) public attribute method : Behavior[0, *]; (* Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a class with isActive being false). Active instances control access to their own behavioral features. *) public attribute concurrency : CallConcurrencyKind := ; (* References the Types representing exceptions that may be raised during an invocation of this feature. *) (* The signals that the behavioral feature raises as exceptions. *) public attribute raisedException : Type[0, *]; (* The ParameterSets owned by this BehavioralFeature. *) public attribute ownedParameterSet : ParameterSet[0, *]; (* Creates a return result parameter with the specified name and type. *) public operation createReturnResult(in name : String, in type : Type) : Parameter; (* The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures. *) public operation isDistinguishableFrom(in n : NamedElement, in ns : Namespace) : Boolean; end; (* Behavior is a specification of how its context classifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution. *) (* A behavior owns zero or more parameter sets. *) [Standard::Metaclass] abstract class Behavior specializes Class (* Tells whether the behavior can be invoked while it is still executing from a previous invocation. *) public attribute isReentrant : Boolean := false; (* References a behavior that this behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the behavior implements a behavioral feature, it replaces the redefined behavior. If the behavior is a classifier behavior, it extends the redefined behavior. *) public attribute redefinedBehavior : Behavior[0, *]; (* Designates a behavioral feature that the behavior implements. The behavioral feature must be owned by the classifier that owns the behavior or be inherited by it. The parameters of the behavioral feature and the implementing behavior must match. If a behavior does not have a specification, it is directly associated with a classifier (i.e., it is the behavior of the classifier as a whole). *) public attribute specification : BehavioralFeature; (* References a list of parameters to the behavior which describes the order and type of arguments that can be given when the behavior is invoked and of the values which will be returned when the behavior completes its execution. *) public attribute ownedParameter : Parameter[0, *]; (* The classifier that is the context for the execution of the behavior. If the behavior is owned by a BehavioredClassifier, that classifier is the context. Otherwise, the context is the first BehavioredClassifier reached by following the chain of owner relationships. For example, following this algorithm, the context of an entry action in a state machine is the classifier that owns the state machine. The features of the context classifier as well as the elements visible to the context classifier are visible to the behavior. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant context : BehavioredClassifier; (* An optional set of Constraints specifying what must be fulfilled when the behavior is invoked. *) public attribute precondition : Constraint[0, *]; (* An optional set of Constraints specifying what is fulfilled after the execution of the behavior is completed, if its precondition was fulfilled before its invocation. *) public attribute postcondition : Constraint[0, *]; (* The ParameterSets owned by this Behavior. *) public attribute ownedParameterSet : ParameterSet[0, *]; [Ecore::EOperation(annotations=[])] protected operation getContext() : BehavioredClassifier; end; (* A pin is a typed element and multiplicity element that provides values to actions and accept result values from them. *) (* A pin is an object node for inputs and outputs to actions. *) [Standard::Metaclass] class Pin specializes MultiplicityElement, ObjectNode (* Tells whether the pins provide data to the actions, or just controls when it executes it. *) public attribute isControl : Boolean := false; end; (* ObjectNodeOrderingKind is an enumeration indicating queuing order within a node. *) enumeration ObjectNodeOrderingKind unordered, ordered, LIFO, FIFO end; (* The datatype ParameterEffectKind is an enumeration that indicates the effect of a behavior on values passed in or out of its parameters. *) enumeration ParameterEffectKind create, read, update, delete end; association A_weight_activityEdge (* Number of tokens consumed from the source node on each traversal. *) role ActivityEdge.weight; role unnamed : ActivityEdge; end; association A_upperBound_objectNode (* The maximum number of tokens allowed in the node. Objects cannot flow into the node if the upper bound is reached. *) role ObjectNode.upperBound; role unnamed : ObjectNode; end; association A_inState_objectNode (* The required states of the object available at this point in the activity. *) role ObjectNode.inState; role unnamed : ObjectNode[0, *]; end; association A_parameterSet_parameter (* The parameter sets containing the parameter. See ParameterSet. *) role Parameter.parameterSet; (* Parameters in the parameter set. *) role ParameterSet.parameter; end; association A_transformation_objectFlow (* Changes or replaces data tokens flowing along edge. *) role ObjectFlow.transformation; role unnamed : ObjectFlow[0, *]; end; composition A_action_localPrecondition (* Constraint that must be satisfied when execution is started. *) role Action.localPrecondition; role unnamed : Action; end; composition A_action_localPostcondition (* Constraint that must be satisfied when executed is completed. *) role Action.localPostcondition; role unnamed : Action; end; association A_interruptingEdge_interrupts (* The edges leaving the region that will abort other tokens flowing in the region. *) role InterruptibleActivityRegion.interruptingEdge; (* Region that the edge can interrupt. *) role ActivityEdge.interrupts; end; association A_inInterruptibleRegion_node (* Interruptible regions containing the node. *) role ActivityNode.inInterruptibleRegion; (* Nodes immediately contained in the group. *) role InterruptibleActivityRegion.node; end; association A_selection_objectFlow (* Selects tokens from a source object node. *) role ObjectFlow.selection; role unnamed : ObjectFlow[0, *]; end; association A_selection_objectNode (* Selects tokens for outgoing edges. *) role ObjectNode.selection; role unnamed : ObjectNode[0, *]; end; association A_condition_parameterSet (* Constraint that should be satisfied for the owner of the parameters in an input parameter set to start execution using the values provided for those parameters, or the owner of the parameters in an output parameter set to end execution providing the values for those parameters, if all preconditions and conditions on input parameter sets were satisfied. *) role ParameterSet.condition; role unnamed : ParameterSet; end; association A_ownedParameterSet_behavioralFeature (* The ParameterSets owned by this BehavioralFeature. *) role BehavioralFeature.ownedParameterSet; role unnamed : BehavioralFeature; end; association A_ownedParameterSet_behavior (* The ParameterSets owned by this Behavior. *) role Behavior.ownedParameterSet; role unnamed : Behavior; end; association A_containedNode_inGroup (* Nodes immediately contained in the group. *) role ActivityGroup.containedNode; (* Groups containing the node. *) role ActivityNode.inGroup; end; association A_joinSpec_joinNode (* A specification giving the conditions under which the join with emit a token. Default is "and". *) role JoinNode.joinSpec; role unnamed : JoinNode; end; (* A conditional node is a structured activity node that represents an exclusive choice among some number of alternatives. *) [Standard::Metaclass] class ConditionalNode specializes StructuredActivityNode (* If true, the modeler asserts that at most one test will succeed. *) public attribute isDeterminate : Boolean := false; (* If true, the modeler asserts that at least one test will succeed. *) public attribute isAssured : Boolean := false; (* Set of clauses composing the conditional. *) public attribute clause : Clause[1, *]; (* A list of output pins that constitute the data flow outputs of the conditional. *) public attribute result : OutputPin[0, *]; end; (* A structured activity node is an executable activity node that may have an expansion into subordinate nodes as an activity group. The subordinate nodes must belong to only one structured activity node, although they may be nested. *) (* Because of the concurrent nature of the execution of actions within and across activities, it can be difficult to guarantee the consistent access and modification of object memory. In order to avoid race conditions or other concurrency-related problems, it is sometimes necessary to isolate the effects of a group of actions from the effects of actions outside the group. This may be indicated by setting the mustIsolate attribute to true on a structured activity node. If a structured activity node is "isolated," then any object used by an action within the node cannot be accessed by any action outside the node until the structured activity node as a whole completes. Any concurrent actions that would result in accessing such objects are required to have their execution deferred until the completion of the node. *) [Standard::Metaclass] class StructuredActivityNode specializes Namespace, Action, ActivityGroup (* A variable defined in the scope of the structured activity node. It has no value and may not be accessed *) public attribute variable : Variable[0, *]; (* Nodes immediately contained in the group. *) public attribute node : ActivityNode[0, *]; (* Activity immediately containing the node. *) public attribute activity : Activity; (* If true, then the actions in the node execute in isolation from actions outside the node. *) public attribute mustIsolate : Boolean := false; (* Edges immediately contained in the structured node. *) public attribute edge : ActivityEdge[0, *]; end; (* A loop node is a structured activity node that represents a loop with setup, test, and body sections. *) [Standard::Metaclass] class LoopNode specializes StructuredActivityNode (* If true, the test is performed before the first execution of the body. If false, the body is executed once before the test is performed. *) public attribute isTestedFirst : Boolean := false; (* The set of nodes and edges that perform the repetitive computations of the loop. The body section is executed as long as the test section produces a true value. *) public attribute bodyPart : ExecutableNode[0, *]; (* The set of nodes and edges that initialize values or perform other setup computations for the loop. *) public attribute setupPart : ExecutableNode[0, *]; (* An output pin within the test fragment the value of which is examined after execution of the test to determine whether to execute the loop body. *) public attribute decider : OutputPin; (* The set of nodes, edges, and designated value that compute a Boolean value to determine if another execution of the body will be performed. *) public attribute test : ExecutableNode[0, *]; (* A list of output pins that constitute the data flow output of the entire loop. *) public attribute result : OutputPin[0, *]; (* A list of output pins that hold the values of the loop variables during an execution of the loop. When the test fails, the values are movied to the result pins of the loop. *) public attribute loopVariable : OutputPin[0, *]; (* A list of output pins within the body fragment the values of which are moved to the loop variable pins after completion of execution of the body, before the next iteration of the loop begins or before the loop exits. *) public attribute bodyOutput : OutputPin[0, *]; (* A list of values that are moved into the loop variable pins before the first iteration of the loop. *) public attribute loopVariableInput : InputPin[0, *]; end; (* A clause is an element that represents a single branch of a conditional construct, including a test and a body section. The body section is executed only if (but not necessarily if) the test section evaluates true. *) [Standard::Metaclass] class Clause specializes Element (* A nested activity fragment with a designated output pin that specifies the result of the test. *) public attribute test : ExecutableNode[0, *]; (* A nested activity fragment that is executed if the test evaluates to true and the clause is chosen over any concurrent clauses that also evaluate to true. *) public attribute body : ExecutableNode[0, *]; (* A set of clauses whose tests must all evaluate false before the current clause can be tested. *) public attribute predecessorClause : Clause[0, *]; (* A set of clauses which may not be tested unless the current clause tests false. *) public attribute successorClause : Clause[0, *]; (* An output pin within the test fragment the value of which is examined after execution of the test to determine whether the body should be executed. *) public attribute decider : OutputPin; (* A list of output pins within the body fragment whose values are moved to the result pins of the containing conditional node after execution of the clause body. *) public attribute bodyOutput : OutputPin[0, *]; end; (* An activity edge is an abstract class for directed connections between two activity nodes. *) (* Activity edges can be contained in interruptible regions. *) [Standard::Metaclass] abstract class ActivityEdge specializes RedefinableElement (* Activity containing the edge. *) public attribute activity : Activity; (* Node from which tokens are taken when they traverse the edge. *) public attribute source : ActivityNode; (* Node to which tokens are put when they traverse the edge. *) public attribute target : ActivityNode; (* Inherited edges replaced by this edge in a specialization of the activity. *) public attribute redefinedEdge : ActivityEdge[0, *]; (* Partitions containing the edge. *) public attribute inPartition : ActivityPartition[0, *]; (* Specification evaluated at runtime to determine if the edge can be traversed. *) public attribute guard : ValueSpecification; (* Number of tokens consumed from the source node on each traversal. *) public attribute weight : ValueSpecification; (* Region that the edge can interrupt. *) public attribute interrupts : InterruptibleActivityRegion; (* Structured activity node containing the edge. *) public attribute inStructuredNode : StructuredActivityNode; (* Groups containing the edge. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant inGroup : ActivityGroup[0, *]; end; (* ActivityGroup is an abstract class for defining sets of nodes and edges in an activity. *) [Standard::Metaclass] abstract class ActivityGroup specializes Element (* Groups immediately contained in the group. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant subgroup : ActivityGroup[0, *]; (* Group immediately containing the group. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant superGroup : ActivityGroup; (* Activity containing the group. *) public attribute inActivity : Activity; (* Nodes immediately contained in the group. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant containedNode : ActivityNode[0, *]; (* Edges immediately contained in the group. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant containedEdge : ActivityEdge[0, *]; end; association A_result_conditionalNode (* A list of output pins that constitute the data flow outputs of the conditional. *) role ConditionalNode.result; role unnamed : ConditionalNode; end; association A_result_loopNode (* A list of output pins that constitute the data flow output of the entire loop. *) role LoopNode.result; role unnamed : LoopNode; end; association A_loopVariable_loopNode (* A list of output pins that hold the values of the loop variables during an execution of the loop. When the test fails, the values are movied to the result pins of the loop. *) role LoopNode.loopVariable; role unnamed : LoopNode; end; association A_bodyOutput_loopNode (* A list of output pins within the body fragment the values of which are moved to the loop variable pins after completion of execution of the body, before the next iteration of the loop begins or before the loop exits. *) role LoopNode.bodyOutput; role unnamed : LoopNode[0, *]; end; association A_bodyOutput_clause (* A list of output pins within the body fragment whose values are moved to the result pins of the containing conditional node after execution of the clause body. *) role Clause.bodyOutput; role unnamed : Clause[0, *]; end; association A_loopVariableInput_loopNode (* A list of values that are moved into the loop variable pins before the first iteration of the loop. *) role LoopNode.loopVariableInput; role unnamed : LoopNode; end; association A_edge_inStructuredNode (* Edges immediately contained in the structured node. *) role StructuredActivityNode.edge; (* Structured activity node containing the edge. *) role ActivityEdge.inStructuredNode; end; association A_containedEdge_inGroup (* Edges immediately contained in the group. *) role ActivityGroup.containedEdge; (* Groups containing the edge. *) role ActivityEdge.inGroup; end; (* An expansion node is an object node used to indicate a flow across the boundary of an expansion region. A flow into a region contains a collection that is broken into its individual elements inside the region, which is executed once per element. A flow out of a region combines individual elements into a collection for use outside the region. *) [Standard::Metaclass] class ExpansionNode specializes ObjectNode (* The expansion region for which the node is an output. *) public attribute regionAsOutput : ExpansionRegion; (* The expansion region for which the node is an input. *) public attribute regionAsInput : ExpansionRegion; end; (* An expansion region is a structured activity region that executes multiple times corresponding to elements of an input collection. *) [Standard::Metaclass] class ExpansionRegion specializes StructuredActivityNode (* The way in which the executions interact: parallel: all interactions are independent iterative: the interactions occur in order of the elements stream: a stream of values flows into a single execution *) public attribute mode : ExpansionKind := ; (* An object node that accepts a separate element of the output collection during each of the multiple executions of the region. The values are formed into a collection that is available when the execution of the region is complete. *) public attribute outputElement : ExpansionNode[0, *]; (* An object node that holds a separate element of the input collection during each of the multiple executions of the region. *) public attribute inputElement : ExpansionNode[1, *]; end; (* An executable node is an abstract class for activity nodes that may be executed. It is used as an attachment point for exception handlers. *) [Standard::Metaclass] abstract class ExecutableNode specializes ActivityNode (* A set of exception handlers that are examined if an uncaught exception propagates to the outer level of the executable node. *) public attribute handler : ExceptionHandler[0, *]; end; (* An exception handler is an element that specifies a body to execute in case the specified exception occurs during the execution of the protected node. *) [Standard::Metaclass] class ExceptionHandler specializes Element (* The node protected by the handler. The handler is examined if an exception propagates to the outside of the node. *) public attribute protectedNode : ExecutableNode; (* A node that is executed if the handler satisfies an uncaught exception. *) public attribute handlerBody : ExecutableNode; (* An object node within the handler body. When the handler catches an exception, the exception token is placed in this node, causing the body to execute. *) public attribute exceptionInput : ObjectNode; (* The kind of instances that the handler catches. If an exception occurs whose type is any of the classifiers in the set, the handler catches the exception and executes its body. *) public attribute exceptionType : Classifier[1, *]; end; (* ExpansionKind is an enumeration type used to specify how multiple executions of an expansion region interact. *) enumeration ExpansionKind parallel, iterative, stream end; association A_outputElement_regionAsOutput (* An object node that accepts a separate element of the output collection during each of the multiple executions of the region. The values are formed into a collection that is available when the execution of the region is complete. *) role ExpansionRegion.outputElement; (* The expansion region for which the node is an output. *) role ExpansionNode.regionAsOutput; end; association A_inputElement_regionAsInput (* An object node that holds a separate element of the input collection during each of the multiple executions of the region. *) role ExpansionRegion.inputElement; (* The expansion region for which the node is an input. *) role ExpansionNode.regionAsInput; end; association A_handler_protectedNode (* A set of exception handlers that are examined if an uncaught exception propagates to the outer level of the executable node. *) role ExecutableNode.handler; (* The node protected by the handler. The handler is examined if an exception propagates to the outside of the node. *) role ExceptionHandler.protectedNode; end; association A_handlerBody_exceptionHandler (* A node that is executed if the handler satisfies an uncaught exception. *) role ExceptionHandler.handlerBody; role unnamed : ExceptionHandler[0, *]; end; association A_exceptionInput_exceptionHandler (* An object node within the handler body. When the handler catches an exception, the exception token is placed in this node, causing the body to execute. *) role ExceptionHandler.exceptionInput; role unnamed : ExceptionHandler[0, *]; end; association A_exceptionType_exceptionHandler (* The kind of instances that the handler catches. If an exception occurs whose type is any of the classifiers in the set, the handler catches the exception and executes its body. *) role ExceptionHandler.exceptionType; role unnamed : ExceptionHandler[0, *]; end; (* A component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment. *) (* In the namespace of a component, all model elements that are involved in or related to its definition are either owned or imported explicitly. This may include, for example, use cases and dependencies (e.g. mappings), packages, components, and artifacts. *) [Standard::Metaclass] class Component specializes Class, Namespace (* The kind of instantiation that applies to a Component. If false, the component is instantiated as an addressable object. If true, the Component is defined at design-time, but at runtime (or execution-time) an object specified by the Component does not exist, that is, the component is instantiated indirectly, through the instantiation of its realizing classifiers or parts. Several standard stereotypes use this meta attribute, e.g. <<specification>>, <<focus>>, <<subsystem>>. *) public attribute isIndirectlyInstantiated : Boolean := true; (* The interfaces that the component requires from other components in its environment in order to be able to offer its full set of provided functionality. These interfaces may be Used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant required : Interface[0, *]; (* The interfaces that the component exposes to its environment. These interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant provided : Interface[0, *]; (* The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior. *) public attribute realization : ComponentRealization[0, *]; (* The set of PackageableElements that a Component owns. In the namespace of a component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies (e.g. mappings), and Artifacts. *) public attribute packagedElement : PackageableElement[0, *]; (* Creates a(n) (abstract) class with the specified name as a packaged element of this component. *) public operation createOwnedClass(in name : String, in isAbstract : Boolean) : Class; (* Creates a enumeration with the specified name as a packaged element of this component. *) public operation createOwnedEnumeration(in name : String) : Enumeration; (* Creates a primitive type with the specified name as a packaged element of this component. *) public operation createOwnedPrimitiveType(in name : String) : PrimitiveType; (* Creates an interface with the specified name as a packaged element of this component. *) public operation createOwnedInterface(in name : String) : Interface; (* Utility returning the set of realized interfaces of a component: *) public operation realizedInterfaces(in classifier : Classifier) : Interface[0, *]; (* Utility returning the set of used interfaces of a component: *) public operation usedInterfaces(in classifier : Classifier) : Interface[0, *]; [Ecore::EOperation(operationName="getRequireds",annotations=[])] public operation required() : Interface[0, *]; [Ecore::EOperation(operationName="getProvideds",annotations=[])] public operation provided() : Interface[0, *]; end; composition A_component_packagedElement (* The set of PackageableElements that a Component owns. In the namespace of a component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies (e.g. mappings), and Artifacts. *) role Component.packagedElement; role unnamed : Component; end; (* A deployment is the allocation of an artifact or artifact instance to a deployment target. *) (* A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files. *) [Standard::Metaclass] class Deployment specializes Dependency (* The Artifacts that are deployed onto a Node. This association specializes the supplier association. *) public attribute deployedArtifact : DeployedArtifact[0, *]; (* The DeployedTarget which is the target of a Deployment. *) public attribute location : DeploymentTarget; (* The specification of properties that parameterize the deployment and execution of one or more Artifacts. *) public attribute configuration : DeploymentSpecification[0, *]; end; (* A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor. *) [Standard::Metaclass] class DeploymentSpecification specializes Artifact (* The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address'. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute deploymentLocation : String; (* The location where a component Artifact executes. This may be a local or remote location. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute executionLocation : String; (* The deployment with which the DeploymentSpecification is associated. *) public attribute deployment : Deployment; end; association A_configuration_deployment (* The specification of properties that parameterize the deployment and execution of one or more Artifacts. *) role Deployment.configuration; (* The deployment with which the DeploymentSpecification is associated. *) role DeploymentSpecification.deployment; end; (* Protocol state machines can be redefined into more specific protocol state machines, or into behavioral state machines. Protocol conformance declares that the specific protocol state machine specifies a protocol that conforms to the general state machine one, or that the specific behavioral state machine abide by the protocol of the general protocol state machine. *) [Standard::Metaclass] class ProtocolConformance specializes DirectedRelationship (* Specifies the state machine which conforms to the general state machine. *) public attribute specificMachine : ProtocolStateMachine; (* Specifies the protocol state machine to which the specific state machine conforms. *) public attribute generalMachine : ProtocolStateMachine; end; (* An interface is a kind of classifier that represents a declaration of a set of coherent public features and obligations. An interface specifies a contract; any instance of a classifier that realizes the interface must fulfill that contract. The obligations that may be associated with an interface are in the form of various kinds of constraints (such as pre- and post-conditions) or protocol specifications, which may impose ordering restrictions on interactions through the interface. *) (* Interfaces may include receptions (in addition to operations). *) (* Since an interface specifies conformance characteristics, it does not own detailed behavior specifications. Instead, interfaces may own a protocol state machine that specifies event sequences and pre/post conditions for the operations and receptions described by the interface. *) [Standard::Metaclass] class Interface specializes Classifier (* The attributes (i.e. the properties) owned by the class. *) public attribute ownedAttribute : Property[0, *]; (* The operations owned by the class. *) public attribute ownedOperation : Operation[0, *]; (* References all the Classifiers that are defined (nested) within the Class. *) public attribute nestedClassifier : Classifier[0, *]; (* References all the Interfaces redefined by this Interface. *) public attribute redefinedInterface : Interface[0, *]; (* Receptions that objects providing this interface are willing to accept. *) public attribute ownedReception : Reception[0, *]; (* References a protocol state machine specifying the legal sequences of the invocation of the behavioral features described in the interface. *) public attribute protocol : ProtocolStateMachine; (* Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this interface. *) public operation createOwnedOperation(in name : String, in parameterNames : String[0, *], in parameterTypes : Type[0, *], in returnType : Type) : Operation; (* Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this interface. *) public operation createOwnedAttribute(in name : String, in type : Type, in lower : Integer, in upper : UnlimitedNatural) : Property; end; (* A port is a property of a classifier that specifies a distinct interaction point between that classifier and its environment or between the (behavior of the) classifier and its internal parts. Ports are connected to properties of the classifier by connectors through which requests can be made to invoke the behavioral features of a classifier. A Port may specify the services a classifier provides (offers) to its environment as well as the services that a classifier expects (requires) of its environment. *) (* A port has an associated protocol state machine. *) [Standard::Metaclass] class Port specializes Property (* Specifies whether requests arriving at this port are sent to the classifier behavior of this classifier. Such ports are referred to as behavior port. Any invocation of a behavioral feature targeted at a behavior port will be handled by the instance of the owning classifier itself, rather than by any instances that this classifier may contain. *) public attribute isBehavior : Boolean := false; (* If true indicates that this port is used to provide the published functionality of a classifier; if false, this port is used to implement the classifier but is not part of the essential externally-visible functionality of the classifier and can, therefore, be altered or deleted along with the internal implementation of the classifier and other properties that are considered part of its implementation. *) public attribute isService : Boolean := true; (* References the interfaces specifying the set of operations and receptions which the classifier expects its environment to handle. This association is derived as the set of interfaces required by the type of the port or its supertypes. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant required : Interface[0, *]; (* A port may be redefined when its containing classifier is specialized. The redefining port may have additional interfaces to those that are associated with the redefined port or it may replace an interface by one of its subtypes. *) public attribute redefinedPort : Port[0, *]; (* References the interfaces specifying the set of operations and receptions which the classifier offers to its environment, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived from the interfaces realized by the type of the port or by the type of the port, if the port was typed by an interface. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant provided : Interface[0, *]; (* References an optional protocol state machine which describes valid interactions at this interaction point. *) public attribute protocol : ProtocolStateMachine; [Ecore::EOperation(annotations=[])] protected operation getProvideds() : Interface[0, *]; [Ecore::EOperation(annotations=[])] protected operation getRequireds() : Interface[0, *]; end; (* A protocol transition specifies a legal transition for an operation. Transitions of protocol state machines have the following information: a pre condition (guard), on trigger, and a post condition. Every protocol transition is associated to zero or one operation (referred BehavioralFeature) that belongs to the context classifier of the protocol state machine. *) [Standard::Metaclass] class ProtocolTransition specializes Transition (* Specifies the post condition of the transition which is the condition that should be obtained once the transition is triggered. This post condition is part of the post condition of the operation connected to the transition. *) public attribute postCondition : Constraint; (* This association refers to the associated operation. It is derived from the operation of the call trigger when applicable. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant referred : Operation[0, *]; (* Specifies the precondition of the transition. It specifies the condition that should be verified before triggering the transition. This guard condition added to the source state will be evaluated as part of the precondition of the operation referred by the transition if any. *) public attribute preCondition : Constraint; end; (* A protocol state machine is always defined in the context of a classifier. It specifies which operations of the classifier can be called in which state and under which condition, thus specifying the allowed call sequences on the classifier's operations. A protocol state machine presents the possible and permitted transitions on the instances of its context classifier, together with the operations which carry the transitions. In this manner, an instance lifecycle can be created for a classifier, by specifying the order in which the operations can be activated and the states through which an instance progresses during its existence. *) [Standard::Metaclass] class ProtocolStateMachine specializes StateMachine (* Conformance between protocol state machines. *) public attribute conformance : ProtocolConformance[0, *]; end; (* A state models a situation during which some (usually implicit) invariant condition holds. *) (* The states of protocol state machines are exposed to the users of their context classifiers. A protocol state represents an exposed stable situation of its context classifier: when an instance of the classifier is not processing any operation, users of this instance can always know its state configuration. *) [Standard::Metaclass] class State specializes Vertex, RedefinableElement, Namespace (* A state with isComposite=true is said to be a composite state. A composite state is a state that contains at least one region. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant isComposite : Boolean := false; (* A state with isOrthogonal=true is said to be an orthogonal composite state. An orthogonal composite state contains two or more regions. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant isOrthogonal : Boolean := false; (* A state with isSimple=true is said to be a simple state. A simple state does not have any regions and it does not refer to any submachine state machine. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant isSimple : Boolean := true; (* A state with isSubmachineState=true is said to be a submachine state. Such a state refers to a state machine (submachine). *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant isSubmachineState : Boolean := false; (* The state machine that is to be inserted in place of the (submachine) state. *) public attribute submachine : StateMachine; (* The entry and exit connection points used in conjunction with this (submachine) state, i.e. as targets and sources, respectively, in the region with the submachine state. A connection point reference references the corresponding definition of a connection point pseudostate in the statemachine referenced by the submachinestate. *) public attribute connection : ConnectionPointReference[0, *]; (* The state of which this state is a redefinition. *) public attribute redefinedState : State; (* The regions owned directly by the state. *) public attribute region : Region[0, *]; (* References the classifier in which context this element may be redefined. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant redefinitionContext : Classifier; (* Specifies conditions that are always true when this state is the current state. In protocol state machines, state invariants are additional conditions to the preconditions of the outgoing transitions, and to the postcondition of the incoming transitions. *) public attribute stateInvariant : Constraint; (* An optional behavior that is executed whenever this state is entered regardless of the transition taken to reach the state. If defined, entry actions are always executed to completion prior to any internal behavior or transitions performed within the state. *) public attribute entry : Behavior; (* An optional behavior that is executed whenever this state is exited regardless of which transition was taken out of the state. If defined, exit actions are always executed to completion only after all internal activities and transition actions have completed execution. *) public attribute exit : Behavior; (* An optional behavior that is executed while being in the state. The execution starts when this state is entered, and stops either by itself, or when the state is exited, whichever comes first. *) public attribute doActivity : Behavior; (* The entry and exit pseudostates of a composite state. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite states. *) public attribute connectionPoint : Pseudostate[0, *]; (* A list of triggers that are candidates to be retained by the state machine if they trigger no transitions out of the state (not consumed). A deferred trigger is retained until the state machine reaches a state configuration where it is no longer deferred. *) public attribute deferrableTrigger : Trigger[0, *]; (* A simple state is a state without any regions. *) public operation isSimple() : Boolean; (* A composite state is a state with at least one region. *) public operation isComposite() : Boolean; (* An orthogonal state is a composite state with at least 2 regions *) public operation isOrthogonal() : Boolean; (* Only submachine states can have a reference statemachine. *) public operation isSubmachineState() : Boolean; (* The redefinition context of a state is the nearest containing statemachine. *) public operation redefinitionContext() : Classifier; (* The query isRedefinitionContextValid() specifies whether the redefinition contexts of a state are properly related to the redefinition contexts of the specified state to allow this element to redefine the other. The containing region of a redefining state must redefine the containing region of the redefined state. *) public operation isRedefinitionContextValid(in redefined : State) : Boolean; (* The query isConsistentWith() specifies that a redefining state is consistent with a redefined state provided that the redefining state is an extension of the redefined state: A simple state can be redefined (extended) to become a composite state (by adding a region) and a composite state can be redefined (extended) by adding regions and by adding vertices, states, and transitions to inherited regions. All states may add or replace entry, exit, and 'doActivity' actions. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; (* The query containingStateMachine() returns the state machine that contains the state either directly or transitively. *) public operation containingStateMachine() : StateMachine; end; (* A region is an orthogonal part of either a composite state or a state machine. It contains states and transitions. *) [Standard::Metaclass] class Region specializes RedefinableElement, Namespace (* The set of vertices that are owned by this region. *) public attribute subvertex : Vertex[0, *]; (* The set of transitions owned by the region. Note that internal transitions are owned by a region, but applies to the source state. *) public attribute transition : Transition[0, *]; (* The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State. *) public attribute stateMachine : StateMachine; (* The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine. *) public attribute state : State; (* The region of which this region is an extension. *) public attribute extendedRegion : Region; (* References the classifier in which context this element may be redefined. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant redefinitionContext : Classifier; (* The redefinition context of a region is the nearest containing statemachine *) public operation redefinitionContext() : Classifier; (* The query isRedefinitionContextValid() specifies whether the redefinition contexts of a region are properly related to the redefinition contexts of the specified region to allow this element to redefine the other. The containing statemachine/state of a redefining region must redefine the containing statemachine/state of the redefined region. *) public operation isRedefinitionContextValid(in redefined : Region) : Boolean; (* The query isConsistentWith() specifies that a redefining region is consistent with a redefined region provided that the redefining region is an extension of the redefined region, i.e. it adds vertices and transitions and it redefines states and transitions of the redefined region. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; (* The operation containingStateMachine() returns the sate machine in which this Region is defined *) public operation containingStateMachine() : StateMachine; (* The operation belongsToPSM () checks if the region belongs to a protocol state machine *) public operation belongsToPSM() : Boolean; end; association A_conformance_specificMachine (* Conformance between protocol state machines. *) role ProtocolStateMachine.conformance; (* Specifies the state machine which conforms to the general state machine. *) role ProtocolConformance.specificMachine; end; association A_protocol_port (* References an optional protocol state machine which describes valid interactions at this interaction point. *) role Port.protocol; role unnamed : Port[0, *]; end; association A_postCondition_owningTransition (* Specifies the post condition of the transition which is the condition that should be obtained once the transition is triggered. This post condition is part of the post condition of the operation connected to the transition. *) role ProtocolTransition.postCondition; role owningTransition : ProtocolTransition; end; association A_protocol_interface (* References a protocol state machine specifying the legal sequences of the invocation of the behavioral features described in the interface. *) role Interface.protocol; (* Specifies the namespace in which the protocol state machine is defined. *) role interface : Interface; end; association A_generalMachine_protocolConformance (* Specifies the protocol state machine to which the specific state machine conforms. *) role ProtocolConformance.generalMachine; role unnamed : ProtocolConformance[0, *]; end; association A_referred_protocolTransition (* This association refers to the associated operation. It is derived from the operation of the call trigger when applicable. *) role ProtocolTransition.referred; role unnamed : ProtocolTransition[0, *]; end; association A_preCondition_protocolTransition (* Specifies the precondition of the transition. It specifies the condition that should be verified before triggering the transition. This guard condition added to the source state will be evaluated as part of the precondition of the operation referred by the transition if any. *) role ProtocolTransition.preCondition; role unnamed : ProtocolTransition; end; (* A model element that has both association and class properties. An AssociationClass can be seen as an association that also has class properties, or as a class that also has association properties. It not only connects a set of classifiers but also defines a set of features that belong to the relationship itself and not to any of the classifiers. *) [Standard::Metaclass] class AssociationClass specializes Association, Class (* The operation allConnections results in the set of all AssociationEnds of the Association. *) public operation allConnections() : Property[2, *]; end; association A_qualifier_associationEnd (* An optional list of ordered qualifier attributes for the end. If the list is empty, then the Association is not qualified. *) role Property.qualifier; (* Designates the optional association end that owns a qualifier attribute. *) role Property.associationEnd; end; (* A template signature bundles the set of formal template parameters for a templated element. *) [Standard::Metaclass] class TemplateSignature specializes Element (* The ordered set of all formal template parameters for this template signature. *) public attribute parameter : TemplateParameter[1, *]; (* The formal template parameters that are owned by this template signature. *) public attribute ownedParameter : TemplateParameter[0, *]; (* The element that owns this template signature. *) public attribute template : TemplateableElement; end; (* A named element is an element in a model that may have a name. *) (* A named element supports using a string expression to specify its name. This allows names of model elements to involve template parameters. The actual name is evaluated from the string expression only when it is sensible to do so (e.g., when a template is bound). *) [Standard::Metaclass] abstract class NamedElement specializes Element (* The name of the NamedElement. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute name : String; (* Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility. *) [Ecore::EAttribute(isID=false,isTransient=false,isVolatile=false,isUnsettable=true,annotations=[])] public attribute visibility : VisibilityKind; (* A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant qualifiedName : String; (* Indicates the dependencies that reference the client. *) public attribute clientDependency : Dependency[0, *]; (* Specifies the namespace that owns the NamedElement. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant namespace : Namespace; (* The string expression used to define the name of this named element. *) public attribute nameExpression : StringExpression; (* Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package. *) public operation createDependency(in supplier : NamedElement) : Dependency; (* Retrieves a localized label for this named element. *) public operation getLabel() : String; (* Retrieves a label for this named element, localized if indicated. *) public operation getLabel(in localize : Boolean) : String; (* Creates a usage between this named element and the specified supplier, owned by this named element's nearest package. *) public operation createUsage(in supplier : NamedElement) : Usage; [Ecore::EOperation(operationName="getQualifiedName",annotations=[])] (* When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces. *) public operation qualifiedName() : String; (* The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards. *) public operation allNamespaces() : Namespace[0, *]; (* The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names. *) public operation isDistinguishableFrom(in n : NamedElement, in ns : Namespace) : Boolean; (* The query separator() gives the string that is used to separate names when constructing a qualified name. *) public operation separator() : String; (* The query allOwningPackages() returns all the directly or indirectly owning packages. *) public operation allOwningPackages() : Package[0, *]; end; (* A template parameter exposes a parameterable element as a formal template parameter of a template. *) [Standard::Metaclass] class TemplateParameter specializes Element (* The template signature that owns this template parameter. *) public attribute signature : TemplateSignature; (* The element exposed by this template parameter. *) public attribute parameteredElement : ParameterableElement; (* The element that is owned by this template parameter. *) public attribute ownedParameteredElement : ParameterableElement; (* The element that is the default for this formal template parameter. *) public attribute default : ParameterableElement; (* The element that is owned by this template parameter for the purpose of providing a default. *) public attribute ownedDefault : ParameterableElement; end; (* An expression that specifies a string value that is derived by concatenating a set of sub string expressions, some of which might be template parameters. *) [Standard::Metaclass] class StringExpression specializes TemplateableElement, Expression (* The StringExpressions that constitute this StringExpression. *) public attribute subExpression : StringExpression[0, *]; (* The string expression of which this expression is a substring. *) public attribute owningExpression : StringExpression; (* The query stringValue() returns the string that concatenates, in order, all the component string literals of all the subexpressions that are part of the StringExpression. *) public operation stringValue() : String; end; (* A template binding represents a relationship between a templateable element and a template. A template binding specifies the substitutions of actual parameters for the formal parameters of the template. *) [Standard::Metaclass] class TemplateBinding specializes DirectedRelationship (* The element that is bound by this binding. *) public attribute boundElement : TemplateableElement; (* The template signature for the template that is the target of the binding. *) public attribute signature : TemplateSignature; (* The parameter substitutions owned by this template binding. *) public attribute parameterSubstitution : TemplateParameterSubstitution[0, *]; end; (* A template parameter substitution relates the actual parameter(s) to a formal template parameter as part of a template binding. *) [Standard::Metaclass] class TemplateParameterSubstitution specializes Element (* The formal template parameter that is associated with this substitution. *) public attribute formal : TemplateParameter; (* The optional bindings from this element to templates. *) public attribute templateBinding : TemplateBinding; (* The elements that are the actual parameters for this substitution. *) public attribute actual : ParameterableElement[1, *]; (* The actual parameters that are owned by this substitution. *) public attribute ownedActual : ParameterableElement[0, *]; end; (* A templateable element is an element that can optionally be defined as a template and bound to other templates. *) [Standard::Metaclass] abstract class TemplateableElement specializes Element (* The optional bindings from this element to templates. *) public attribute templateBinding : TemplateBinding[0, *]; (* The optional template signature specifying the formal template parameters. *) public attribute ownedTemplateSignature : TemplateSignature; (* The query parameterableElements() returns the set of elements that may be used as the parametered elements for a template parameter of this templateable element. By default, this set includes all the owned elements. Subclasses may override this operation if they choose to restrict the set of parameterable elements. *) public operation parameterableElements() : ParameterableElement[0, *]; (* The query isTemplate() returns whether this templateable element is actually a template. *) public operation isTemplate() : Boolean; end; (* A parameterable element is an element that can be exposed as a formal template parameter for a template, or specified as an actual parameter in a binding of a template. *) [Standard::Metaclass] abstract class ParameterableElement specializes Element (* The template parameter that exposes this element as a formal parameter. *) public attribute templateParameter : TemplateParameter; (* The formal template parameter that owns this element. *) public attribute owningTemplateParameter : TemplateParameter; (* The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. Subclasses should override this operation to specify different compatibility constraints. *) public operation isCompatibleWith(in p : ParameterableElement) : Boolean; (* The query isTemplateParameter() determines if this parameterable element is exposed as a formal template parameter. *) public operation isTemplateParameter() : Boolean; end; (* A property is a structural feature of a classifier that characterizes instances of the classifier. A property related by ownedAttribute to a classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the class to a value or set of values of the type of the attribute. A property related by memberEnd or its specializations to an association represents an end of the association. The type of the property is the type of the end of the association. *) (* A property represents a set of instances that are owned by a containing classifier instance. *) (* A property has the capability of being a deployment target in a deployment relationship. This enables modeling the deployment to hierarchical nodes that have properties functioning as internal parts. *) (* Property represents a declared state of one or more instances in terms of a named relationship to a value or values. When a property is an attribute of a classifier, the value or values are related to the instance of the classifier by being held in slots of the instance. When a property is an association end, the value or values are related to the instance or instances at the other end(s) of the association. The range of valid values represented by the property can be controlled by setting the property's type. *) (* Property specializes ParameterableElement to specify that a property can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template. *) [Standard::Metaclass] class Property specializes ConnectableElement, DeploymentTarget, StructuralFeature, TemplateableElement (* If isDerived is true, the value of the attribute is derived from information elsewhere. *) (* Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information. *) public attribute isDerived : Boolean := false; (* If isReadOnly is true, the attribute may not be written to after initialization. *) (* If true, the attribute may only be read, and not written. *) public attribute isReadOnly : Boolean := false; (* Specifies whether the property is derived as the union of all of the properties that are constrained to subset it. *) public attribute isDerivedUnion : Boolean := false; (* Specifies a String that represents a value to be used when no argument is supplied for the Property. *) (* A String that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=true,annotations=[])] public attribute default : String; (* Specifies the kind of aggregation that applies to the Property. *) public attribute aggregation : AggregationKind := ; (* If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute. *) (* This is a derived value, indicating whether the aggregation of the Property is composite or not. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute isComposite : Boolean := false; (* References the Class that owns the Property. *) public attribute class : Class; (* References the properties that are redefined by this property. *) public attribute redefinedProperty : Property[0, *]; (* References the owning association of this property, if any. *) public attribute owningAssociation : Association; (* The DataType that owns this Property. *) public attribute datatype : DataType; (* A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated. *) public attribute defaultValue : ValueSpecification; (* In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute opposite : Property; (* References the properties of which this property is constrained to be a subset. *) public attribute subsettedProperty : Property[0, *]; (* References the association of which this property is a member, if any. *) public attribute association : Association; (* An optional list of ordered qualifier attributes for the end. If the list is empty, then the Association is not qualified. *) public attribute qualifier : Property[0, *]; (* Designates the optional association end that owns a qualifier attribute. *) public attribute associationEnd : Property; [Ecore::EOperation(annotations=[])] protected operation getDefault() : String; [Ecore::EOperation(annotations=[])] protected operation isSetDefault() : Boolean; [Ecore::EOperation(annotations=[])] protected operation setDefault(in newDefault : String); [Ecore::EOperation(annotations=[])] protected operation setIsComposite(in newIsComposite : Boolean); [Ecore::EOperation(annotations=[])] protected operation setOpposite(in newOpposite : Property); [Ecore::EOperation(annotations=[])] protected operation unsetDefault(); (* Sets the navigability of this property as indicated. *) public operation setIsNavigable(in isNavigable : Boolean); (* Retrieves the other end of the (binary) association in which this property is a member end. *) public operation getOtherEnd() : Property; (* Sets the default value for this property to the specified Boolean value. *) public operation setBooleanDefaultValue(in value : Boolean); (* Sets the default value for this property to the specified integer value. *) public operation setIntegerDefaultValue(in value : Integer); (* Sets the default value for this property to the specified string value. *) public operation setStringDefaultValue(in value : String); (* Sets the default value for this property to the specified unlimited natural value. *) public operation setUnlimitedNaturalDefaultValue(in value : UnlimitedNatural); (* Sets the default value for this property to the null value. *) public operation setNullDefaultValue(); (* The query isAttribute() is true if the Property is defined as an attribute of some classifier. *) public operation isAttribute(in p : Property) : Boolean; [Ecore::EOperation(operationName="getOpposite",annotations=[])] (* If this property is owned by a class, associated with a binary association, and the other end of the association is also owned by a class, then opposite gives the other end. *) public operation opposite() : Property; (* The value of isComposite is true only if aggregation is composite. *) public operation isComposite() : Boolean; (* The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining property is consistent with a redefined property if the type of the redefining property conforms to the type of the redefined property, the multiplicity of the redefining property (if specified) is contained in the multiplicity of the redefined property, and the redefining property is derived if the redefined property is derived. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; (* The query subsettingContext() gives the context for subsetting a property. It consists, in the case of an attribute, of the corresponding classifier, and in the case of an association end, all of the classifiers at the other ends. *) public operation subsettingContext() : Type[0, *]; (* The query isNavigable() indicates whether it is possible to navigate across the property. *) public operation isNavigable() : Boolean; (* The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. In addition, for properties, the type must be conformant with the type of the specified parameterable element. *) public operation isCompatibleWith(in p : ParameterableElement) : Boolean; end; (* A value specification is the specification of a (possibly empty) set of instances, including both objects and data values. *) (* ValueSpecification specializes ParameterableElement to specify that a value specification can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template. *) [Standard::Metaclass] abstract class ValueSpecification specializes TypedElement, PackageableElement (* The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals. *) public operation isComputable() : Boolean; (* The query integerValue() gives a single Integer value when one can be computed. *) public operation integerValue() : Integer; (* The query booleanValue() gives a single Boolean value when one can be computed. *) public operation booleanValue() : Boolean; (* The query stringValue() gives a single String value when one can be computed. *) public operation stringValue() : String; (* The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed. *) public operation unlimitedValue() : UnlimitedNatural; (* The query isNull() returns true when it can be computed that the value is null. *) public operation isNull() : Boolean; (* The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. In addition, for ValueSpecification, the type must be conformant with the type of the specified parameterable element. *) public operation isCompatibleWith(in p : ParameterableElement) : Boolean; end; (* An operation is a behavioral feature of a classifier that specifies the name, type, parameters, and constraints for invoking an associated behavior. *) (* An operation may invoke both the execution of method behaviors as well as other behavioral responses. *) (* Operation specializes TemplateableElement in order to support specification of template operations and bound operations. Operation specializes ParameterableElement to specify that an operation can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template. *) [Standard::Metaclass] class Operation specializes BehavioralFeature, ParameterableElement, TemplateableElement (* Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false). *) public attribute isQuery : Boolean := false; (* This information is derived from the return result for this Operation. *) (* Specifies whether the return parameter is ordered or not, if present. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute isOrdered : Boolean := false; (* This information is derived from the return result for this Operation. *) (* Specifies whether the return parameter is unique or not, if present. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute isUnique : Boolean := true; (* This information is derived from the return result for this Operation. *) (* Specifies the lower multiplicity of the return parameter, if present. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute lower : Integer := 1; (* This information is derived from the return result for this Operation. *) (* Specifies the upper multiplicity of the return parameter, if present. *) [Ecore::EAttribute(isID=false,isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute upper : UnlimitedNatural := ; (* The class that owns the operation. *) public attribute class : Class; (* An optional set of Constraints on the state of the system when the Operation is invoked. *) public attribute precondition : Constraint[0, *]; (* An optional set of Constraints specifying the state of the system when the Operation is completed. *) public attribute postcondition : Constraint[0, *]; (* References the Operations that are redefined by this Operation. *) public attribute redefinedOperation : Operation[0, *]; (* The DataType that owns this Operation. *) public attribute datatype : DataType; (* An optional Constraint on the result values of an invocation of this Operation. *) public attribute bodyCondition : Constraint; (* This information is derived from the return result for this Operation. *) (* Specifies the return result of the operation, if present. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute type : Type; (* Specifies the ordered set of formal parameters of this BehavioralFeature. *) (* Specifies the parameters owned by this Operation. *) public attribute ownedParameter : Parameter[0, *]; (* References the Types representing exceptions that may be raised during an invocation of this operation. *) public attribute raisedException : Type[0, *]; (* The Interface that owns this Operation. *) public attribute interface : Interface; (* The template parameter that exposes this element as a formal parameter. *) public attribute templateParameter : OperationTemplateParameter; [Ecore::EOperation(annotations=[])] protected operation getLower() : Integer; [Ecore::EOperation(annotations=[])] protected operation getUpper() : UnlimitedNatural; [Ecore::EOperation(annotations=[])] protected operation setIsOrdered(in newIsOrdered : Boolean); [Ecore::EOperation(annotations=[])] protected operation setIsUnique(in newIsUnique : Boolean); [Ecore::EOperation(annotations=[])] protected operation setLower(in newLower : Integer); [Ecore::EOperation(annotations=[])] protected operation setType(in newType : Type); [Ecore::EOperation(annotations=[])] protected operation setUpper(in newUpper : UnlimitedNatural); (* Retrieves the (only) return result parameter for this operation. *) public operation getReturnResult() : Parameter; (* If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false. *) public operation isOrdered() : Boolean; (* If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true. *) public operation isUnique() : Boolean; [Ecore::EOperation(operationName="lowerBound",annotations=[])] (* If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower is not defined. *) public operation lower() : Integer; [Ecore::EOperation(operationName="upperBound",annotations=[])] (* If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper is not defined. *) public operation upper() : UnlimitedNatural; [Ecore::EOperation(operationName="getType",annotations=[])] (* If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type is not defined. *) public operation type() : Type; (* The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'. *) (* A redefining operation is consistent with a redefined operation if it has the same number of owned parameters, and the type of each owned parameter conforms to the type of the corresponding redefined parameter. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; (* The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set *) public operation returnResult() : Parameter[0, *]; end; (* An operation template parameter exposes an operation as a formal parameter for a template. *) [Standard::Metaclass] class OperationTemplateParameter specializes TemplateParameter (* The operation for this template parameter. *) public attribute parameteredElement : Operation; end; (* A packageable element indicates a named element that may be owned directly by a package. *) (* Packageable elements are able to serve as a template parameter. *) [Standard::Metaclass] abstract class PackageableElement specializes NamedElement, ParameterableElement (* Indicates that packageable elements must always have a visibility, i.e., visibility is not optional. *) public attribute visibility : VisibilityKind := ; end; (* A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers. *) (* A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier. *) (* A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case. *) (* Classifier is defined to be a kind of templateable element so that a classifier can be parameterized. It is also defined to be a kind of parameterable element so that a classifier can be a formal template parameter. *) [Standard::Metaclass] abstract class Classifier specializes RedefinableElement, Type, TemplateableElement, Namespace (* If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships. *) public attribute isAbstract : Boolean := false; (* Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy. *) public attribute generalization : Generalization[0, *]; (* Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features. *) (* Specifies each feature defined in the classifier. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant feature : Feature[0, *]; (* Specifies all elements inherited by this classifier from the general classifiers. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant inheritedMember : NamedElement[0, *]; (* References the Classifiers that are redefined by this Classifier. *) public attribute redefinedClassifier : Classifier[0, *]; (* References the general classifier in the Generalization relationship. *) (* Specifies the general Classifiers for this Classifier. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute general : Classifier[0, *]; (* References the substitutions that are owned by this Classifier. *) public attribute substitution : Substitution[0, *]; (* Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant attribute : Property[0, *]; (* References a collaboration use which indicates the collaboration that represents this classifier. *) public attribute representation : CollaborationUse; (* References the collaboration uses owned by the classifier. *) public attribute collaborationUse : CollaborationUse[0, *]; (* References the use cases owned by this classifier. *) public attribute ownedUseCase : UseCase[0, *]; (* The set of use cases for which this Classifier is the subject. *) public attribute useCase : UseCase[0, *]; (* Designates the GeneralizationSet of which the associated Classifier is a power type. *) public attribute powertypeExtent : GeneralizationSet[0, *]; (* The optional template signature specifying the formal template parameters. *) public attribute ownedTemplateSignature : RedefinableTemplateSignature; (* The template parameter that exposes this element as a formal parameter. *) public attribute templateParameter : ClassifierTemplateParameter; (* Retrieves all the attributes of this classifier, including those inherited from its parents. *) public operation getAllAttributes() : Property[0, *]; (* Retrieves the operations of this classifier. *) public operation getOperations() : Operation[0, *]; (* Retrieves all the operations of this classifier, including those inherited from its parents. *) public operation getAllOperations() : Operation[0, *]; (* Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier. *) public operation getOperation(in name : String, in parameterNames : String[0, *], in parameterTypes : Type[0, *]) : Operation; (* Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated. *) public operation getOperation(in name : String, in parameterNames : String[0, *], in parameterTypes : Type[0, *], in ignoreCase : Boolean) : Operation; (* Retrieves the interfaces on which this classifier has a usage dependency. *) public operation getUsedInterfaces() : Interface[0, *]; (* Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency. *) public operation getAllUsedInterfaces() : Interface[0, *]; [Ecore::EOperation(operationName="getGenerals",annotations=[])] (* The general classifiers are the classifiers referenced by the generalization relationships. *) public operation general() : Classifier[0, *]; [Ecore::EOperation(operationName="getInheritedMembers",annotations=[])] (* The inheritedMember association is derived by inheriting the inheritable members of the parents. *) public operation inheritedMember() : NamedElement[0, *]; (* The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature. *) public operation allFeatures() : Feature[0, *]; (* The query parents() gives all of the immediate ancestors of a generalized Classifier. *) public operation parents() : Classifier[0, *]; (* The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply. *) public operation inheritableMembers(in c : Classifier) : NamedElement[0, *]; (* The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent. *) public operation hasVisibilityOf(in n : NamedElement) : Boolean; (* The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations. *) public operation conformsTo(in other : Classifier) : Boolean; (* The inherit operation is overridden to exclude redefined properties. *) (* The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition. *) public operation inherit(in inhs : NamedElement[0, *]) : NamedElement[0, *]; (* The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints. *) public operation maySpecializeType(in c : Classifier) : Boolean; (* The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier. *) public operation allParents() : Classifier[0, *]; (* The query isTemplate() returns whether this templateable element is actually a template. *) public operation isTemplate() : Boolean; end; (* A classifier template parameter exposes a classifier as a formal template parameter. *) [Standard::Metaclass] class ClassifierTemplateParameter specializes TemplateParameter (* Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter. *) public attribute allowSubstitutable : Boolean := true; (* The parameterable classifier for this template parameter. *) public attribute parameteredElement : Classifier; (* The classifier that is used by default if no argument is provided during template binding. If this property is empty, then there is no default. *) public attribute defaultClassifier : Classifier; (* The classifier that constrains the argument that can be used for the parameter. If the allowSubstitutable attribute is true, then any classifier that is compatible with this constraining classifier can be substituted, otherwise it must be either this classifier or one of its subclasses. If this property is empty, there are no constraints on the classifier that can be used as an argument. *) public attribute constrainingClassifier : Classifier; end; (* A redefinable template signature supports the addition of formal template parameters in a specialization of a template classifier. *) [Standard::Metaclass] class RedefinableTemplateSignature specializes RedefinableElement, TemplateSignature (* The classifier that owns this template signature. *) public attribute classifier : Classifier; (* The template signature that is extended by this template signature. *) public attribute extendedSignature : RedefinableTemplateSignature[0, *]; (* The formal template parameters of the extendedSignature. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant inheritedParameter : TemplateParameter[0, *]; [Ecore::EOperation(annotations=[])] protected operation getInheritedParameters() : TemplateParameter[0, *]; (* The query isConsistentWith() specifies, for any two RedefinableTemplateSignatures in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining template signature is always consistent with a redefined template signature, since redefinition only adds new formal parameters. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; end; (* A connectable element template parameter exposes a connectable element as a formal parameter for a template. *) [Standard::Metaclass] class ConnectableElementTemplateParameter specializes TemplateParameter (* The ConnectableElement for this template parameter. *) public attribute parameteredElement : ConnectableElement; end; (* A package is used to group elements, and provides a namespace for the grouped elements. *) (* A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles. *) (* Package specializes TemplateableElement and PackageableElement specializes ParameterableElement to specify that a package can be used as a template and a PackageableElement as a template parameter. *) [Standard::Metaclass] class Package specializes PackageableElement, Namespace, TemplateableElement (* References the PackageMerges that are owned by this Package. *) public attribute packageMerge : PackageMerge[0, *]; (* Specifies the packageable elements that are owned by this Package. *) public attribute packagedElement : PackageableElement[0, *]; (* References the packaged elements that are Types. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute ownedType : Type[0, *]; (* References the packaged elements that are Packages. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute nestedPackage : Package[0, *]; (* References the Package that owns this Package. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public attribute nestingPackage : Package; (* References the ProfileApplications that indicate which profiles have been applied to the Package. *) public attribute profileApplication : ProfileApplication[0, *]; (* Creates a(n) (abstract) class with the specified name as an owned type of this package. *) public operation createOwnedClass(in name : String, in isAbstract : Boolean) : Class; (* Creates a enumeration with the specified name as an owned type of this package. *) public operation createOwnedEnumeration(in name : String) : Enumeration; (* Creates a primitive type with the specified name as an owned type of this package. *) public operation createOwnedPrimitiveType(in name : String) : PrimitiveType; (* Creates an interface with the specified name as an owned type of this package. *) public operation createOwnedInterface(in name : String) : Interface; (* Determines whether the specified profile is applied to this package. *) public operation isProfileApplied(in profile : Profile) : Boolean; (* Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a "best effort" basis (matching classifiers and structural features by name). *) public operation applyProfile(in profile : Profile) : EObject[0, *]; (* Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy. *) public operation unapplyProfile(in profile : Profile) : EObject[0, *]; (* Retrieves the profiles that are applied to this package. *) public operation getAppliedProfiles() : Profile[0, *]; (* Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s). *) public operation getAllAppliedProfiles() : Profile[0, *]; (* Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied. *) public operation getAppliedProfile(in qualifiedName : String) : Profile; (* Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied. *) public operation getAppliedProfile(in qualifiedName : String, in recurse : Boolean) : Profile; (* Retrieves all the profile applications for this package, including profile applications for its nesting package(s). *) public operation getAllProfileApplications() : ProfileApplication[0, *]; (* Retrieves the application of the specified profile to this package, or null if no such profile is applied. *) public operation getProfileApplication(in profile : Profile) : ProfileApplication; (* Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied. *) public operation getProfileApplication(in profile : Profile, in recurse : Boolean) : ProfileApplication; (* Determines whether this package is a model library. *) public operation isModelLibrary() : Boolean; (* The query mustBeOwned() indicates whether elements of this type must have an owner. *) public operation mustBeOwned() : Boolean; (* The query visibleMembers() defines which members of a Package can be accessed outside it. *) public operation visibleMembers() : PackageableElement[0, *]; (* The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible. *) public operation makesVisible(in el : NamedElement) : Boolean; end; association A_parameter_templateSignature (* The ordered set of all formal template parameters for this template signature. *) role TemplateSignature.parameter; role unnamed : TemplateSignature[0, *]; end; association A_ownedParameter_signature (* The formal template parameters that are owned by this template signature. *) role TemplateSignature.ownedParameter; (* The template signature that owns this template parameter. *) role TemplateParameter.signature; end; composition A_boundElement_templateBinding (* The element that is bound by this binding. *) role TemplateBinding.boundElement; (* The optional bindings from this element to templates. *) role TemplateableElement.templateBinding; end; association A_formal_templateParameterSubstitution (* The formal template parameter that is associated with this substitution. *) role TemplateParameterSubstitution.formal; role unnamed : TemplateParameterSubstitution[0, *]; end; association A_signature_templateBinding (* The template signature for the template that is the target of the binding. *) role TemplateBinding.signature; role unnamed : TemplateBinding[0, *]; end; association A_parameterSubstitution_templateBinding (* The parameter substitutions owned by this template binding. *) role TemplateBinding.parameterSubstitution; (* The optional bindings from this element to templates. *) role TemplateParameterSubstitution.templateBinding; end; association A_actual_templateParameterSubstitution (* The elements that are the actual parameters for this substitution. *) role TemplateParameterSubstitution.actual; role unnamed : TemplateParameterSubstitution[0, *]; end; association A_parameteredElement_templateParameter (* The element exposed by this template parameter. *) role TemplateParameter.parameteredElement; (* The template parameter that exposes this element as a formal parameter. *) role ParameterableElement.templateParameter; end; association A_subExpression_owningExpression (* The StringExpressions that constitute this StringExpression. *) role StringExpression.subExpression; (* The string expression of which this expression is a substring. *) role StringExpression.owningExpression; end; association A_ownedTemplateSignature_template (* The optional template signature specifying the formal template parameters. *) role TemplateableElement.ownedTemplateSignature; (* The element that owns this template signature. *) role TemplateSignature.template; end; association A_ownedParameteredElement_owningTemplateParameter (* The element that is owned by this template parameter. *) role TemplateParameter.ownedParameteredElement; (* The formal template parameter that owns this element. *) role ParameterableElement.owningTemplateParameter; end; association A_default_templateParameter (* The element that is the default for this formal template parameter. *) role TemplateParameter.default; role unnamed : TemplateParameter[0, *]; end; association A_ownedDefault_templateParameter (* The element that is owned by this template parameter for the purpose of providing a default. *) role TemplateParameter.ownedDefault; role unnamed : TemplateParameter; end; association A_ownedActual_templateParameterSubstitution (* The actual parameters that are owned by this substitution. *) role TemplateParameterSubstitution.ownedActual; role unnamed : TemplateParameterSubstitution; end; association A_ownedTemplateSignature_classifier (* The optional template signature specifying the formal template parameters. *) role Classifier.ownedTemplateSignature; (* The classifier that owns this template signature. *) role RedefinableTemplateSignature.classifier; end; association A_extendedSignature_redefinableTemplateSignature (* The template signature that is extended by this template signature. *) role RedefinableTemplateSignature.extendedSignature; role unnamed : RedefinableTemplateSignature[0, *]; end; association A_inheritedParameter_redefinableTemplateSignature (* The formal template parameters of the extendedSignature. *) role RedefinableTemplateSignature.inheritedParameter; role unnamed : RedefinableTemplateSignature[0, *]; end; association A_templateParameter_parameteredElement (* The template parameter that exposes this element as a formal parameter. *) role Classifier.templateParameter; (* The parameterable classifier for this template parameter. *) role ClassifierTemplateParameter.parameteredElement; end; association A_nameExpression_namedElement (* The string expression used to define the name of this named element. *) role NamedElement.nameExpression; role unnamed : NamedElement; end; association A_templateParameter_parameteredElement (* The template parameter that exposes this element as a formal parameter. *) role Operation.templateParameter; (* The operation for this template parameter. *) role OperationTemplateParameter.parameteredElement; end; association A_templateParameter_parameteredElement (* The ConnectableElementTemplateParameter for this ConnectableElement parameter. *) role ConnectableElement.templateParameter; (* The ConnectableElement for this template parameter. *) role ConnectableElementTemplateParameter.parameteredElement; end; association A_defaultClassifier_classifierTemplateParameter (* The classifier that is used by default if no argument is provided during template binding. If this property is empty, then there is no default. *) role ClassifierTemplateParameter.defaultClassifier; role unnamed : ClassifierTemplateParameter; end; association A_constrainingClassifier_classifierTemplateParameter (* The classifier that constrains the argument that can be used for the parameter. If the allowSubstitutable attribute is true, then any classifier that is compatible with this constraining classifier can be substituted, otherwise it must be either this classifier or one of its subclasses. If this property is empty, there are no constraints on the classifier that can be used as an argument. *) role ClassifierTemplateParameter.constrainingClassifier; role unnamed : ClassifierTemplateParameter; end; (* ConnectableElement is an abstract metaclass representing a set of instances that play roles of a classifier. Connectable elements may be joined by attached connectors and specify configurations of linked instances to be created within an instance of the containing classifier. *) (* A connectable element may be exposed as a connectable element template parameter. *) [Standard::Metaclass] abstract class ConnectableElement specializes TypedElement, ParameterableElement (* The ConnectableElementTemplateParameter for this ConnectableElement parameter. *) public attribute templateParameter : ConnectableElementTemplateParameter; (* Denotes a connector that attaches to this connectable element. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=true,isUnsettable=false,annotations=[])] public attribute end : ConnectorEnd[0, *]; protected operation getEnds() : ConnectorEnd[0, *]; end; (* A connector end is an endpoint of a connector, which attaches the connector to a connectable element. Each connector end is part of one connector. *) [Standard::Metaclass] class ConnectorEnd specializes MultiplicityElement (* A derived association referencing the corresponding association end on the association which types the connector owing this connector end. This association is derived by selecting the association end at the same place in the ordering of association ends as this connector end. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant definingEnd : Property; (* Indicates the role of the internal structure of a classifier with the port to which the connector end is attached. *) public attribute partWithPort : Property; (* The connectable element attached at this connector end. When an instance of the containing classifier is created, a link may (depending on the multiplicities) be created to an instance of the classifier that types this connectable element. *) public attribute role : ConnectableElement; [Ecore::EOperation(annotations=[])] protected operation getDefiningEnd() : Property; end; association A_connectableElement_end (* Denotes a connector that attaches to this connectable element. *) role ConnectableElement.end; role : ConnectableElement[0, *]; end; association A_end_role (* The connectable element attached at this connector end. When an instance of the containing classifier is created, a link may (depending on the multiplicities) be created to an instance of the classifier that types this connectable element. *) role ConnectorEnd.role; role end : ConnectorEnd[0, *]; end; (* A vertex is an abstraction of a node in a state machine graph. In general, it can be the source or destination of any number of transitions. *) [Standard::Metaclass] abstract class Vertex specializes NamedElement (* The region that contains this vertex. *) public attribute container : Region; (* Specifies the transitions entering this vertex. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=true,isUnsettable=false,annotations=[])] public attribute incoming : Transition[0, *]; (* Specifies the transitions departing from this vertex. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=true,isUnsettable=false,annotations=[])] public attribute outgoing : Transition[0, *]; (* The operation containingStateMachine() returns the state machine in which this Vertex is defined *) public operation containingStateMachine() : StateMachine; protected operation getIncomings() : Transition[0, *]; protected operation getOutgoings() : Transition[0, *]; end; (* A transition is a directed relationship between a source vertex and a target vertex. It may be part of a compound transition, which takes the state machine from one state configuration to another, representing the complete response of the state machine to an occurrence of an event of a particular type. *) [Standard::Metaclass] class Transition specializes RedefinableElement, Namespace (* Indicates the precise type of the transition. *) public attribute kind : TransitionKind := ; (* Designates the region that owns this transition. *) public attribute container : Region; (* The transition that is redefined by this transition. *) public attribute redefinedTransition : Transition; (* A guard is a constraint that provides a fine-grained control over the firing of the transition. The guard is evaluated when an event occurrence is dispatched by the state machine. If the guard is true at that time, the transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed. *) public attribute guard : Constraint; (* References the classifier in which context this element may be redefined. *) [Ecore::EReference(isResolveProxies=true,keys=[],isTransient=true,isVolatile=false,isUnsettable=false,annotations=[])] public constant redefinitionContext : Classifier; (* Specifies an optional behavior to be performed when the transition fires. *) public attribute effect : Behavior; (* Specifies the triggers that may fire the transition. *) public attribute trigger : Trigger[0, *]; (* Designates the target vertex that is reached when the transition is taken. *) public attribute target : Vertex; (* Designates the originating vertex (state or pseudostate) of the transition. *) public attribute source : Vertex; (* The redefinition context of a transition is the nearest containing statemachine. *) public operation redefinitionContext() : Classifier; (* The query isConsistentWith() specifies that a redefining transition is consistent with a redefined transition provided that the redefining transition has the following relation to the redefined transition: A redefining transition redefines all properties of the corresponding redefined transition, except the source state and the trigger. *) public operation isConsistentWith(in redefinee : RedefinableElement) : Boolean; (* The query containingStateMachine() returns the state machine that contains the transition either directly or transitively. *) public operation containingStateMachine() : StateMachine; end; association A_incoming_target (* Designates the target vertex that is reached when the transition is taken. *) role Transition.target; role incoming : Transition[0, *]; end; association A_outgoing_source (* Designates the originating vertex (state or pseudostate) of the transition. *) role Transition.source; role outgoing : Transition[0, *]; end; association A_vertex_incoming (* Specifies the transitions entering this vertex. *) role Vertex.incoming; role : Vertex[0, *]; end; association A_vertex_outgoing (* Specifies the transitions departing from this vertex. *) role Vertex.outgoing; role : Vertex[0, *]; end; end.
