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

Difference between revisions of "OCL"

(Other documentation)
(Documentation, Publications and FAQs)
(47 intermediate revisions by 3 users not shown)
Line 13: Line 13:
  
 
* Provides an Interactive OCL Console to evaluate queries on models.
 
* Provides an Interactive OCL Console to evaluate queries on models.
* Provides an [[MDT/OCLinEcore | OCLinEcore]] [[Xtext]] editor for OCL embedded in an Ecore meta-model.
+
* Provides an [[OCL/OCLinEcore | OCLinEcore]] [[Xtext]] editor for OCL embedded in an Ecore meta-model.
 
* Provides a CompleteOCL editor for an OCL document complementing a meta-model.
 
* Provides a CompleteOCL editor for an OCL document complementing a meta-model.
 
* Provides an EssentialOCL editor for individual OCL expressions.
 
* Provides an EssentialOCL editor for individual OCL expressions.
  
The grammars for the Xtext-based editors auto-generate ANTLR parsers. In MDT/OCL 3.0, the ANTLR parsers are used solely within the editors. As from MDT/OCL 3.1 the Xtext grammars and parsers provide full evaluation and validation capabilities too. Since the Xtext grammars are associated with a re-engineering to support a model-defined standard library and full OMG compliance, the original LPG parser will be increasingly deprecated.
+
The grammars for the Xtext-based editors auto-generate ANTLR parsers. In Eclipse OCL 3.0, the ANTLR parsers are used solely within the editors. As from Eclipse OCL 3.1 the Xtext grammars and parsers provide full evaluation and validation capabilities too. Since the Xtext grammars are associated with a re-engineering to support a model-defined standard library and full OMG compliance, the original LPG parser will be increasingly deprecated.
  
== New and Noteworthy ==
+
== Downloads and Updates ==
  
