Legacy Issue Number: 19008
Source: PhD Student ( Alessandro Gerlinger Romero)
Locus has a "set" for all extensional values, however, there is no unique identifier in the ExtensionalValue to support the uniqueness.
It should be defined an attribute objectId as "isID" (from UML 2.4.1, isID, indicates this property can be used to uniquely identify an instance of the containing class.) in the class ExtensionalValue.
The only mention to an object identifier is a reference marked as non-normative, which uses Java to define an object identifier.
184.108.40.206.6 Locus pg. 103
extensionalValues : ExtensionalValue [0..*]
The set of values that are members of classifier extents at this locus.
220.127.116.11.27 Value pg. 159
 objectId ( ) : String
// Return an identifier for this object.
Reported: FUML 1.1 — Fri, 11 Oct 2013 04:00 GMT
Disposition: Resolved — FUML 1.2
Normatively define IDs for extensional values
In general, it is not necessary in UML to model an explicit ID attribute in order to enforce uniqueness of a property with multiple values. Objects (instances of classes) are automatically distinguishable and unique under UML semantics. Identifying a property typed by a class as isUnique (the default) then means directly that no instance of that class (note that ExtensionalValue is a class in the Execution Model) can appear more than once in the set of values for the property.
Nevertheless, the issue does make a reasonable point that a Value::objectId operation is provided, but that its specification is non-normative. However, this operation is, in fact, used normatively in CompoundValue::toString.
Indeed, while it is unclear how to assign unique IDs to all values within the context of the Execution Model, it is certainly reasonable to assign IDs to the extensional values at a locus, as the issue requests. This ID could be assigned when the extensional value is added to the extent at a certain locus. To make the ID unique across multiple loci then requires that each locus also have an ID that can be used to further qualify the IDs of extensional values at that locus. Such an ID could be assigned when the locus is created, as part of the initialization of the execution environment.
Finally, note that the isID meta-attribute is not given any semantics in bUML, so it is not used in the Execution Model.
Updated: Tue, 22 Dec 2015 15:09 GMT