Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)

712 vues

Publié le

A short presentation of what AQL is and what makes it unique in the world of query languages for models.

Publié dans : Technologie
  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)

  1. 1. ©Copyright2017Obeo A Guided Tour of Eclipse Modeling, Monday, October 23, 2017 ACCELEO QUERY LANGUAGE The small, fast & strong sidekick for your tooling
  2. 2. ©Copyright2017Obeo 18 our Motivation Query language for Sirius
  3. 3. ©Copyright2017Obeo 18 our Motivation Expressions in M2Doc
  4. 4. ©Copyright2017Obeo 18 our Motivation Expressions in Acceleo-MTL
  5. 5. ©Copyright2017Obeo 18 our Motivation Expressions in ALE (Action Language for EMF)
  6. 6. ©Copyright2017Obeo 18  Syntax :  Familiar for any user of OCL  Easily extensible Language = Syntax + Semantic + Tooling + Runtime
  7. 7. ©Copyright2017Obeo 18  Syntax :  Familiar for any user of OCL  Easily extensible  Semantics  Statically typed  Forgiving (null/unsetted values, collections) Language = Syntax + Semantic + Tooling + Runtime
  8. 8. ©Copyright2017Obeo 18  Syntax :  Familiar for any user of OCL  Easily extensible  Semantics  Statically typed  Forgiving (null/unsetted values, collections)  Tooling  Embeddable  Statically typed with rich type inference Language = Syntax + Semantic + Tooling + Runtime
  9. 9. ©Copyright2017Obeo 18  Syntax :  Familiar for any user of OCL  Easily extensible  Semantics  Statically typed  Forgiving (null/unsetted values, collections)  Tooling  Embeddable  Statically typed with rich type inference  Runtime  Fast, small, interpreted Language = Syntax + Semantic + Tooling + Runtime
  10. 10. ©Copyright2017Obeo 18 self.eContainer(uml::Model).eAllContents()->select(a | a.name.startsWith(‘I’))
  11. 11. ©Copyright2017Obeo 18 not exactly OCL  « . » and «   » notation, select()→ ✔ collect() and flatten() are implicit in AQL (you won’t have a List of Sets)  Optional variable denotation ✘ every expression starts with a var name  Sequence, Set, Bag, OrderedSet ✘ Only Lists & Sets, and the order is always stable across executions  Types (uml::Class, family::Person...) ✔ are optional in a lambda ->select(a : family::Person| a.firstName.size > 10) ->select(a | a.firstName.size > 10) ✔ are union types ✔ are infered at validation time ✔ no need for cast
  12. 12. ©Copyright2017Obeo 18 Fast during evaluation, Smart during validation Validation is optional
  13. 13. ©Copyright2017Obeo 18 Fast during evaluation, Smart during validation (*) with Sirius 3.1, October 2015, optimizations happened since then
  14. 14. ©Copyright2017Obeo 18 Consistently Fast during evaluation From „EMF-IncQuery: Blazing-fast reaction time even for very large diagrams (Sirius integration)“ by Ákos Horváth, SiriusCon 2015, Paris
  15. 15. ©Copyright2017Obeo 18 Predicates analysis and union types
  16. 16. ©Copyright2017Obeo 18 Extensible with Java  Included  Operators semantics : ‘Hello’ + self.name  Domain specific services
  17. 17. ©Copyright2017Obeo 18 The Runtime  Dependencies  13K lines of non generated Java code, 21K total (EMF API for AST)  Is not a singleton
  18. 18. ©Copyright2017Obeo 18 How to get it ?  Shipped since 2015 as part of the Acceleo project  Documentation: https://www.eclipse.org/acceleo/documentation/aql.html  Other technologies already using it  Eclipse Sirius  M2doc (to generate .docx files from a model)  ALE (Action Language for EMF)

×