OCLOperators allInstances
allInstances () : Set{T}
Returns a Set containing all of the existing instances of the current classifier (along with instances of all its inherited classifiers).
| Expression | Result |
|---|---|
| Thing.allInstances | all the Thing object instances currently in your system—if only in DB, objects will be loaded |
Your model is central to all expressions you will handle. We will use this model for the examples:
| Operators | Description |
|---|---|
| Thing.allinstances | Gives you a list of all things |
| Thing.allinstances->select(someInt>3) | Only things with someInt bigger than 3 |
| Thing.allinstances->select( (someInt>3) and (someInt<6)) | Only things with someInt bigger than 3 but less than 6. Notice the extra parentheses to join the Boolean expressions together |
| Thing.allinstances->select(x|x.someInt>3) | Here we introduce the loop variable x. We separate the definition of x from the usage of x with the pipe sign “|”. Loop variables are optional if names are unique, but you will need to use them to give precision or if you want to perform operations on the loop context itself. |
| Thing.allinstances.Details | Gives a list of all Detail objects that are connected to a Thing. The Detail objects that float around without a Thing will not be on the list |
| Thing.allinstances.Details.Attribute1 | A list of nullable strings from the contents of the details' attribute1. Note that OCL is null-tolerant—you do not need to check whether the Details exist or not—the language handles null checks for you. |
| SubClassThing1.allinstances.Details | Inherited features of classes are directly accessible |
| Thing.allInstances->select(x|x.safeCast(SubClassThing1). OnlyAvailableInSubClass='Hello') | Filtering on Specialization is done with the operator SafeCast. This is null safe, so for all objects that do not fit the profile, the expression returns false |
This was a description of the allinstances operator. It is a common operator. To find all available operators, you can open the OCL Editor and type in a class.
See: OCLOperators
