Customizing the metamodel > Instance modeling: Instantiable definition types
  
Instance modeling: Instantiable definition types
Instantiable definition types allow abstract and concrete modeling within a type. In this context, any reference to instances, the instances themselves and any instantiable definitions, have no UML/OO Modeling implications.
DoDAF2 examples of instantiable definitions
"Measure (DM2)", "Measure (Skill) (DM2)", ...
For example, you can create a "Measure (DM2)" definition object called "Target Accuracy" and another, which is an instance of "Target Accuracy", called "High Target Accuracy". Other instances could be "Marine Target Accuracy", "Sniper Target Accuracy", and so on.
Declaration
Definition "MyDef1"
{
INSTANTIABLE
PROPERTY "WWW" { EDIT HETEROGENEOUSLISTOF "Node" AND_SUBTYPES, "Package" SHOW_ON_INSTANCES }
PROPERTY "DEs" { EDIT LISTOF "Data Element" SHOW_ON_INSTANCES }
PROPERTY "DDs" { EDIT ONEOF "Data Domain" SHOW_ON_INSTANCES }
PROPERTY "XXX" { EDIT TEXT LENGTH 4 }
}
Parsing language grammar
SHOW_ON_INSTANCES
Instantiable definition type property level keyword indicating which properties are shown on abstract objects and which ones on concrete objects.
INSTANTIABLE
Definition level keyword indicating that objects of this type allow for creation of instances.
Restrictions
INSTANTIABLE cannot be used in diagrams or symbols.
SHOW_ON_INSTANCES cannot be used on properties of non-instantiable definitions, or diagrams, or symbols.
Behavior
Parsing behavior
Any deviation from the rules described in the “Declaration” chapter will be sanctioned by the parser and appropriate messages will be shown in a local report.
Explorer behavior
A Create Instance explorer context menu item is enabled only for objects of instantiable definition types.
After such an object has been created, you can create an instance: right‑click the object, and then click Create Instance.
Editing behavior for objects of instantiable definition types
When editing an instance (or concrete) object, the fact that it is an instance is indicated in the caption of the edit session.
For example:
An abstract object’s edit caption could be “Dictionary Object - Measure (DM2) - Target Accuracy”; where a concrete object, instance of “Target Accuracy” will be “Dictionary Object - Measure (DM2) - Instance Of Target Accuracy - High Target Accuracy”.
When editing objects of instantiable definition types, the following property depicting rules apply (through SHOW_ON_INSTANCES keyword usage):
 
Keyword
SHOW_ON_INSTANCE
PRESENT
Keyword
SHOW_ON_INSTANCE
NOT PRESENT
Abstract object,
non-reference property
Invisible
Visible
Abstract object,
reference property
Visible
Visible
Concrete object (instance),
non-reference property
Visible
Invisible
Concrete object (instance),
reference property
Visible
Invisible
Editing behavior for references to objects of instantiable definition types from other objects of instantiable definition types
Properties of abstract objects referring to objects of instantiable definition types can contain only abstract objects; therefore, the respective choices lists contain only abstract objects.
Properties of concrete objects referring to objects of instantiable definition types can contain only concrete objects which are instances of the abstract objects referred to by their abstract counterparts; therefore, the respective choices lists contain only instances of those abstract objects.
User experience
See Creating instances of definition types (DoDAF 2.0).
See also
Introduction to extending metamodel with USRPROPS