Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

MDT/New and Noteworthy/1.0

< MDT
Revision as of 15:12, 23 February 2007 by Cdamus.ca.ibm.com (Talk | contribs) (Fix example)

Model Development Tools Release 1.0 New and Noteworthy Items.

For more details about the development plan, see the MDT 1.0 draft plan.

Back to Modeling Development Tools.

EMF Ontology Definition Metamodel (EODM) Component

Object Constraint Language (OCL) Component

Release 1.1 M4

LPG Java Runtime Restructuring

In the OCL 1.0 release, the SourceForge LPG Java Runtime library was embedded in the OCL bundle JAR. It has now been contributed to Orbit as a distinct bundle net.sourceforge.lpg.lpgjavaruntime.

Stand-alone Deployment Support

The OCL Downloads page now includes a stand-alone ZIP containing just the JARs required for deployment in a non-Eclipse environment. The EMF stand-alone deployment that is also required is available separately.

Stand-alone deployment

Other Bug Fixes

For other bug fixes, see the 1.1 M4 release notes.

Release 1.1 M5

EMF 2.3 Adoption and Generics

This milestone introduces a significant refactoring of the OCL Parser/Interpreter API, with the adoption of EMF 2.3 and its support for generic types. Using Ecore's generics, a new generic Abstract Syntax model for OCL is defined in the org.eclipse.ocl plug-in:

Generic OCL Abstract Syntax

This new model, and the OCL Parser/Interpreter core API, are thus freed from the dependency on the Ecore metamodel. The org.eclipse.emf.ocl plug-in is now deprecated and is supplanted by an Ecore binding (and environment implementation) of the generic model in the org.eclipse.ocl.ecore plug-in. The deprecated API delegates to the new Ecore binding for parsing of constraints, translating the resulting ASTs to the old Ecore-centric model. Utilities are also provided to convert existing ASTs in the old model to the new. The org.eclipse.emf.ocl API remains fully supported.

OCL Document Parsing API

The new org.eclipse.ocl.OCL generic class is the focal point of OCL parsing and evaluation. Besides creating org.eclipse.ocl.helper.OCLHelpers for parsing embedded constraints and org.eclipse.ocl.Querys for evaluating constraints, it can also parse OCL documents (text files external to the model). The content of an OCL document is encapsulated by the org.eclipse.ocl.OCLInput class:

OCL Document Parsing API

The parser supports the package and classifier context declarations, as well as all of the kinds of constraints supported by the OCLHelper for embedded constraints:

  • classifier invariants
  • operation pre-, post-, and body conditions
  • attribute initial and derived values
  • def: expressions for additional attributes and properties

For example:

package ocltest
    context Fruit
        inv not_black: self.color <> Color::black
        def property_helper:
            otherFruits : Set(Fruit) = Fruit.allInstances()->excluding(self)
        def operation_helper:
            getOtherFruits1(fruit : Fruit) : Set(Fruit) = Fruit.allInstances()->excluding(fruit)

    context Apple::preferredLabel(text : String) : String
        pre text_not_null: not text.oclIsUndefined()
        pre text_not_label: text <> label
        body compute_label: result = if text = label then '' else text endif
        post label_is_changed: label <> label@pre
        post label_is_set: label = text

    context Apple::name : String
        init: ''
        derive: if label.oclIsUndefined() then '' else label endif
endpackage

OCL Constraints on UML Models

The new generic OCL implementation lays the ground-work for support for the UML metamodel (as opposed to Ecore). This is implemented in the new org.eclipse.ocl.uml feature (and plug-in of the same name). This consists of

  • UML bindings for the generic parameters of the core OCL API, including a UML implementation of the Environment
  • a specialization of the OCL Types package for OCL metatypes that are consistent with UML
  • UML models of the abstract syntax model, UML binding, and OCL Standard Library (works in progress)

The UML environment supports the following UML-specific OCL concepts that the Ecore environment does not:

  • isQuery property of operations
  • qualified association navigation
  • association-class navigation
  • state expressions (using UML state machines)
  • constraints defined on stereotypes

The UML evaluation environment (for evaluation of OCL constraints) supports two kinds of instance models: instance specifications in the UML model (as InstanceSpecification elements) and run-time instances (as EObjects) of an API generated by the UML2 code generator. Evaluation on instance specifications supports association-class and qualified association navigation but not operation calls (except where those operations have body conditions specified in OCL).

As a special case of the evaluation on EObjects, for the UML metamodel itself, the UML environment allows constraints defined on stereotypes to be evaluated on Elements to which they are applied, as well as on the stereotype instances. In either case, the constraint must be expressed in the context of the stereotype, navigating the appropriate metaclass extension(s) to access the base element.

Other Bug Fixes

For other bug fixes, see the 1.1 M5 release notes.

In particular, attitional operations and attributes defined by def: expressions (parsed from OCL documents or via the helper) are no longer "global" (attached to the model context classifier). They are now local to the org.eclipse.ocl.OCL environment in which they were parsed.

Unified Modeling Language 2.x (UML2) Component

UML2 Tools Component

XML Schema Infoset (XSD) Component

Back to the top