The implementation of the OCL meta model orients itself strongly at NSUML and develops in large parts on it. NSUML is the version of the UML meta model implemented by Novosoft in Java. We tried as far as possible to take over the design decisions of the specification, that's why the description of the entire OCL meta model isn't given here. Information of the OCL meta model can be found in the specification. Like the abstract syntax, the OCL meta model is divided into two main packages - the types and the expressions package. The following information is given to the individual packages and the differences to the specification.
de.tuberlin.tfs.ocl.metamodel.types
corresponds to the types package, see part 3.2 in specification
There are no differences.
class diagram:
OCLMetamodelTypes
de.tuberlin.tfs.ocl.metamodel.expressions
corresponds to the expressions package, see part 3.3 in specification
The MOclConstraint and MOclConstraintImpl are additional to the
specification.
Each OclExpression is part of an OclExpression or it is part of an
OclConstraint.
If you want to build a metamodel, you have to start with the OclConstraint
and set an expression as its body. Then you have to choose an
MOclConstraintKind. (DEF, INV, PRE, POST).
class diagrams:
OCLMetamodelExpressionPackage,
OCLMetamodelPropertyCallExp,
OCLMetamodelMessageExp
Things it can do:
hold an OCL meta model in local memory
convert a complete OCL meta model in an OCL string
Things it cannot do but should do in the future:
Import/export of an OCL meta model from/to XMI
de.tuberlin.tfs.ocl.metamodel.converter
de.tuberlin.tfs.ocl.metamodel.dummys
de.tuberlin.tfs.ocl.metamodel.test