Boolean is an instance of PrimitiveType. In the metamodel, Boolean defines an enumeration that denotes a logical condition. Its enumeration literals are: . true - The Boolean condition is satisfied. . false - The Boolean condition is not satisfied. An instance of Integer is an element in the (infinite) set of integers (..2, -1, 0, 1, 2..). It is used for integer attributes and integer expressions in the metamodel. A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters. An instance of String defines a piece of text. The semantics of the string itself depends on its purpose, it can be a comment, computational language expression, OCL expression, etc. It is used for String attributes and String expressions in the metamodel. An unlimited natural is a primitive type representing unlimited natural values. An instance of UnlimitedNatural is an element in the (infinite) set of naturals (0, 1, 2..). The value of infinity is shown using an asterisk ('*'). An element is a constituent of a model. Description Element is an abstract metaclass with no superclass. It is used as the common superclass for all metaclasses in the infrastructure library. An element is a constituent of a model. As such, it has the capability of owning other elements. Description Element has a derived composition association to itself to support the general capability for elements to own other elements. The Elements owned by this element. The Elements owned by this element. An element can own comments. The comments for an Element add no semantics but may represent information useful to the reader of the model. The Comments owned by this element. A comment is a textual annotation that can be attached to a set of elements. A comment gives the ability to attach various remarks to elements. A comment carries no semantic force, but may contain information that is useful to a modeler. A comment may be owned by any element. A Comment adds no semantics to the annotated elements, but may represent information useful to the reader of the model. Specifies a string that is the comment. References the Element(s) being commented. The Comments owned by this element. References the Element(s) being commented. Relationship is an abstract concept that specifies some kind of relationship between elements. Specifies the elements related by the Relationship. A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements. Specifies the sources of the DirectedRelationship. Specifies the targets of the DirectedRelationship. Specifies the sources of the DirectedRelationship. Specifies the elements related by the Relationship. Specifies the targets of the DirectedRelationship. VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model. Semantics VisibilityKind is intended for use in the specification of visibility in conjunction with, for example, the Imports, Generalizations, Packages, and Classifiers packages. Detailed semantics are specified with those mechanisms. If the Visibility package is used without those packages, these literals will have different meanings, or no meanings. A public element is visible to all elements that can access the contents of the namespace that owns it. A private element is only visible inside the namespace that owns it. A protected element is visible to elements that have a generalization relationship to the namespace that owns it. A package element is owned by a namespace that is not a package, and is visible to elements that are in the same pack-age as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing pack-age (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible. In circumstances where a named element ends up with multiple visibilities, for example by being imported multiple times, public visibility overrides private visibility, i.e., if an element is imported twice into the same namespace, once using public import and once using private import, it will be public. A namespace is a named element that can own other named elements. Each named element may be owned by at most one namespace. A namespace provides a means for identifying named elements by name. Named elements can be identified by name in a namespace either by being directly owned by the namespace or by being introduced into the namespace by other means (e.g., importing or inheriting). Namespace is an abstract metaclass. A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance. A collection of NamedElements owned by the Namespace. References the ElementImports owned by the Namespace. References the ImportableElements that are members of this Namespace as a result of either ElementImports. An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier. Description An element import is defined as a directed relationship between an importing namespace and a packageable element. The name of the packageable element or its alias is to be added to the namespace of the importing namespace. It is also possible to control whether the imported element can be further imported. Semantics An element import adds the name of a packageable element from a package to the importing namespace. It works by reference, which means that it is not possible to add features to the element import itself, but it is possible to modify the referenced element in the namespace from which it was imported. An element import is used to selectively import individual elements without relying on a package import. In case of a nameclash with an outer name (an element that is defined in an enclosing namespace is available using its unqualified name in enclosed namespaces) in the importing namespace, the outer name is hidden by an element import, and the unqualified name refers to the imported element. The outer name can be accessed using its qualified name. If more than one element with the same name would be imported to a namespace as a consequence of element imports or package imports, the elements are not added to the importing namespace and the names of those elements must be qualified in order to be used in that namespace. If the name of an imported element is the same as the name of an element owned by the importing namespace, that element is not added to the importing namespace and the name of that element must be qualified in order to be used. If the name of an imported element is the same as the name of an element owned by the importing namespace, the name of the imported element must be qualified in order to be used and is not added to the importing namespace. An imported element can be further imported by other namespaces using either element or package imports. The visibility of the ElementImport may be either the same or more restricted than that of the imported element. Specifies the visibility of the imported ImportableElement within the importing Namespace. 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; default value is public. Specifies the name that should be added to the namespace of the importing Package in lieu of the name of the imported PackagableElement. The aliased name must not clash with any other member name in the importing Package. By default, no alias is used. Specifies the PackageableElement whose name is to be added to a Namespace. A named element represents elements with names. Elements with names are instances of NamedElement. The name for a named element is optional. If specified, then any valid string, including the empty string, may be used. The name of the NamedElement. 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. This is a derived attribute. Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility. A ImportableElement indicates a named element that is imported by a Namespace. Specifies the PackageableElement whose name is to be added to a Namespace. References the ImportableElements that are members of this Namespace as a result of either ElementImports. References the ElementImports owned by the Namespace. A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance. A collection of NamedElements owned by the Namespace. A packageable element indicates a named element that may be owned directly by a package. A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces. Description A package import is defined as a directed relationship that identifies a package whose members are to be imported by a namespace. Semantics A package import is a relationship between an importing namespace and a package, indicating that the importing namespace adds the names of the members of the package to its own namespace. Conceptually, a package import is equivalent to having an element import to each individual member of the imported namespace, unless there is already a separately-defined element import. 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; default value is public. A package is a container for types and other packages. Packages provide a way of grouping types and packages together, which can be useful for understanding and managing a model. A package cannot contain itself. References the owned members that are Packages. Specifies the packageable elements that are owned by this Package. References the owned members that are Packages. Specifies the packageable elements that are owned by this Package. A Type is a NamedElement that groups individuals according to some commonality among them, which might be characteristics they can have or constraints they obey. Types can cover any kind of entity, physical or computational, static or dynamic. For example, the type Person groups individual people, like Mary and John. The type declares commonalities among people, for example, they can have names and gender, or obey constraints, such as being genetically related to exactly two other people. A typed element is a kind of named element that represents elements with types. Elements with types are instances of TypedElement. A typed element may optionally have no type. The type of a typed element constrains the set of values that the typed element may refer to. The type of the TypedElement. The type of the TypedElement. 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. Description A MultiplicityElement is an abstract metaclass which includes optional attributes for defining the bounds of a multiplicity. A MultiplicityElement also includes specifications of whether the values in an instantiation of this element must be unique or ordered. Semantics A multiplicity defines a set of integers that define valid cardinalities. Specifically, cardinality C is valid for multiplicity M if M.includesCardinality(C). A multiplicity is specified as an interval of integers starting with the lower bound and ending with the (possibly infinite) upper bound. If a MultiplicityElement specifies a multivalued multiplicity, then an instantiation of this element has a set of values. The multiplicity is a constraint on the number of values that may validly occur in that set. If the MultiplicityElement is specified as ordered (i.e., isOrdered is true), then the set of values in an instantiation of this element is ordered. This ordering implies that there is a mapping from positive integers to the elements of the set of values. If a MultiplicityElement is not multivalued, then the value for isOrdered has no semantic effect. If the MultiplicityElement is specified as unordered (i.e., isOrdered is false), then no assumptions can be made about the order of the values in an instantiation of this element. If the MultiplicityElement is specified as unique (i.e., isUnique is true), then the set of values in an instantiation of this element must be unique. If a MultiplicityElement is not multivalued, then the value for isUnique has no semantic effect. For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered. Default is false. For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique. Default is true. Specifies the lower bound of the multiplicity interval. Default is one. Specifies the upper bound of the multiplicity interval. Default is one. MultiplicityElement is specialized to support the use of value specifications to define each bound of the multiplicity. Specifies the lower bound of the multiplicity interval, if it is expressed as an integer. This is a redefinition of the corresponding property from Multiplicities. Specifies the upper bound of the multiplicity interval, if it is expressed as an unlimited natural. This is a redefinition of the corresponding property from Multiplicities. The specification of the upper bound for this multiplicity. The specification of the lower bound for this multiplicity. The specification of the lower bound for this multiplicity. The specification of the upper bound for this multiplicity. An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context. Description An opaque expression contains language-specific text strings used to describe a value or values, and an optional specification of the languages. One predefined language for specifying expressions is OCL. Natural language or programming languages may also be used. The text of the expression, possibly in multiple languages. Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the language. If languages are unspecified, it might be implicit from the expression body or the context. Languages are matched to body strings by order. 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 that are value specifications. The symbol associated with the node in the expression tree. Specifies a sequence of operands. A value specification is the specification of a (possibly empty) set of instances, including both objects and data values. Description ValueSpecification is an abstract metaclass used to identify a value or values in a model. It may reference an instance or it may be an expression denoting an instance or instances when evaluated. Specifies a sequence of operands. The guard s of the next succession s of the Exclusive Split must be Fact Conditions that have their evaluated expression be the same as the splitting expression of the Exclusive Split. self.next succession ->guard ->evaluated expression in self. splitting expression OCL A literal unlimited natural is a specification of an unlimited natural number. Description A literal unlimited natural contains an UnlimitedNatural-valued attribute. Semantics A LiteralUnlimitedNatural specifies a constant UnlimitedNatural value. Notation A LiteralUnlimitedNatural is shown either as a sequence of digits or as an asterisk (*), where the asterisk denotes unlimited (and not infinity). A literal null specifies the lack of a value. Description A literal null is used to represent null (i.e., the absence of a value). Semantics LiteralNull is intended to be used to explicitly model the lack of a value. Notation Notation for LiteralNull varies depending on where it is used. It often appears as the word "null". Other notations are described for specific uses. A literal integer is a specification of an integer value. Description A literal integer contains an Integer-valued attribute. Semantics A LiteralInteger specifies a constant Integer value. Notation A LiteralInteger is typically shown as a sequence of digits. A literal string is a specification of a string value. Description A literal string contains a String-valued attribute. Semantics A LiteralString specifies a constant String value. Notation A LiteralString is shown as a sequence of characters within double quotes. The character set used is unspecified. A literal Boolean is a specification of a Boolean value. Description A literal Boolean contains a Boolean-valued attribute. Semantics A LiteralBoolean specifies a constant Boolean value. Notation A LiteralBoolean is shown as either the word "true" or the word "false", corresponding to its value. A literal specification identifies a literal constant being modeled. Description A literal specification is an abstract specialization of ValueSpecification that identifies a literal constant being modeled. A namespace is a named element that can own other named elements. Each named element may be owned by at most one namespace. A namespace provides a means for identifying named elements by name. Named elements can be identified by name in a namespace either by being directly owned by the namespace or by being introduced into the namespace by other means (e.g., importing or inheriting). Namespace is an abstract metaclass. Specifies a set of Constraints owned by this Namespace. 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. Description Constraint contains a ValueSpecification that specifies additional semantics for one or more elements. Certain kinds of constraints (such as an association "xor" constraint) are predefined in UML, others may be user-defined. A user-defined Constraint is described using a specified language, whose syntax and interpretation is a tool responsibility. One predefined language for writing constraints is OCL. In some situations, a programming language such as Java may be appropriate for expressing a constraint. In other situations natural language may be used. Constraint is a condition (a Boolean expression) that restricts the extension of the associated element beyond what is imposed by the other language constructs applied to the element. Constraint contains an optional name, although they are commonly unnamed. Semantics A Constraint represents additional semantic information attached to the constrained elements. A constraint is an assertion that indicates a restriction that must be satisfied by a correct design of the system. The constrained elements are those elements required to evaluate the constraint specification. In addition, the context of the Constraint may be accessed, and may be used as the namespace for interpreting names used in the specification. For example, in OCL "self" is used to refer to the context element. Constraints are often expressed as a text string in some language. If a formal language such as OCL is used, then tools may be able to verify some aspects of the constraints. In general there are many possible kinds of owners for a Constraint. The only restriction is that the owning element must have access to the constrainedElements. The owner of the Constraint will determine when the constraint specification is evaluated. For example, this allows an Operation to specify if a Constraint represents a precondition or a postcondition. The ordered set of Elements referenced by this Constraint. A condition that must be true when evaluated in order for the constraint to be satisfied. Specifies a set of Constraints owned by this Namespace. A condition that must be true when evaluated in order for the constraint to be satisfied. The ordered set of Elements referenced by this Constraint. A classifier is a classification of instances - it describes a set of instances that have features in common. Description A classifier is a namespace whose members can include features. Classifier is an abstract metaclass. Specifies each feature defined in the classifier. Description A feature declares a behavioral or structural characteristic of instances of classifiers. Feature is an abstract metaclass. Semantics A Feature represents some characteristic for its featuring classifiers. A Feature can be a feature of multiple classifiers. The Classifiers that have this Feature as a feature. A classifier can specify a generalization hierarchy by referencing its general classifiers. 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). Default value is false. Specifies all elements inherited by this classifier from the general classifiers. Specifies the more general classifiers in the generalization hierarchy for this Classifier Specifies all elements inherited by this classifier from the general classifiers. Specifies the more general classifiers in the generalization hierarchy for this Classifier A generalization between two types means each instance of the specific type is also an instance of the general type. Any specification applying to instances of the general type also apply to instances of the specific type. References the general classifier in the Generalization relationship. A classifier is a type and can own generalizations, thereby making it possible to define generalization relationships to other classifiers. Semantics A Classifier may participate in generalization relationships with other Classifiers. An instance of a specific Classifier is also an (indirect) instance of the general Classifier. The specific semantics of how generalization affects each concrete subtype of Classifier varies. A Classifier defines a type. Type conformance between generalizable Classifiers is defined so that a Classifier conforms to itself and to all of its ancestors in the generalization hierarchy. generalization specifies the more general super-type of the type Specifies the general Classifiers for this Classifier. generalization specifies the more general super-type of the type References the general classifier in the Generalization relationship. Specifies the general Classifiers for this Classifier. A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier. Description A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier. Structural feature is an abstract metaclass. Semantics A structural feature specifies that instances of the featuring classifier have a slot whose value or values are of a specified type. States whether the feature’s value may be modified by a client. Default is false. A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances. Description A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances. BehavioralFeature is an abstract metaclass specializing Feature and Namespace. Kinds of behavioral aspects are modeled by subclasses of BehavioralFeature. Semantics The list of parameters describes the order and type of arguments that can be given when the BehavioralFeature is invoked. Specifies the parameters of the BehavioralFeature. A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature. Semantics A parameter specifies arguments that are passed into or out of an invocation of a behavioral element like an operation. A parameter's type restricts what values can be passed. A parameter may be given a name, which then identifies the parameter uniquely within the parameters of the same behavioral feature. If it is unnamed, it is distinguished only by its position in the ordered list of parameters. Specifies the parameters of the BehavioralFeature. A property is a structural feature of a classifier that characterizes instances of the classifier. Description 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. Property is indirectly a subclass of TypedElement. The range of valid values represented by the property can be controlled by setting the property's type. A String that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated. This is a derived value, indicating whether the aggregation of the Property is composite or not. Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information. The default value is false. Specifies whether the property is derived as the union of all of the properties that are constrained to subset it. The default value is false. References the properties of which this property is constrained to be a subset. A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated. A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated. References the properties of which this property is constrained to be a subset. A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature. Description A slot is owned by an instance specification. It specifies the value or values for its defining feature, which must be a structural feature of a classifier of the instance specification owning the slot. Semantics A slot relates an instance specification, a structural feature, and a value or values. It represents that an entity modeled by the instance specification has a structural feature with the specified value or values. The values in a slot must conform to the defining feature of the slot (in type, multiplicity, etc.). The value or values corresponding to the defining feature for the owning instance specification. This is an ordered association. The structural feature that specifies the values that may be held by the slot. An instance specification is a model element that represents an instance in a modeled system. Description An instance specification specifies existence of an entity in a modeled system and completely or partially describes the entity. The description includes: Classification of the entity by one or more classifiers of which the entity is an instance. If the only classifier specified is abstract, then the instance specification only partially describes the entity. The kind of instance, based on its classifier or classifiers. For example, an instance specification whose classifier is a class describes an object of that class, while an instance specification whose classifier is an association describes a link of that association. Specification of values of structural features of the entity. Not all structural features of all classifiers of the instance specification need be represented by slots, in which case the instance specification is a partial description. Specification of how to compute, derive or construct the instance (optional) Semantics An instance specification may specify the existence of an entity in a modeled system. An instance specification may provide an illustration or example of a possible entity in a modeled system. An instance specification describes the entity. These details can be incomplete. The purpose of an instance specification is to show what is of interest about an entity in the modeled system. The entity conforms to the specification of each classifier of the instance specification, and has features with values indicated by each slot of the instance specification. Having no slot in an instance specification for some feature does not mean that the represented entity does not have the feature, but merely that the feature is not of interest in the model. An instance specification can represent an entity at a point in time (a snapshot). Changes to the entity can be modeled using multiple instance specifications, one for each snapshot. It is important to keep in mind that InstanceSpecification is a model element and should not be confused with the dynamic element that it is modeling. Therefore, one should not expect the dynamic semantics of InstanceSpecification model elements in a model repository to conform to the semantics of the dynamic elements that they represent. When used to provide an illustration or example of an entity in a modeled system, an InstanceSpecification class does not depict a precise run-time structure. Instead, it describes information about such structures. No conclusions can be drawn about the implementation detail of run-time structure. When used to specify the existence of an entity in a modeled system, an instance specification represents part of that system. Instance specifications can be modeled incompletely, required structural features can be omitted, and classifiers of an instance specification can be abstract, even though an actual entity would have a concrete classification. 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. A specification of how to compute, derive, or construct the instance. The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them. An instance value is a value specification that identifies an instance. The instance that is the specified value. The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them. The instance that is the specified value. A specification of how to compute, derive, or construct the instance. 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. The value or values corresponding to the defining feature for the owning instance specification. This is an ordered association. The structural feature that specifies the values that may be held by the slot. An enumeration defines a set of literals that can be used as its values. An enumeration defines a finite ordered set of values, such as {red, green, blue}. The values denoted by typed elements whose type is an enumeration must be taken from this set. The ordered set of literals for this Enumeration. DataType is an abstract class that acts as a common superclass for different kinds of data types. DataType is the abstract class that represents the general notion of being a data type (i.e., a type whose instances are identified only by their value). The Attributes owned by the DataType. This is an ordered collection. An enumeration literal is a value of an enumeration. A primitive type is a data type implemented by the underlying infrastructure and made available for modeling. The Attributes owned by the DataType. This is an ordered collection. The ordered set of literals for this Enumeration. 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. Description A redefinable element is a named element that can be redefined in the context of a generalization. RedefinableElement is an abstract metaclass. Semantics A RedefinableElement represents the general ability to be redefined in the context of a generalization relationship. The detailed semantics of redefinition varies for each specialization of RedefinableElement. A redefinable element is a specification concerning instances of a classifier that is one of the element’s redefinition contexts. For a classifier that specializes that more general classifier (directly or indirectly), another element can redefine the element from the general classifier in order to augment, constrain, or override the specification as it applies more specifically to instances of the specializing classifier. A redefining element must be consistent with the element it redefines, but it can add specific constraints or other details that are particular to instances of the specializing redefinition context that do not contradict invariant constraints in the general context. A redefinable element may be redefined multiple times. Furthermore, one redefining element may redefine multiple inherited redefinable elements. Semantic Variation Points There are various degrees of compatibility between the redefined element and the redefining element, such as name compatibility (the redefining element has the same name as the redefined element), structural compatibility (the client visible properties of the redefined element are also properties of the redefining element), or behavioral compatibility (the redefining element is substitutable for the redefined element). Any kind of compatibility involves a constraint on redefinitions. The particular constraint chosen is a semantic variation point. References the contexts that this element may be redefined from. The redefinable element that is being redefined by this element. The redefinable element that is being redefined by this element. References the contexts that this element may be redefined from. A Part is a Connectable Element that is an element of the structure of a Composite. Directed Part Connection that the part is the source of Directed Part Connection that the Part is the target of A Composite is a Classifier which has an internal structure. It specifies the connections of individuals that are all related to the same other individual (M0). For example, a company type specifies the connections of departments within each individual company of that type (assuming it is modeled in a value chain manner, rather than just an organization chart). Likewise, an orchestration type specifies the sequence of steps in each individual occurrence of that orchestration. Connectable Element owned by the Composite Part Connection owned by the Composite Derivation that the Composite is a source of A Typed Part is a kind of Part that specifies that individuals playing the Part in the Composite must be of a certain kind (Type). For example, an individual playing the president part must be a person, and must play the president within a individual company . Typed Part is a Property for restricting the number of individuals that play the part. For example, a company might allow no more than five vice-presidents, but require a president, and a choreography might have an interaction that is optional. Type of the Typed Part Selector Specification used to specify the individual that plays the Typed Part Part Path that traverses the Typed Part in order to reach a part of its composite type. A Part Connection is a Feature of a composite used to connect its Connectable Elements. A Part Connection can connect any number of parts. For example, a business interaction can involve multiple companies. When a Part Connection is connecting Typed Part, its specifies links between M0 entities playing the typed parts. For example, the reporting connection between the president of a company and the CEO means the person playing the president in a particular company will report to the person playing the CEO in the same company. Likewise, the temporal connection between one step and another in a process means that in each occurrence of that process, there is an occurrence of one step that happens after the occurrence of another. Conditions may be applied to Part Connections to limit when they apply. For example, one step in a process may happen after another only when certain conditions are true as the process is executing. Connectable Element connected by a Part Connection Condition evaluated at runtime to determine if the Part Connection is enabled. A Directed Part Connection is a kind of Part Connection for only two parts, when it is convenient to have standard names referring to the parts on each end (source and target). Directed Part Connections are designed to facilitate traversal of Part Connections . Their source and target associations specify the top-level parts (not Part Paths) that are connected, as typically shown by the arrows in process diagrams. For example, when one step is after another in a process, the arrow between them is modeled as a directed connection, with the earlier step at the source part, and the later step at the target part. Part that is the source of the Directed Part Connection Part that is the target of the Directed Part Connection Connectable Element is the subject of relations between parts through Part Connection. Connectable Element is a capability shared by Part and Part Path. Individuals playing parts can have any relation to the whole, they are not necessarily "contained", "owned", or "part of" the whole. Connection connecting the Connectable Element to one or more other Connectable Elements. A Part Path connects to a Part of a nested Composite. An instance of Part Path is introduced for each traversed part to a target part . The purpose of Part Path is to provide access to parts in a nested composite structure. All models based on the composition model needs to have access to parts within parts, for example; . Data elements within data elements . Roles within roles . Protocols within protocols . Activities within activities Part Path and Part are generalized to Connectable Element, which are the is of Part Connection. This enables connections not requiring part paths to refer directly to parts, rather than to part paths with only one element. Typed Part being the source of the part path. This part is traversed by the part path in order to reach the target part. Connectable Element to which the part path is pointing at. leaf Part to which a part path chain is pointing at An Irreflexive Condition is a kind of Opaque Condition that restricts the connection to apply at M0 only to distinct M0 individuals playing the part (or playing the last part in the path). It applies only to connections between Typed Parts, or Part Paths with at least one Typed Part. A Part Replacement is used to specify the replacement or removal of Parts in derived to Composite of a Derivation. A Part Group is a kind of Connectable Element that collects other Connectable Elements together. A Part Groups can share Connectable Elements. The meaning of part groups is given in the specializations of the Composition Model, for example, in Behavior Model. Part that is enclosed in a Part Group. A Part can be enclosed in multiple Part Groups A Individual From Set is a kind of Selector Specification that provide a list of Individual as the potential Type of a Typed Part Individual member of a Individual From Set selector specification Individual instance A Selector Specification is a query mechanism used to specify the individuals playing a Typed Part The Parts of the derived to Composite are the same as the on derived from Composite, except for replaced or removed Parts, as specified by derivation trace , or added parts. Part Replacement owned by the Derivation Derived Composite Type of the Typed Part Connectable Element owned by the Composite Part Replacement owned by the Derivation Connectable Element to which the part path is pointing at. leaf Part to which a part path chain is pointing at Individual member of a Individual From Set selector specification Part that is enclosed in a Part Group. A Part can be enclosed in multiple Part Groups Condition evaluated at runtime to determine if the Part Connection is enabled. Selector Specification used to specify the individual that plays the Typed Part Part Connection owned by the Composite Derivation that the Composite is a source of Derived Composite [1] The traversed part must be a Typed Part which type is a Composite. [1] The target part must be a Part of the Composite that owns the target part [1] A Directed Part Connection must have exactly two Connectable Elements (target and source); no more. [1] The default values for lower and upper (from Abstraction:MultiplicityElement) are 0 and * respectively. context TypedPart::lower: Integer init: 0 context TypedPart::upper: UnlimitedInteger init: * OCL Enumeration specifying the different types of Compound Condition Opaque Statement is a concrete Statement that uses OpaqueExpression attributes (language and body) to store its expression as a string. Boolean ValueSpecification is a kind of ValueSpecification that specifies a boolean value. Statement is a Boolean ValueSpecification that does not constrain anything. Statements are used to integrate with rule models. An Opaque Condition is a Condition that can be expressed in free text. A Condition is a Boolean ValueSpecification that constrains some element in the models. Conditions are true if their descriptions hold in the current state of the world, possibly including executions, and false otherwise. Element being constrained by the Condition. A Fact Condition is a Condition that is true when the two ValueSpecifications to which they refer yield equal values, and false otherwise. ValueSpecification evaluated by the Fact Condition. ValueSpecification that represents the result that must be yielde by the evaluation of the evaluated expression for the Fact Condition to be true. A Compound Condition is a kind of Condition that is the combination of other Conditions. There are three kinds of Compound Condition:. . or : the Compound Condition is the result of one the combined condition . and: the Compound Condition is the result of all the combined condition . not: the Compound Condition is result of the negation of all the combined condition . Boolean operator used to combine conditions. Condition making up the Compound Condition ValueSpecification evaluated by the Fact Condition. Condition making up the Compound Condition ValueSpecification that represents the result that must be yielde by the evaluation of the evaluated expression for the Fact Condition to be true. [1] The type of a Boolean ValueSpecification must be a boolean. self.type = Boolean OCL A Happening is a Classifier for dynamic entities. A Course Event is a kind of Event that occurs as part of the lifecycle of a Course, such as Start Event, End Event. The Common Infrastructure provides a predefined library of Course Events. Event that can occur in the context of the Course A Happening Part is a kind of Course Part that is also a Typed Part where the type is a Happening. It is a stage or interval in a development or Course. Happening Parts are different from other Course Parts as they are the only one that have occurence trace at runtime. Happening that is the type of the Happening Part. condition previous succession (incoming) must satisfy for dynamic entities playing a part to start, conditions next succession (outgoing) must satisfy when dynamic entities playing a part come to an end. An Event Condition is a Condition for specifying that an Event must occur in the context of a particular Happening Over Time for the condition to hold. For instance, a condition can be on the eruption (instance of Event) of a particular volcano (instance of Happening Over Time). Happening Over Time where the conditioning event should occur Event that is the source of the Event Condition A Happening Over Time is a Happening for dynamic entities that are treated as extending over time and that are contexts for Events. Event that occurs in the context of the Happening Over Time A Immediate Succession is a kind of Succession that has the following execution semantic: successor immediately follows its predecessor A Gateway is a kind of Course Part representing potentially complex specifications of how dynamic individuals playing Happening Parts are ordered in time. The particular specifications are given in subtypes. At runtime, Gateways don't have any execution trace. Succession that enables the Gateway as its successor gateway . Succession that enables the Gateway as its predecessor gateway . A Fact Change Condition refers to general propositions becoming true or false due to changes in M0 facts. It is used to integrate with models of rules. Fact Change that, when it occurs, make the Fact Change Condition evaluate to true Statement that the Fact Change Condition is evaluating the change of. A Time Event specifies a point in time that is a source of interest. A timeExpression represents a time value. Clock that generates the Time Event A Cycle Event is a kind of Time Event that define the occurrence of a cycle in time. A Relative TimeDate Event is a kind of TimeDate Event that defines a change in time for a relative start point in time. Event which occurrence is the beginning of the Relative TimeDate Event Parallel Join is a Gateway indicating that the parts (in the sense of individuals) following it happen after the parts preceding them A TimeDate Event is a kind of Time Event that manifest a date or time change. A Fact Change is a kind of Event that manifests a change in the evaluation of a Statement. Exclusive Split is a Gateway indicating that exactly one of the part following it will occur after the part preceding it Succession enabled by default if no other next succession connected to the Exclusive Split has been enabled ValueSpecification that specifies the expression shared by the guards on the outgoing successions of the Exclusive Split .These guards must be Fact Conditions that reference this shared ValueSpecification as their evaluated expression . splitting expression owned by the Exclusive Split. A Succession is a Directed Part Connection that organizes Course Parts in series in the context of a Course. A Succession indicates that one Course Part "follows" another in time, and possibly establishes constraints on such followings. It can order the Event Part of its Happening Parts such as their Start or End. Succession allows any combination of Event Part to be connected. End -> Start Start -> Start Start -> Abort etc. A Succession doesn't need to have Happening Part on its ends, it can have untyped course parts also, such as Gateway, but it must have something on each end. For convenience, a Succession that does not specify source event part or target event part will have the same effect as a Succession where these are respectively the End and Start . Course Part that comes before another Course Part in a Succession. Course Part that comes after another Course Part in a Succession. Event Part of the successor Happening Part that is connected through the Succession. Event Part of the predecessor Happening Part that is connected through the Succession. Gateway that comes after another Course Part in a Succession Gateway that comes before another Course Part in a Succession. A Time Event Condition is a kind of Event Condition that is based on the occurrence of a Time Event. A Time Event Condition is specified by referring to a Clock. Time Event that is the source of the Time Event Condition Clock that is the Happening Over Time context producing the conditioning time event that is the source of the Time Event Condition An Exclusive Join is a Gateway indicating that the part following it will occur after each part that occurs preceding it. A Course Part is a kind of Connectable Element that defines a stage in a Course. It can be connected to Succession as a predecessor or successor element. Succession that enables the Course Part as its predecessor . Succession that enables the Course Part as its successor . A Course is an ordered Succession of Happening Parts A Course is a Composite that has connections representing that one part of the course "follows" another in time, and possibly establishes constraints on such followings (Succession). Course Part owned by the Course Event Part owned byt the Course Succession owned by the Course Events that can occur in the context of this Course. The set of these Events is derived from the Event Part owned by the Course. Gateway owned by the Course. A Clock is a kind of Happening Over Time that produces Time Events. Time Event that occurs in the context of a Clock An Event Part identifies Event (such as Start Event or End Event) for an individual Course. An Event Part is also a Happening Part, enabling it to be connected by Successions. Event that is the type of the Event Part. An Event is a Happening for dynamic entities occurring at a point in time. Happening Over Time where the Event can occur Parallel Split is a Gateway that indicates that the dynamic individuals playing parts following them happen after the dynamic individuals playing the part preceding them. Course Part owned by the Course Event Part of the predecessor Happening Part that is connected through the Succession. Time Event that is the source of the Time Event Condition Fact Change that, when it occurs, make the Fact Change Condition evaluate to true Event Part of the successor Happening Part that is connected through the Succession. Happening that is the type of the Happening Part. Event Part owned byt the Course splitting expression owned by the Exclusive Split. Event that is the source of the Event Condition Happening Over Time where the conditioning event should occur Gateway owned by the Course. A Clock is a kind of Happening Over Time that produces Time Events Statement that the Fact Change Condition is evaluating the change of. Event that is the type of the Event Part. Clock that is the Happening Over Time context producing the conditioning time event that is the source of the Time Event Condition Event which occurrence is the beginning of the Relative TimeDate Event Succession enabled by default if no other next succession connected to the Exclusive Split has been enabled Succession owned by the Course conditions next succession (outgoing) must satisfy when dynamic entities playing a part come to an end. condition previous succession (incoming) must satisfy for dynamic entities playing a part to start, ValueSpecification that specifies the expression shared by the guards on the outgoing successions of the Exclusive Split .These guards must be Fact Conditions that reference this shared ValueSpecification as their evaluated expression . [1] The conditioning event part must be a Event Part of the type of the conditioning behavior step [1] The source event part must be one of the Events of the Course that is the type of the predecessor processing step self.source event part in self.predecessor behavioral step ->step type ->owned event part OCL [1] The default Succession must be one of the Successions connected to the Exclusive Split as a next succession [1] The target event part must be one of the Events of the Course that is the type of the successor processing step self.target event part in self.successor behavioral step ->step type ->owned event part OCL