|
|
Line 15: |
Line 15: |
| |Link | | |Link |
| |- | | |- |
| | | | |General Operators |
| | | | | |
| | | | | |
| |- | | |- |
| | | | |Collection Operators |
| | | | | |
| | | | | |
| |- | | |- |
| | | | | String Operators |
| | | | | |
| | | | | |
| |- | | |- |
| | | | |Number Operators |
| | | | | |
| | | | | |
| |- | | |- |
| | | | |Boolean Operators |
| | | | | |
| | | | | |
| |- | | |- |
| | | | |ViewModel Operators |
| | | | | |
| | | | | |
Line 44: |
Line 44: |
| |} | | |} |
|
| |
|
| General Operators
| |
|
| |
| Collection Operators
| |
|
| |
| String Operators
| |
|
| |
| Number Operators
| |
|
| |
| Boolean Operators
| |
|
| |
| == General Operators ==
| |
| To find all available operators, you can open the OCL-Editor and type in a class:
| |
|
| |
| [[File:Ocl-editor 1.png|frameless|433x433px|link=https://wiki.mdriven.net/index.php/File:Ocl-editor_1.png]]
| |
| {| class="wikitable"
| |
| !Operators
| |
| !Description
| |
| |-
| |
| |'''[https://wiki.mdriven.net/index.php/OCLOperators_allInstances allInstances]'''
| |
| |All the objects of the class
| |
| |-
| |
| |'''[[OCLOperators allInstancesAtTime|allinstancesAtTime]]'''
| |
| |All the currently loaded instances
| |
| |-
| |
| |[[OCLOperators allLoadedObjects|'''allLoadedObjects''']]
| |
| |All objects currently in memory, excluding deleted objects
| |
| |-
| |
| |'''[[OCLOperators allStates|allStates]]'''
| |
| |Meta information about available states in state machines the class may contain
| |
| |-
| |
| |'''[[OCLOperators allSubClasses|allSubClasses]]'''
| |
| |Meta information on all the sub-classes this class has
| |
| |-
| |
| |'''[[OCLOperators allSuperTypes|allSuperTypes]]'''
| |
| |Meta information on all the super-classes – in inheritance order the class has
| |
| |-
| |
| |[[OCLOperators ASCII|'''ASCII''']]
| |
| |
| |
| |-
| |
| |'''[[OCLOperators associationEnds|associationEnds]]'''
| |
| |Returns a collection of strings with association names for the class
| |
| |-
| |
| |[[OCLOperators associationEndsWithType|'''associationEndsWithType''']]
| |
| |Returns a collection of strings with association names and type information for the class
| |
| |-
| |
| |'''[[OCLOperators asString|asString]]'''
| |
| |The string representation of the class – the asString operation is available on everything
| |
| |-
| |
| |[[OCLOperators AsTaJson|'''asTaJson''']]
| |
| |Returns a json string defined by the ViewModel
| |
| |-
| |
| |[[OCLOperators atTime|'''atTime''']]
| |
| |Gives the read-only representation of a versioned object as it was at time X.
| |
| |-
| |
| |'''[[OCLOperators attributes|Attributes]]'''
| |
| |Meta information about what attributes the class has
| |
| |-
| |
| |[[OCLOperators BigEndianUnicode|'''BigEndianUnicode''']]
| |
| |
| |
| |-
| |
| |[[OCLOperators brokenConstraints|'''brokenConstraints''']]
| |
| |Returns a collection of the names of broken constraints for the class and object.
| |
| |-
| |
| |[[OCLOperators canAccess|'''canAccess''']]
| |
| |Check ViewModels Access expression for root
| |
| |-
| |
| |'''[[OCLOperators constraints|Constraints]]'''
| |
| |Meta information on what constraints the class has
| |
| |-
| |
| |[[OCLOperators count|'''count''']]
| |
| |Returns how many times the ''object'' is in the collection ''self''.
| |
| |-
| |
| |[[OCLOperators Default|'''Default''']]
| |
| |
| |
| |-
| |
| |[[OCLOperators Empty|'''Empty''']]
| |
| |
| |
| |-
| |
| |'''[[OCLOperators emptyList|emptylist]]'''
| |
| |Returns an empty list typed to hold objects of the class
| |
| |-
| |
| |[[OCLOperators existing|'''existing''']]
| |
| |The existing operator returns true if the object hasn't been deleted.
| |
| |-
| |
| |[[OCLOperators externalId|'''externalId''']]
| |
| |Returns the external ID for the object operated on.
| |
| |-
| |
| |[[OCLOperators format|'''format''']]
| |
| |
| |
| |-
| |
| |[[OCLOperators IsDirty|'''IsDirty''']]
| |
| |Returns true if the objects have been changed since the last save.
| |
| |-
| |
| |[[OCLOperators IsNew|'''IsNew''']]
| |
| |IsNew operator returns true if the object has never been saved to the database.
| |
| |-
| |
| |'''isDirtyMember'''
| |
| |Called on a class attribute to check if this attribute has changes pending to be saved.
| |
| |-
| |
| |'''isNull'''
| |
| |Returns true if the value is null (not assigned any value).
| |
| |-
| |
| |[[OCLOperators maxValue|'''maxValue''']]
| |
| |Gets the maximum value in a collection of values
| |
| |-
| |
| |[[OCLOperators minValue|'''minValue''']]
| |
| |Gets the minimum value in a collection of values
| |
| |-
| |
| |'''[[OCLOperators nullValue|nullValue]]'''
| |
| |A typed null value
| |
| |-
| |
| |'''[[OCLOperators objectfromExternalId|objectFromExternalId]]'''
| |
| |An external identity will be resolved to the object
| |
| |-
| |
| |'''[[OCLOperators oclAsType|oclAsType]]'''
| |
| |The type of the class
| |
| |-
| |
| |[[OCLOperators oclGetStates|'''oclGetStates''']]
| |
| |Gets a list of the objects all state machines currently state as strings.
| |
| |-
| |
| |'''[[oclIsInvalid]]'''
| |
| |Returns true if ''self'' is equal to *invalid*.
| |
| |-
| |
| |'''[[OCLOperators oclIsKindOf|oclIsKindOf]]'''
| |
| |This is to if a class is a subclass or as the class itself and not unrelated
| |
| |-
| |
| |'''[[OCLOperators oclIsTypeOf|oclIsTypeOf]]'''
| |
| |Returns true if
| |
| |-
| |
| |[[OCLOperators OnCreate|'''OnCreate''']]
| |
| |Is often called when a new object has been created.
| |
| |-
| |
| |[[OCLOperators OnUpdate|'''OnUpdate''']]
| |
| |Is called just before the object is saved to the database.
| |
| |-
| |
| |[[oclIsUndefined|'''oclIsUndefined''']]
| |
| |Returns true if ''self'' is equal to invalid or null.
| |
| |-
| |
| |'''[[OCLOperators OclType|OclType]]'''
| |
| |When used on an object, you get the type of the object.
| |
| |-
| |
| |[[OCLOperators random|'''random''']]
| |
| |
| |
| |-
| |
| |'''[[OCLOperators safeCast|safeCast]]'''
| |
| |
| |
| |-
| |
| |[[OCLOperators Sqlpassthrough|'''sqlpassthrough''']]
| |
| |Calls a stored procedure
| |
| |-
| |
| |[[OCLOperators sqlpassthroughobjects|'''sqlpassthroughobjects''']]
| |
| |Return a primary key of SomeClass. This can be combined with other Ocl-PS via ->intersection or union.
| |
| |-
| |
| |'''[[OCLOperators superTypes|superTypes]]'''
| |
| |Returns the set of all direct supertypes of the type.
| |
| |-
| |
| |'''[[OCLOperators taggedValue|TaggedValue]]'''
| |
| |Meta information on tagged values set in the class
| |
| |-
| |
| |'''[[OCLOperators taggedValueOnFeature|TaggedValueOnFeature]]'''
| |
| |Meta information on Tagged values set on a named feature in the class
| |
| |-
| |
| |'''[[OCLOperators typename|Typename]]'''
| |
| |The type name as a string
| |
| |-
| |
| |'''[[OCLOperators ViewModels|ViewModels]]'''
| |
| |A tuple with the ViewModels for this class a members
| |
| |}
| |
|
| |
| == Collection Operators ==
| |
| Once you have a collection of objects, there are certain operators applicable to them.
| |
|
| |
| See this page for [[examples on collection operators|examples on collection operators.]]
| |
|
| |
| Again, you can use the OCL-Editor to see what they are:
| |
|
| |
| [[File:Collection of objects operators.png|frameless|453x453px|link=https://wiki.mdriven.net/index.php/File:Collection_of_objects_operators.png]]
| |
| {| class="wikitable"
| |
| !Operators
| |
| !Description
| |
| |-
| |
| |'''[[OCLOperators append|->append]]'''
| |
| |Add another object last
| |
| |-
| |
| |'''[[OCLOperators asBag|->asBag]]'''
| |
| |Returns a Bag containing all elements of ''self''.
| |
| |-
| |
| |'''[[OCLOperators asSequence|->asSequence]]'''
| |
| |Returns a Sequence containing all elements of ''self''. Element ordering is preserved when possible.
| |
| |-
| |
| |'''[[OCLOperators asSet|->asSet]]'''
| |
| |Returns a Set containing all elements of ''self''.
| |
| |-
| |
| |'''[[OCLOperators at|->at]]'''
| |
| |Get the objects at X where the first index is 1
| |
| |-
| |
| |'''[[OCLOperators at0|->at0]]'''
| |
| |Get the objects at X where the first index is 0
| |
| |-
| |
| |'''[[OCLOperators collect|->collect]]'''
| |
| |Returns a collection containing the result of applying ''expr'' on all elements contained in ''self''.
| |
| |-
| |
| |'''[[OCLOperators count|->count]]'''
| |
| |Count how many meet a certain criteria
| |
| |-
| |
| |[[OCLOperators dictionary|'''->dictionary''']]
| |
| |Efficiently looks up values
| |
| |-
| |
| |'''[[OCLOperators difference|->difference]]'''
| |
| |The difference between 2 collections
| |
| |-
| |
| |'''[[OCLOperators excluding|->excluding]]'''
| |
| |The collection except for this single object
| |
| |-
| |
| |'''[[OCLOperators exists|->exists]]'''
| |
| |Returns true if at least one element in ''self'' validates the condition ''expr'', false otherwise.
| |
| |-
| |
| |'''[[OCLOperators filterOnType|->filterOnType]]'''
| |
| |Only keep the ones of a certain type
| |
| |-
| |
| |'''[[OCLOperators first|->first]]'''
| |
| |Return the first object
| |
| |-
| |
| |'''[[OCLOperators forAll|->forAll]]'''
| |
| |Returns true if all the elements contained in ''self'' validate the condition ''expr'', false otherwise.
| |
| |-
| |
| |'''[[OCLOperators groupBy|->groupBy]]'''
| |
| |Build a collection of tuples grouped by some aspect
| |
| |-
| |
| |'''[[OCLOperators includes|->includes]]'''
| |
| |Does the collection include the object
| |
| |-
| |
| |'''[[OCLOperators includesAll|->includesAll]]'''
| |
| |Does the collection include the whole other collection
| |
| |-
| |
| |'''[[OCLOperators including|->including]]'''
| |
| |Returns the list with the element in the parameter included.
| |
| |-
| |
| |'''[[OCLOperators indexOf|->IndexOf]]'''
| |
| |The 1 based index of an object in the collection possibly -1 if not existing
| |
| |-
| |
| |'''[[OCLOperators indexOf0|->indexOf0]]'''
| |
| |The 0 based index of an object in the collection possibly -1 if not existing
| |
| |-
| |
| |'''[[OCLOperators intersection|->intersection]]'''
| |
| |The intersection of two collections
| |
| |-
| |
| |'''[[OCLOperators isEmpty|->isEmpty]]'''
| |
| |Returns true if the collection is empty
| |
| |-
| |
| |'''[[OCLOperators notEmpty|->]][[OCLOperators notEmpty|notEmpty]]'''
| |
| |Returns true if ''self'' contains at least one element, false otherwise.
| |
| |-
| |
| |'''[[OCLOperators reject|->]][[OCLOperators reject|reject]]'''
| |
| |Returns a collection with all elements of ''self'' except for those who validate the OclExpression ''expr''.
| |
| |-
| |
| |'''[[OCLOperators select|->]][[OCLOperators select|select]]'''
| |
| |Returns a collection with all elements of ''self'' that validate the OclExpression ''expr''.
| |
| |-
| |
| |'''[[OCLOperators size|->]][[OCLOperators size|size]]'''
| |
| |Returns the number of elements contained in ''self''.
| |
| |-
| |
| |'''[[OCLOperators sum|->]][[OCLOperators sum|sum]]'''
| |
| |Returns the sum of all elements contained in ''self'' if they support the '+' operation.
| |
| |-
| |
| |'''[[OCLOperators last|->last]]'''
| |
| |Returns the last object in the collection
| |
| |-
| |
| |'''[[OCLOperators orderBy|->orderBy]]'''
| |
| |Sorts the collection on one or more properties
| |
| |-
| |
| |'''[[OCLOperators orderDescending|->orderDescending]]'''
| |
| |Sort the from biggest to smallest
| |
| |-
| |
| |'''[[OCLOperators orderGeneric|->orderGeneric]]'''
| |
| |Sorts the list of properties with interchangeable sort order: (expr1, OclSortDirection::ascending, expr2, OclSortDirection::descending...)
| |
| |-
| |
| |'''[[OCLOperators prepend|->prepend]]'''
| |
| |Returns an OrderedSet containing ''object'' followed by all elements of ''self''.
| |
| |-
| |
| |'''[[OCLOperators subSequence|->subsequence]]'''
| |
| |Returns a smaller collection from a start to stop
| |
| |-
| |
| |'''[[OCLOperators symmetricDifference|->symmetricDifference]]'''
| |
| |The symmetric difference between the collections; ie all the objects in collection1 or collection2 but not in both
| |
| |-
| |
| |'''[[OCLOperators union|->union]]'''
| |
| |The set of objects in collection1 and objects in collection2
| |
| |}
| |
|
| |
| == String Operators ==
| |
| {| class="wikitable"
| |
| !Operators
| |
| !Description
| |
| |-
| |
| |[[Escape codes|'''Escape codes''']]
| |
| |Escape (special) characters used in OCL
| |
| |-
| |
| |[[OCLOperators StringToAnsiBase64|'''StringToAnsiBase64''']]
| |
| |Convert a string to an ANSI (1252) and as a base64 string
| |
| |-
| |
| |[[OCLOperators StringToEncodedBase64|'''StringToEncodedBase64''']]
| |
| |Convert a string to a specific encoding and as a base64 string. For example Western European (ISO) Codepage 28591
| |
| |-
| |
| |[[OCLOperators Size () : Integer|'''size () : Integer''']]
| |
| |Returns the number of characters composing ''self''.
| |
| |-
| |
| |[[OCLOperators subString|'''subString''']]
| |
| |Returns the substring of the string operated on. The substring starts at parameter 1 and ends at parameter 2. The counting is 1-based.
| |
| |-
| |
| |[https://wiki.mdriven.net/index.php/OCLOperators_toInteger_()_:_Integer '''toInteger () : Integer''']
| |
| |Returns ''self'' with all characters converted to lowercase.
| |
| |-
| |
| |[[OCLOperators ToLower () : String|'''toLower () : String''']]
| |
| |Returns ''self'' with all characters converted to lowercase.
| |
| |-
| |
| |[[OCLOperators ToReal () : Real|'''toReal () : Real''']]
| |
| |Returns a Real of value equal to ''self''<nowiki>, or |invalid| if </nowiki>''self'' does not represent a real.
| |
| |-
| |
| |[[OCLOperators ToUpper () : String|'''toUpper () : String''']]
| |
| |Returns self with all characters converted to uppercase.
| |
| |}
| |
|
| |
| == Number Operators ==
| |
| In addition to the basic math functions (+, -, /, \*) are a number of advanced functions. Take note that *Number* denotes both *Integer* and *Real*, and they're substitutive unless otherwise specified.
| |
| {| class="wikitable"
| |
| !Operators
| |
| !Description
| |
| |-
| |
| |[[OCLOperators Number::abs () : Number|'''Number::abs () : Number''']]
| |
| |Returns the absolute value of ''self'', ''self'' if it is already a positive number.
| |
| |-
| |
| |[[OCLOperators Number::floor () : Integer|'''Number::floor () : Integer''']]
| |
| |Returns the integer part of self if it is a Real, self if it is an Integer.
| |
| |-
| |
| |[[OCLOperators Number::max ( r : Number ) : Number|'''Number::max ( r : Number ) : Number''']]
| |
| |Returns the greatest number between self and *r*.
| |
| |-
| |
| |[[OCLOperators Number::min ( r : Number ) : Number|'''Number::min ( r : Number ) : Number''']]
| |
| |Returns the lowest number between ''self'' and *r*.
| |
| |-
| |
| |[[OCLOperators Number::round () : Integer|'''Number::round () : Integer''']]
| |
| |Returns the nearest integer to ''self'' if it is a Real, ''self'' if it is an Integer.
| |
| |-
| |
| |Number::ieeereminder(r:Number):Integer
| |
| |Reminder of division with r, ie modulus or mod or %
| |
| |-
| |
| |[[OCLOperators Integer::div ( i : Integer ) : Integer|'''Integer::div ( i : Integer ) : Integer''']]
| |
| |Returns the integer quotient of the division of ''self'' by *i*.
| |
| |-
| |
| |[[OCLOperators Integer::mod ( i : Integer ) : Integer|'''Integer::mod ( i : Integer ) : Integer''']]
| |
| |Returns the integer remainder of the division of ''self'' by *i*.
| |
| |}
| |
| == Boolean Operators ==
| |
| {| class="wikitable"
| |
| !Operators
| |
| !Description
| |
| |-
| |
| |[[OCLOperators And|'''And''']]
| |
| |
| |
| {| class="wikitable"
| |
| !And
| |
| !True
| |
| !False
| |
| !Invalid
| |
| |-
| |
| !True
| |
| |true
| |
| |false
| |
| |true
| |
| |-
| |
| !False
| |
| |false
| |
| |false
| |
| |false
| |
| |-
| |
| !Invalid
| |
| |invalid
| |
| |false
| |
| |invalid
| |
| |}
| |
| |-
| |
| |[[OCLOperators Implies|'''Implies''']]
| |
| |
| |
| {| class="wikitable"
| |
| !Implies
| |
| !True
| |
| !False
| |
| !Invalid
| |
| |-
| |
| !True
| |
| |true
| |
| |false
| |
| |invalid
| |
| |-
| |
| !False
| |
| |true
| |
| |true
| |
| |true
| |
| |-
| |
| !Invalid
| |
| |true
| |
| |invalid
| |
| |invalid
| |
| |}
| |
| |-
| |
| |[[OCLOperators Or|'''Or''']]
| |
| |
| |
| {| class="wikitable"
| |
| !Or
| |
| !True
| |
| !False
| |
| !Invalid
| |
| |-
| |
| !True
| |
| |true
| |
| |true
| |
| |true
| |
| |-
| |
| !False
| |
| |true
| |
| |false
| |
| |invalid
| |
| |-
| |
| !Invalid
| |
| |true
| |
| |invalid
| |
| |invalid
| |
| |}
| |
| |-
| |
| |[[OCLOperators Not|'''Not''']]
| |
| |
| |
| {| class="wikitable"
| |
| !Not
| |
| !Result
| |
| |-
| |
| !True
| |
| |false
| |
| |-
| |
| !False
| |
| |true
| |
| |-
| |
| !Invalid
| |
| |invalid
| |
| |}
| |
| |-
| |
| |[[OCLOperators Xor|'''Xor''']]
| |
| |
| |
| {| class="wikitable"
| |
| !Xor
| |
| !True
| |
| !False
| |
| !Invalid
| |
| |-
| |
| !True
| |
| |false
| |
| |true
| |
| |invalid
| |
| |-
| |
| !False
| |
| |true
| |
| |false
| |
| |invalid
| |
| |-
| |
| !Invalid
| |
| |invalid
| |
| |invalid
| |
| |invalid
| |
| |}
| |
| |}
| |
| == ViewModel Operators (on selfVM variable) == | | == ViewModel Operators (on selfVM variable) == |
| See page: [[SelfVM]] | | See page: [[SelfVM]] |