Usages can have additional properties indicated by the keywords added in the usage declaration. The keywords should be specified in the following order:

  1. in, out, inout – indicates a direction for a directed usage.
    1. in – specifies what is input to an instance.
    2. out – specifies what is output by an instance.
    3. inout – specifies what is both input to and output by an instance.
  2. derived – specifies a derived usage that is typically expected to have a bound value expression that completely determines its value at all times.
  3. abstract – specifies an abstract usage whose value must also be a value of a concrete usage that specializes the abstract usage. If a usage is not abstract, it is a concrete usage.
  4. constant – specifies that the usage is constant. Its values are the same during the entire existence of the featuring instance.
  5. ref – specifies a referential usage. Directed usages are referential by default, whether the ref keyword is specified or not. If a usage is not referential, it is a composite usage, which is deleted once its featuring instances are deleted.

Specifying the direction modifier for features

Specifying the direction modifier for features via the Textual Editor

To specify the direction modifier for features via the Textual Editor


  1. In the Textual Editor, before the element metaclass keyword, specify the needed direction keyword: in, out, or inout.
  2. Click the Synchronize button.

    part def Tank :> Container {
        in item fuelFlow : Fuel;
    }

Specifying the direction modifier for features via the element shortcut menu

To specify the direction modifier for features via the element shortcut menu


  • Right-click a usage element in the Containment tree or its symbol in a view and in its shortcut menu, in the Properties group, click Direction, and in its submenu, click either in, out, or inout.

Specifying the derived modifier for features

Specifying the derived modifier for features via the Textual Editor

To specify the derived modifier for features via the Textual Editor


  1. In the Textual Editor, before the element metaclass keyword, specify the derived keyword.
  2. Click the Synchronize button.

    item def TestRecord {
        //...
        derived attribute averageScore [1] : Rational;
    }

Specifying the abstract modifier for features

Specifying the abstract modifier for features via the Textual Editor

To specify the abstract modifier for features via the Textual Editor


  1. In the Textual Editor, before the element metaclass keyword, specify the abstract keyword.
  2. Click the Synchronize button.

    abstract part def Vehicle;

Specifying the constant modifier for features

Specifying the constant modifier for features via the Textual Editor

To specify the constant modifier for features via the Textual Editor


  1. In the Textual Editor, before the element metaclass keyword, specify the constant keyword.
  2. Click the Synchronize button.

    occurrence def ApprovedFlight :> Flight {
        constant ref part approvedAircraft redefines aircraft;
    }

Specifying the ref modifier for features

Referential, composite and reference usages

Referential usage references a usage that is an instance of another composition. If a usage is not referential, it is composite, which is deleted once its featuring instances are deleted.

part def Vehicle {
    part eng : Engine;           // composite
    ref part driver : Person;   // referential
}

Reference usages are declared without the element kind keyword and are not restricted to being defined by a definition of any specific kind. Its declaration may optionally include the ref keyword, however, reference usages are implicitly referential. 

part def Container {
    item content;
}
part def Tank :> Container {
    fuel : Fuel :>> content; // reference usage
}

Specifying usages as composite or referential via the Textual Editor

To specify usages as composite or referential via the Textual Editor


  1. In the Textual Editor, before the element metaclass keyword, specify one of the following:
    1. For a referential usage, specify the keyword ref
    2. For a composite usage, remove the keyword ref
  2. Click the Synchronize button.

    part def Vehicle {
        part eng : Engine;           // composite
        ref part driver : Person;   // referential
    }

Specifying usages as composite or referential via the element shortcut menu

To specify usages as composite or referential via the element shortcut menu


  1. Right-click a usage in the Containment tree or its symbol in a view and in the shortcut menu, and do one of the following:
    1. For a referential usage, deselect the Is Composite property.
    2. For a composite usage, select the Is Composite property.