You may want to check the [[MDT/OCL/New_and_Noteworthy|New and Noteworthy]] features of the MDT/OCL releases.
+
Eclipse OCL Downloads are available via the [http://www.eclipse.org/modeling/mdt/downloads/?project=ocl Project Downloads] page.
  
== Example Code ==
+
Eclipse OCL Updates are available at http://download.eclipse.org/modeling/mdt/ocl/updates and from the Modeling category of the main http://download.eclipse.org/releases/kepler/ Update Site. The ''OCL End User SDK'' feature supports OCL in conjunction with Ecore or UML meta-models. The ''OCL Examples and Editors'' feature additionally provides an IDE comprising Xtext-based editors, an Interactive Console and Debugger.
  
* [[CustomizingOclEnvironments | Customizing OCL Environments]]
+
Eclipse OCL Repositories and Updates for Milestone, Interim and Nightly builds are described in [[OCL/Dev/Releng/P2_Repositories_Organization | P2 Repositories Organization]] and retained in accordance with the [[OCL/Dev/Policies#Retention_Policy | Retention Policy]].
* [[StereotypeOCLwithEcore | Evaluating Stereotype Constraints using the Ecore Environment]]
+
* [[OCLSnippets | OCL Snippets]]
+
  
== Articles ==
+
Eclipse OCL source code is available from git://git.eclipse.org/gitroot/mdt/org.eclipse.ocl.git, [http://git.eclipse.org/c/mdt/org.eclipse.ocl.git http://git.eclipse.org/c/mdt/org.eclipse.ocl.git] and [https://github.com/eclipse/ocl/network github Network]. All source projects may be installed by Import...->Team->Team Project Set, then entering [http://git.eclipse.org/c/ocl/org.eclipse.ocl.git/plain/releng/org.eclipse.ocl.releng/psfs/ocl-all.psf?h=master http://git.eclipse.org/c/ocl/org.eclipse.ocl.git/plain/releng/org.eclipse.ocl.releng/psfs/ocl-all.psf?h=master] as the URL for import. Be patient; the repository clone takes a while, and there are no obvious progress indicators during the third phase while projects are actually created.
  
* [http://www.sts.tu-harburg.de/~mi.garcia/pubs/2007/ocltools/OCLTools.pdf OCL Tools: Status and Perspectives] by Miguel Garcia and A. Jibran Shidqie
+
Eclipse OCL has [https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;product=MDT.OCL;classification=Modeling Open Bugs] and a [news://new.eclipse.org:119/eclipse.modeling.mdt.ocl newsgroup] or [http://www.eclipse.org/forums/eclipse.modeling.mdt.ocl forum]. See the [[OCL/ForumNetiquette | OCL Forum Netiquette]]
* [http://www.sts.tu-harburg.de/~mi.garcia/pubs/2007/ese/oclcompiler.pdf OCL Compiler for EMF] by Miguel Garcia and A. Jibran Shidqie
+
* [http://www.eclipse.org/articles/article.php?file=Article-HowToProcessOCLAbstractSyntaxTrees/index.html How to process OCL Abstract Syntax Trees] by Miguel Garcia
+
* [http://www.eclipse.org/articles/Article-EMF-Codegen-with-OCL/article.html Implementing Model Integrity in EMF with OCL] by Christian W. Damus
+
* [http://eclipsezilla.eclipsecon.org/show_bug.cgi?id=3619 EclipseCon 2007 tutorial "Effective Use of the Eclipse Modeling Framework"] by Ed Merks et al.
+
* [http://joanna.opoki.com/papers/2008_MoDeVVa/ "Querying UML Models using OCL and Prolog: A Performance Study"] presented at [http://www.cs.colostate.edu/~ghosh/modevva2008/ MoDeVVa'2008] by Joanna Chimiak-Opoka et al. <br>(OCL expressions used in the study are available online at the [http://squam.info/ocleditor/ OCL Editor web page] in the Library Concept / Concrete Syntax section)
+
* [http://www.eclipse.org/modeling/mdt/ocl/docs/publications/TUIlmenau2011ImpactAnalysis/OCL%20Impact%20Analysis.pdf "Efficient OCL Impact Analysis", Thomas Goldschmidt and Axel Uhl, presented at Heidelberg University, 2011]
+
  
== Documentation, Publications and FAQs ==
+
== Documentation, Publications and [[OCL/FAQ|FAQs]] ==
 +
 
 +
* [[OCL/Compliance|(OMG) OCL Compliance]] and [[OCL/Limitations|(Eclipse) OCL Limitations]]
 +
* Eclipse OCL Documentation from the [http://help.eclipse.org/ Eclipse Help Center]
 +
** Mars OCL 6.0/3.5/1.0 Documentation [http://help.eclipse.org/mars/topic/org.eclipse.ocl.doc/help/OverviewandGettingStarted.html HTML] [http://download.eclipse.org/ocl/doc/6.0.0/ocl.pdf PDF]
 +
** Luna OCL 5.0/3.4 Documentation [http://help.eclipse.org/luna/topic/org.eclipse.ocl.doc/help/OverviewandGettingStarted.html HTML] [http://download.eclipse.org/ocl/doc/5.0.0/ocl.pdf PDF]
 +
** Kepler OCL 4.1/3.3 Documentation [http://help.eclipse.org/kepler/topic/org.eclipse.ocl.doc/help/Overview.html  HTML]
 +
** Juno OCL 4.0/3.2 Documentation [http://help.eclipse.org/juno/topic/org.eclipse.ocl.doc/help/Overview.html  HTML]
 +
** Indigo OCL 3.1 Documentation [http://help.eclipse.org/indigo/topic/org.eclipse.ocl.doc/help/Overview.html  HTML] [[OCL/Indigo Documentation Errata| Errata]]
 +
** Helios OCL 3.0 Developer Guide [http://help.eclipse.org/helios/topic/org.eclipse.ocl.doc/help/Overview.html  HTML]
 +
* [[OCL/New_and_Noteworthy|New and Noteworthy]] features of the Eclipse OCL releases.
 +
** [[OCL/New_and_Noteworthy/Neon|6.1/3.6/1.1 Neon release (June 2016)]]
 +
** [[OCL/New_and_Noteworthy/Mars|6.0/3.5/1.0 Mars release (June 2015)]]
 +
** [[OCL/New_and_Noteworthy/Luna|5.0/3.4 Luna release (June 2014)]]
 +
** [[OCL/New_and_Noteworthy/Kepler|4.1/3.3 Kepler release (June 2013)]]
 +
** [[OCL/New_and_Noteworthy/Juno|4.0/3.2 Juno release (June 2012)]]
 +
** [[OCL/New_and_Noteworthy/Indigo|3.1 Indigo release (June 2011)]]
 +
** [[OCL/New_and_Noteworthy/Helios|3.0 Helios release (June 2010)]]
 +
** [[OCL/New_and_Noteworthy/Galileo|1.3 Galileo release (June 2009)]]
 +
** [[MDT_1.1_New_and_Noteworthy#Object_Constraint_Language (OCL) Component|1.2.0 Ganymede release (June 2008)]]
 +
** [[MDT_1.0_New_and_Noteworthy#Object Constraint Language (OCL) Component|1.1.0 Europa release (June 2007)]]
  
* [http://help.eclipse.org/ Eclipse Help Center] Current documentation
 
** [http://help.eclipse.org/helios/nav/40 Helios OCL Developer Guide]
 
 
* [http://www.eclipse.org/modeling/mdt/javadoc/#ocl Javadoc] API Reference
 
* [http://www.eclipse.org/modeling/mdt/javadoc/#ocl Javadoc] API Reference
* [[MDT/OCL/Articles|Articles and Presentations]]
+
* [[OCL/Articles|Articles and Presentations]]
* [[MDT/OCL/FAQ|Frequently Asked Questions]]
+
* [[OCL/FAQ|Frequently Asked Questions]]
  
== Releases and Development ==
+
== Example Code ==
  
=== Planning ===
+
* [[CustomizingOclEnvironments | Customizing OCL Environments]]
 +
* [[StereotypeOCLwithEcore | Evaluating Stereotype Constraints using the Ecore Environment]]
 +
* [[OCLSnippets | OCL Snippets]]
  
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan_indigo.xml&component=OCL Indigo Draft Plan]
+
== Releases and Development ==
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan_helios.xml&component=OCL Helios Draft Plan]
+
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan.xml&component=OCL Galileo Draft Plan]
+
* [http://www.eclipse.org/modeling/mdt/ocl/docs/ocl_project_plan_1_2.html R1.2 Draft Plan]
+
* [http://www.eclipse.org/modeling/mdt/ocl/docs/ocl_project_plan_1_1.html R1.1 Draft Plan]
+
* [[MDT/OCL/CVS2GIT|Post-Indigo Migration from CVS to GIT]]
+
  
* [[MDT/OCL/Debugger|Evaluator + Console ideas]]
+
You may want to check the [[OCL/New_and_Noteworthy|New and Noteworthy]] features of the Eclipse OCL releases.
  
=== API Changes ===
+
=== Planning ===
* [[MDT/OCL_3.0.0_API_Changes| API Changes]] made in the Helios MDT/OCL release.
+
* [[MDT/OCL_3.1.0_API_Changes| API Changes]] made in the Indigo MDT/OCL release.
+
  
=== Retention Policy ===
+
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan_luna.xml&component=Eclipse OCL 5.0/3.4 Luna Draft Plan]
MDT/OCL doesn't have any special project-specific API retention policy, so it follows the general [[Eclipse/API_Central/Deprecation_Policy | Eclipse Project guidelines on API deprecation and removal]]
+
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan_kepler.xml&component=Eclipse OCL 4.1/3.3 Kepler Plan]
 +
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan_juno.xml&component=Eclipse OCL 4.0/3.2 Juno Plan]
 +
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan_indigo.xml&component=Eclipse OCL 3.1 Indigo Plan]
 +
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan_helios.xml&component=Eclipse OCL 3.0 Helios Plan]
 +
* [http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/modeling/mdt/ocl/project-info/plan.xml&component=Eclipse OCL 1.3 Galileo Plan]
 +
* [http://www.eclipse.org/modeling/mdt/ocl/docs/ocl_project_plan_1_2.html R1.2 Plan]
 +
* [http://www.eclipse.org/modeling/mdt/ocl/docs/ocl_project_plan_1_1.html R1.1 Plan]
  
For ZIP file distributions which are downloadable from the [http://www.eclipse.org/modeling/mdt/downloads/?project=ocl project downloads] web page:
+
* [[OCL/Debugger|Evaluator + Console ideas]]
* Formal/Official Release  distributions (including service releases) will be available for as long as the corresponding Eclipse platform is available.
+
* Milestone and Release Candidate distributions which are stable versions preceding a release. After the M3 milestone, the three most recent distributions will be available.
+
* Integration/Interim distributions are used between milestones. When a new milestone distribution appears, integration distributions are removed (the last one is always kept).
+
* Nightly distribution are usually generated from nightly builds for internal purposes. There is no guarantee of any retention.
+
  
For the P2 repositories, the following policy applies:
+
=== API Changes ===
* Formal/Official Release P2 repositories are kept for as long as the corresponding Eclipse platform is available.
+
* [[MDT/OCL_3.0.0_API_Changes| API Changes]] made in the Helios Eclipse OCL release.
** Helios Release P2 repository: http://download.eclipse.org/modeling/mdt/ocl/3_0/updates/
+
* [[MDT/OCL_3.1.0_API_Changes| API Changes]] made in the Indigo Eclipse OCL release.
* The three most recent Milestone and Release Candidate P2 repositories are kept until the Official release arrives.
+
* [[MDT/OCL_Juno_Deprecations| Deprecations]] announced in the Juno Eclipse OCL release.
** Indigo Milestones P2 repository: http://download.eclipse.org/modeling/mdt/ocl/updates/milestones/3.1.0/
+
* [[MDT/OCL_Limitations| Limitations]] of the Ecore/UML bindings and OCL 2.3 compared to the Pivot binding and 'OCL 2.5'.
* We only keep one P2 repository with the last integration build.
+
** Indigo Interim P2 repository: http://download.eclipse.org/modeling/mdt/ocl/updates/interim/3.1.0/
+
* We only keep one P2 repository with the last nightly build.
+
** Indigo Nightly P2 repository: http://download.eclipse.org/modeling/mdt/ocl/updates/nightly/3.1.0/
+
 
+
N.B: This policy has been created the 24th, December, 2010. Last update: the 12th, January, 2011.
+
  
 
=== Architecture ===
 
=== Architecture ===
  
* [[MDT/OCL/1.X_Architecture|MDT/OCL 1.X Architecture]]
+
* [[MDT/OCL/Plugins_and_Features|Eclipse OCL Plugins and Features]]
* [[MDT/OCL/4.X_Architecture|MDT/OCL 4.X Architecture]]
+
* [[MDT/OCL/1.X_Architecture|Eclipse OCL 1.X Architecture]]
 +
* [[MDT/OCL/4.X_Architecture|Eclipse OCL 4.X Architecture]]
  
 
The remainder of this section has links to pages of interest primarily to those developing
 
The remainder of this section has links to pages of interest primarily to those developing
Line 95: Line 97:
 
=== Development Environment ===
 
=== Development Environment ===
  
* [[MDT/OCL/Dev/Setup|Team Standard Settings and Procedures]]
+
* [[OCL/Dev/Setup|Team Standard Settings and Procedures]]
  
 
=== Release Engineering ===
 
=== Release Engineering ===
  
* [[MDT/OCL/Dev/Releng/Cheatsheet| How to Make and Publish Builds Using Athena CBI (DEPRECATED)]]
+
* [[OCL/Dev/Releng/Buckminster | How to Make and Publish Builds Using Buckminster]]
* [[MDT/OCL/Dev/Releng/Buckminster | How to Make and Publish Builds Using Buckminster]]
+
* [[OCL/Dev/Releng/ReleasesTransition | Transition between releases]]
* [[MDT/OCL/Dev/Releng/P2_Repositories_Organization| P2 Repositories Organization]]
+
* [[OCL/Dev/Releng/Quiet_Week | Quiet week]]
* [[MDT/OCL/Dev/Releng/Features_Organization| Features Organization]]
+
* [[OCL/Dev/Releng/P2_Repositories_Organization| P2 Repositories Organization]]
 +
* [[OCL/Dev/Releng/Features_Organization| Features Organization]]
 +
* [[OCL/Dev/Releng/Issues_Documentation| Issues Documentation]]
  
 
== Related Links ==
 
== Related Links ==

Revision as of 08:17, 26 June 2015

The Eclipse OCL Project provides an implementation of the Object Constraint Language (OCL) OMG standard for EMF-based models.

The Core OCL component provides the following capabilities to support OCL integration:

  • Defines APIs for parsing and evaluating OCL constraints and queries on EMF models.
  • Defines Ecore and UML implementations of the OCL abstract syntax model, including support for serialization of parsed OCL expressions.
  • Provides a Visitor API for analyzing/transforming the AST model of OCL expressions.
  • Provides an extensibility API for clients to customize the parsing and evaluation environments used by the parser.

The Core OCL parser is generated by the LALR Parser Generator, a SourceForge project, licensed under the EPL v1.0. Download it from the LPG home page. This site includes the generator executable required to regenerate the parser code.

The additional OCL Examples and Editors component provides interactive support for OCL:

  • Provides an Interactive OCL Console to evaluate queries on models.
  • Provides an OCLinEcore Xtext editor for OCL embedded in an Ecore meta-model.
  • Provides a CompleteOCL editor for an OCL document complementing a meta-model.
  • Provides an EssentialOCL editor for individual OCL expressions.

The grammars for the Xtext-based editors auto-generate ANTLR parsers. In Eclipse OCL 3.0, the ANTLR parsers are used solely within the editors. As from Eclipse OCL 3.1 the Xtext grammars and parsers provide full evaluation and validation capabilities too. Since the Xtext grammars are associated with a re-engineering to support a model-defined standard library and full OMG compliance, the original LPG parser will be increasingly deprecated.

Downloads and Updates

Eclipse OCL Downloads are available via the Project Downloads page.

Eclipse OCL Updates are available at http://download.eclipse.org/modeling/mdt/ocl/updates and from the Modeling category of the main http://download.eclipse.org/releases/kepler/ Update Site. The OCL End User SDK feature supports OCL in conjunction with Ecore or UML meta-models. The OCL Examples and Editors feature additionally provides an IDE comprising Xtext-based editors, an Interactive Console and Debugger.

Eclipse OCL Repositories and Updates for Milestone, Interim and Nightly builds are described in P2 Repositories Organization and retained in accordance with the Retention Policy.

Eclipse OCL source code is available from git://git.eclipse.org/gitroot/mdt/org.eclipse.ocl.git, http://git.eclipse.org/c/mdt/org.eclipse.ocl.git and github Network. All source projects may be installed by Import...->Team->Team Project Set, then entering http://git.eclipse.org/c/ocl/org.eclipse.ocl.git/plain/releng/org.eclipse.ocl.releng/psfs/ocl-all.psf?h=master as the URL for import. Be patient; the repository clone takes a while, and there are no obvious progress indicators during the third phase while projects are actually created.

Eclipse OCL has Open Bugs and a newsgroup or forum. See the OCL Forum Netiquette

Documentation, Publications and FAQs

Example Code

Releases and Development

You may want to check the New and Noteworthy features of the Eclipse OCL releases.

Planning

API Changes

  • API Changes made in the Helios Eclipse OCL release.
  • API Changes made in the Indigo Eclipse OCL release.
  • Deprecations announced in the Juno Eclipse OCL release.
  • Limitations of the Ecore/UML bindings and OCL 2.3 compared to the Pivot binding and 'OCL 2.5'.

Architecture

The remainder of this section has links to pages of interest primarily to those developing the OCL component.

Development Environment

Release Engineering

Related Links

Back to the top