Acceleo 2.6 User Guide

Embed Size (px)

Citation preview

  • 7/27/2019 Acceleo 2.6 User Guide

    1/79

  • 7/27/2019 Acceleo 2.6 User Guide

    2/79

    ACCELEO

    User Guide

    This handbook is the exclusive ownership of its authors and was conceded to the profit of Obeo SARL. Thishandbook is protected by intellectual ownership rights.

    It deals with a software product called A!L!O" currently distributed under the open source !clipse #ublicLicense $!#L%. The distribution of this handbook is however not free.

    This handbook &akes it possible to fully take advantage of the &any advanced functionalities of A!L!Osoftware and re'uired on behalf of its authors and of O(!O an i&portant co&pilation and synthesis work" aswell as conse'uent financial and ti&e invest&ents. )evertheless" there &ay still be &istakes left in thisdocu&ent" O(!O shall not be held responsible for any resulting inconvenience. A!L!O as well as the

    content of this docu&ent &ay be altered without prior notice.This document is not under Free license. This docu&ent can be downloaded without any fee fro& theO(!O website after proper registering. *ou &ay read and use it for any activity" co&&ercial or not" relatedto A!L!O. *et per&ission of copying" translating or distributing freely or co&&ercially this &anual issub+ect to prior approval by O(!O.

    ,,,,,,,,,,,,,,,,,,,,

    -O(!O" -A!L!O" as well as O(!O and A!L!O logos are registered trade&arks of Obeo in /ranceand in other countries.

    All other na&es" titles" drawings" and logos are the exclusive ownership of their authors and are protected byintellectual ownership rights.

    This handbook was written with the following tools0 OpenOffice

    ,,,,,,,,,,,,,,,,,,,,

    Authors0 1onathan 23SS!T" 4tienne 13LIOT" St5phane LARA2#!

    6ith the participation of0 7oulwen L! /3R" 1ulien 83#O)T" 7uillau&e RAI2(A3LT" )athalie L!#I)!"6illia& #I!RS" 5dric (R3)" Laurent 7O3(!T" *van L3SSA38 and /reddy ALLILAIR!.

    opyright 9::;

  • 7/27/2019 Acceleo 2.6 User Guide

    3/79

    Summary

    1 - Introduction ....................................................................................................................... 1

    2 - Installation .........................................................................................................................2

    2.1 - Pre-Requirements ..................................................................................................... 2

    2.1.1 - Hardware requirements ......................................................................................2

    2.1.2 - Oeratin! "#stem ...............................................................................................2

    2.1.$ - "o%tware Requirements ......................................................................................$

    2.1.& - Otimi'ation ....................................................................................................... $

    2.2 - Installation Usin! t(e Udate "ite ............................................................................. $

    2.$ - Installation %rom t(e Arc(i)e ......................................................................................*

    2.& - Installation o% t(e +undle ........................................................................................... *

    2.* - ,ownload t(e "ource Code ......................................................................................

    2. - C(ecin! t(e Installation ...........................................................................................

    $ - /eta-/odelin! .................................................................................................................. 0

    $.1 - ,e%inition ....................................................................................................................0

    $.2 - /O ...........................................................................................................................0

    $.$ - /I............................................................................................................................ 3

    $.& - E/ ........................................................................................................................... 3

    $.* - U/L ........................................................................................................................... 4$. - Ot(er /eta-/odels ....................................................................................................4

    & - rom /odelin! to Code Generation ............................................................................... 11

    &.1 - Comati5ilit# ............................................................................................................11

    &.1.1 - /odelers and Acceleo ......................................................................................11

    &.1.2 - /I Comati5ilit# ............................................................................................. 11

    &.1.$ - Comati5ilit# C(art ...........................................................................................12

    &.1.& - /odels ..............................................................................................................12

    &.1.&.1 - E/ ...........................................................................................................12&.1.&.2 - U/L2 .........................................................................................................1$

    &.1.&.$ - U/L1$ .......................................................................................................1&

    &.1.&.& - U/L1& .......................................................................................................1&

    &.2 - Re%lecti)e Editor ...................................................................................................... 1&

    &.$ - 6(e Arc(itecture o% Acceleo .................................................................................... 27

    * - Generation /odules ....................................................................................................... 21

    *.1 - ,e%inition ..................................................................................................................21

    *.2 - Creatin! a Generation Pro8ect .................................................................................21

    *.$ - Creatin! a Generation 6emlate .............................................................................2$

  • 7/27/2019 Acceleo 2.6 User Guide

    4/79

    *.& - Udatin! Generation /odels ...................................................................................2&

    *.&.1 - Or!ani'ation .....................................................................................................2*

    *.&.2 - +ottom-U ........................................................................................................ 2*

    *.&.$ - 6#es o% iles in a /odule ...............................................................................2

    *.&.& - Incremental Generation ....................................................................................2

    *.&.* - ,e5u!!in! and trace ........................................................................................20

    *.&.*.1 - ,e5u!!in! .................................................................................................20

    *.&.*.2 - 6race .........................................................................................................24

    *.&.*.$ - Pro%ilin! .....................................................................................................$7

    *.&. - 6(e 6emlate Editor .........................................................................................$1

    *.&..1 - "#nta9 Colorin! .........................................................................................$2

    *.&..2 - Auto comletion ........................................................................................ $2

    *.&..$ - Error ,etection ..........................................................................................$$*.&..& - :a)i!ation Ease ........................................................................................$&

    *.* - "#nta9 Elements ......................................................................................................$*

    *.*.1 - +asic Concets ................................................................................................ $*

    *.*.2 - Alternate "#nta9 ;<

  • 7/27/2019 Acceleo 2.6 User Guide

    5/79

    *..2 - i%> %or and scrit 5e(a)ior ..................................................................................*7

    *..2.1 - Common concerns ....................................................................................*7

    *..2.2 - or ta! 5e(a)ior ........................................................................................*1

    *..$ - "crits arameters ...........................................................................................*$

    *..$.1 - 6(e ?ost? attri5ute ................................................................................... *$

    *..$.2 - 6(e trim@ ser)ice ......................................................................................*$

    *..$.$ - 6(e indent6a5@ and indent"ace@ ser)ices ........................................... *&

    *..& - Conclusion ........................................................................................................**

    - E9ecution C(ains ............................................................................................................*

    .1 - Presentation ............................................................................................................ *

    .2 - Creatin! a C(ain ......................................................................................................*

    .$ - Resource Parameters ..............................................................................................*3

    .& - Action Parameters ...................................................................................................*4.* - E9ecution .................................................................................................................2

    0 - E9ort a !enerator as an Eclise Plu!-in ......................................................................&

    0.1.1 - Generator settin!s ............................................................................................&

    0.2 - E9ort t(e !enerator ................................................................................................*

    0.$ - "ettin!s %or t(e /odule Launc(er ........................................................................... 0

    3 - E9ort a !enerator module outside o% Eclise ................................................................01

    3.1 - E9ort a module as an RCP @Ric( Client Plat%orm roduct ...................................01

    3.2 - E9ort a module as a Ba)a standalone alication @e9erimental ........................02

  • 7/27/2019 Acceleo 2.6 User Guide

    6/79

    Acceleo 2. User Guide

    #age >?@

    1 - In t roduct ion

    6(is document is a detailed resentation o% t(e oen source code !enerator Acceleo> created 5# O5eo.

    Acceleo is desi!ned %or eole willin! to ro%it %rom /,A tec(nolo!ies to increase t(eir so%twarede)eloment roducti)it#. It allows t(e !eneration o% %iles usin! U/L> /O> and E/ modules.

    6(is lu!-in %eatures

    Comlete inte!ration wit( 5ot( t(e Eclise en)ironment and t(e E/ %ramewor

    CodeDmodel "#nc(roni'ation

    Incremental !eneration

    "moot( adatation %or an# industrial ro8ects

    Ease o% udate and mana!ement o% temlates

    "#nta9 colorin!> auto-comletion and error detection

    /inimum nowled!e required

    6(e resent !uide does not intend to ro)ide a trainin! course %or all o% t(e issues addressed 5# t(e /,A orAcceleo. 6(is !uide assumes t(e readers (as some nowled!e in t(e %ields o%

    Ba)a

    modelin! @%or e9amle U/L

    Eclise

    nowled!e o% t(e %ollowin! concets would also 5e an ad)anta!e> 5ut none is essential %or t(eunderstandin! o% t(is document

    meta-models

    U/L2 meta-model

    de)eloment o% Eclise Plu!-Ins

    /,A or /,,

  • 7/27/2019 Acceleo 2.6 User Guide

    7/79

    Acceleo 2. User Guide

    #age 9?@

    2 - Ins ta l la t ion

    Acceleo is an oen source ro8ect> licensed under t(e Eclise Pu5lic License @EPL> it can 5e downloadedand used %ree o% c(ar!e.

    6(e %irst ste in installin! Acceleo is t(en to download and install t(e Eclise lat%orm alon! wit( E/. It ist(en ossi5le to download and install Acceleo.

    Acceleo can 5e installed in a num5er o% distinct wa#s. Eac( is seci%ic to t(e manner #our Eclise lat%orm(as 5een installed.

    6(is c(ater will detail some o% t(ese rocedures.6(e recommended installation met(od is to mae use o% t(e %ollowin! udate site (ttDDwww.acceleo.or!DudateD.

    2.1 - Pre-Requirements

    2.1.1 - Hardware requirements

    Acceleo requires a standard de)eloment con%i!uration to ensure t(e 5est user e9erience

    CPU F 1G('

    *12 /+ o% RA/ memor#

    /+ o% a)aila5le dis sace @does not include Eclise requirement

    Acceleo is !uaranteed to wor on all PC-t#e comuters on w(ic( Eclise itsel% can 5e used.

    :o !uarantee can 5e o%%ered %or ot(er oeratin! en)ironments. Howe)er> t(e user communit# (as reortedAcceleo to 5e usa5le on PowerPC and Ale /AC comuter arc(itectures.

    2.1.2 - Oeratin! "#stem

    In its current )ersion> Acceleo is comati5le wit(

    indows ista

    indows P

    indows 2777

    indows "er)er 277$

    indows 43

    Linu9

    /oreo)er> Acceleo can otentiall# 5e used on eac( s#stem ermittin! t(e e9ecution o% Ba)a and Eclise>t(ou!( t(is can not 5e !uaranteed.

    http://www.acceleo.org/update/http://www.acceleo.org/update/
  • 7/27/2019 Acceleo 2.6 User Guide

    8/79

    Acceleo 2. User Guide

    #age B?@

    2.1.$ - "o%tware Requirements

    Acceleo requires t(e rior installation o% a Ba)a )irtual mac(ine to oerate.

    Acceleo is comati5le wit( Ba)a )ersions 1.& and 5e#ond. 6(e latest )ersion o% Ba)a can alwa#s 5e

    downloaded %rom t(e %ollowin! we5site (ttDDwww.8a)a.com.

    Acceleo also requires t(e %ollowin! so%tware to oerate

    Eclise $.2 and 5e#ond

    ,escrition ,e)eloment lat%orm

    URL (ttDDdownload.eclise.or!DecliseDdownloadsD

    E/ 2.2 @or 5e#ond i% #ou use a more recent Eclise

    ,escrition /odel maniulation %ramewor

    URL (ttDDwww.eclise.or!Dmodelin!Dem%DdownloadsDro8ectJem%

    It is also ossi5le to download Eclise e5 6ool Plat%orm @6P> w(ic( %eatures Eclise as well as a set o%lu!-ins allowin! t(e creation o% e5 alications and comonents %or alication ser)ers. 6(e installation o%E/ is still required wit( Eclise 6P.

    6(e latest )ersion o% Eclise 6P is a)aila5le %or download at t(e %ollowin! URL (ttDDdownload.eclise.or!Dwe5toolsDdownloadsD .

    2.1.& - Otimi'ation

    "e)eral settin!s can 5e tweaed to in%luence t(e e9ecution seed o% Acceleo

    1 /odi%# t(e amount o% memor# allocated %or Eclise Oen t(e Keclise.ini %ile %ound in t(e Ecliseinstallation director# and c(an!e t(e )alue o% t(e arameter Km9 to increase t(e ma9imum memor#allocated to Eclise.T(is arameter can also 5e altered 5# addin! t(is otion to t(e command used to launc( Eclise ?-)mar!s -ms123m -m9*12m?

    2 The newer the java version, the faster it runs; thus java 1.6 (or newer) will be faster than java 1.4.-Acceleo maes use o% t(e same B/ t(at is launc(ed alon! wit( Eclise. I% se)eral B/s areinstalled on a !i)en comuter> it is imortant to seci%# w(ic( one s(ould 5e used 5# eit(ercon%i!urin! t(e Oeratin! "#stem or usin! t(e otion ?-)m? in t(e command used to launc( Eclise

    @-)m at(MtoM8reD5inD8a)a.

    - I% a !eneration is too lon!> usin! t(e ?ser)er? otion in t(e B/ arameters will 5oast 5etterer%ormance. 6(is otion !i)es recedence to calculation seed o)er t(e !ra(ic inter%aceNs reactionseed.

    $ it( lar!e inut models> t(e amount o% a)aila5le RA/ will 5e t(e most imortant seed modi%ier.(en t(e comle9it# comes %rom t(e temlates> rocessor seed is determinant.

    2.2 - Installation Usin! t(e Udate "ite

    6(is installation met(od is recommended. It requires Eclise to 5e alread# installed on t(e userNs

    worstation.

    Install Eclise wit( all o% Acceleo requirements @E/> ...

    http://www.java.com/http://www.java.com/http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.2.2/R200702131851/emf-sdo-xsd-SDK-2.2.2.ziphttp://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/http://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/http://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/http://www.java.com/http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.2.2/R200702131851/emf-sdo-xsd-SDK-2.2.2.ziphttp://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/http://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/
  • 7/27/2019 Acceleo 2.6 User Guide

    9/79

    Acceleo 2. User Guide

    #age ?@

    Launc( Eclise

    Oen t(e Hel -F "o%tware Udates -F ind and Install... menu.

    "elect ?"earc( %or new %eatures to install?.

    "elect ?:ew Remote "ite...?

    ill in t(e %ollowin! in%ormation

    :ame Acceleo

    URL (ttDDwww.acceleo.or!Dudate

    http://www.acceleo.org/updatehttp://www.acceleo.org/updatehttp://www.acceleo.org/update
  • 7/27/2019 Acceleo 2.6 User Guide

    10/79

    Acceleo 2. User Guide

    #age C?@

    "elect Acceleo %rom t(e list and clic ?inis(?

    "elect t(e latest )ersion and install it.

    alidate t(e installation o% all t(e lu!-ins.

    Restart Eclise.

    2.$ - Installation %rom t(e Arc(i)e

    6(is installation met(od is use%ul w(en inte!ratin! Acceleo into an e9istin! distri5ution aca!e o% Eclise.

    /ae sure t(at a %unctional Eclise installation wit( all o% Acceleo requirements is a)aila5le.

    ,ownload t(e Acceleo 'i %ile %rom (ttDDwww.acceleo.or!Da!esDtelec(ar!ement-acceleoDen

    Un'i t(is %ile %rom wit(in an e9istin! Eclise installation @t(e arc(i)e s(ould alread# include an Eclisedirector#.

    C(ec t(at all t(e lu!-ins (a)e 5een un'ied in t(e ?at(MtoMecliseDlu!-ins? director# and t(e%eatures in t(e ?at(MtoMecliseD%eatures? director#.

    In t(e con%i!uration director# o% Eclise @at(MtoMecliseDcon%i!uration> delete all t(e %iles e9cet %or?con%i!.ini? and t(e ?.settin!s? director#.

    Launc( @or restart Eclise.

    2.& - Installation o% t(e +undle

    6(is installation met(od is t(e recommended c(oice %or a quic imlementation.

    O5eo ro)ides comlete read# and re-con%i!ured Eclise distri5utions. 6(ese use t(e Eclise lu!-ins t(atare 5est adated %or industrial uses> and t(e lu!-ins t(at wor 5est wit( Acceleo.

    http://www.acceleo.org/pages/telechargement-acceleo/enhttp://www.acceleo.org/pages/telechargement-acceleo/en
  • 7/27/2019 Acceleo 2.6 User Guide

    11/79

    Acceleo 2. User Guide

    #age ;?@

    ,ownload t(e 5undle %rom t(e we5site (ttDDwww.acceleo.or!Da!esDdownload-5undleDen or use t(e5undle located on t(e O5eo installation C,.

    Un'i t(e %ile

    Launc( Eclise

    2.* - ,ownload t(e "ource Code

    "ince Acceleo is an Oen "ource so%tware> its source code is made u5licl# a)aila5le under t(e EPL.

    6(e source code is accessi5le on ": as descri5ed on t(e we5site(ttDDwww.acceleo.or!D.

    Consultin! t(e source code will ena5le t(e user to

    Understand Acceleos internal routines

    Get in)ol)ed in Acceleo de)eloers communit#

    Hel in tracin! AcceleoNs %unctionalities

    2. - C(ecin! t(e Installation

    Here is t(e list o% all t(e Acceleo lu!-ins t(at s(ould 5e resent wit(in #our eclise installation

    http://www.acceleo.org/pages/download-bundle/enhttp://www.acceleo.org/http://www.acceleo.org/http://www.acceleo.org/http://www.acceleo.org/pages/download-bundle/enhttp://www.acceleo.org/
  • 7/27/2019 Acceleo 2.6 User Guide

    12/79

    Acceleo 2. User Guide

    #age @?@

    $ - /eta-/odel in!

    $.1 - ,e%inition

    A model is an a5stract reresentation o% realit#. It is used to sc(ematicall# reresent art o% t(e concets o% aro!ram> in order to allow %or a 5etter understandin! o% t(e wa# t(e arc(itecture wors.

    6o understand w(at is contained in a model as well as t(e in%ormation t(at it s(ould reresent> it isnecessar# to %irst a!ree on t(e de%inition o% its content. 6(is is t(e wor t(at is re%erred to w(en usin! t(eterm ?meta-modelin!?.

    A meta-model is t(us t(e model o% a model.

    6o illustrate t(ese concets> it is ossi5le to 5uild an ima!ed )ersion o% t(is aroac( 5# usin! t(e e9amleo% a road ma. A road ma is a model it is a reresentation o% realit#> a sc(ematic reresentation o% t(e roadnetwor> w(ic( is real. Its urose is to allow someone to 5etter understand (ow it wors> so t(at (e or s(ewonNt !et lost.

    6(e le!end o% a road ma is crucial %or its understandin!. 6(e le!end can 5e considered as t(e meta-model%or t(is ma. It de%ines t(e elements t(at are reresented on t(e ma. it(out t(e le!end> it is imossi5le tounderstand t(e ma. O% course> we seldom loo at t(e le!end 5ecause we are used to readin! mas o% t(ist#e> all (a)in! t(e same le!end. 6(e# all use t(e same semantics.

    In order to allow a certain consistenc# 5etween mas> all le!ends are concei)ed on t(e same model onecolor J one c(aracteristic. It t(us 5ecomes simle to mo)e %rom one ma to anot(er. 6(e same met(od isused in desi!nin! so%tware> to s(are t(e same %ormal descrition o% a meta-model> t(rou!( t(e notion o%/O meta-meta-models.

    $.2 - /O

    /eta-modelin! is a )ast domain> t(ere are countless wa#s to reresent concets in an a5stract manner. Int(e same wa#> it is ossi5le to mae an in%inite )ariet# o% mas resentin! di%%erent in%ormation @cit#> roads>relie%> ... on t(e countr# o% rance> %or e9amle.

    Illustration >0 !xa&ple of a &odel and of its&eta&odel

  • 7/27/2019 Acceleo 2.6 User Guide

    13/79

    Acceleo 2. User Guide

    #age =?@

    /eta-modelin! tec(nolo!ies (a)e 5een %ormali'ed 5# t(e O58ect /ana!ement Grou or O/G. 6(isstandardi'ation is well reco!ni'ed toda# it is mainl# nown as t(e K/O @/eta O58ect acilit# standard.

    /O allows descrition o% all t#es o% meta-models> usin! a limited )oca5ular#. 6(at is w(# t(e O/G de%inesit amon! t(e cate!or# o% meta-meta-models> or into t(e Kmeta-model reositor#.

    $.$ - /I

    6(e /I %ormat (as 5een de)eloed in order to allow t(e seriali'ation o% models and meta-models in a(#sical %ormat. As its name su!!ests> /I uses t(e /L s#nta9> a ta!-5ased s#nta9.

    /I is t(us emlo#ed to ermit interoera5ilit# in t(e e9c(an!e o% models 5etween En!ineerin! wors(oso%tware> re)erse en!ineerin! and rationali'ation tools suc( as Acceleo.

    inall#> it is imortant to note t(at a !i)en meta-model )ersion can 5e seriali'ed in se)eral di%%erent /I)ersions.

    $.& - E/

    E/ @Eclise /odelin! ramewor was de)eloed to simli%# t(e loadin!> (andlin! and stora!e o% modelswit(in t(e Eclise en)ironment.

    E/ is not seci%ic to a meta-model> t(us it ma# (andle all t#es o% models.

    It is 5ased on a standard o% meta-model descrition named KEcore. 6(is standard is a su5set o% t(e E/Ostandard @Essential /O> w(ic( in turn is a su5set o% /O2.

    Illustration 90 Overview of 2O/ >. concepts

  • 7/27/2019 Acceleo 2.6 User Guide

    14/79

    Acceleo 2. User Guide

    #age D?@

    $.* - U/L

    E)en i% eole donNt alwa#s reali'e it> t(e most commonl# used meta-model is U/L. Indeed> U/L is t(emodelin! lan!ua!e t(at is t(e most widel# used toda#. U/L (as its own meta-model. or e9amle> U/Lallows t(e reresentation o% class dia!rams wit( attri5utes> met(ods and relations(is. It is t(e U/L meta-model t(at de%ines t(e %act t(at a class ma# ossess attri5utes and relations(isQ

    U/L is %itted to reresent a !ood num5er o% concets> mostl# in an in%ormal wa#> #et it is not necessaril# t(e5est lan!ua!e to reresent e)er#t(in!. or t(at reason> we ma# (a)e to de%ine new meta-models allowin! amore %ormal )ision o% realit#. As a concrete e9amle> t(e electronics industr# models comle9 s#stems suc(as microrocessors usin! its own standards.

    Illustration 3: Part of the UML 2.0 Meta-model

    $. - Ot(er /eta-/odels

    U/L is o%ten used as an e9amle 5ecause it is t(e 5est nown meta-model> 5ut it is not t(e onl# one. "omeot(ers include /erise> "A,6> ,6,> "PE/> ...

    Remem5er /odel U/L

    U/L is not a standard t(at is well adated to accomlis( all t#es o% tass. It is ossi5le to e9tend its ran!e5# usin! U/L ro%iles and t(e concet o% stereot#es> 5ut t(is ractice reac(es its limits as soon as we !ettoo %ar %rom t(e ori!inal )ocation o% t(e U/L elements. ,edicated meta-models can t(ere%ore 5e created tomeet seci%ic needs. 6(ese are called ,"L @,omain "eci%ic Lan!ua!e.

    As ,"Ls 5ecome more widel# used> t(e de)eloment o% new meta-models s(ould 5ecome 5etter understoodand more common.

    6o de)elo a meta-model> t(e %ollowin! stes are %ollowed

    8ifferent declensions of a &eta

  • 7/27/2019 Acceleo 2.6 User Guide

    15/79

    Acceleo 2. User Guide

    #age >:?@

    ,e%inin! t(e concets t(at s(ould 5e modeled and t(e 5est wa# o% doin! it

    Reresentin! t(ese concets in t(e %orm o% /O or E/ dia!rams

    6(e di%%iculties in(erent to meta-modelin! are

    ,i%%icult# in %i!urin! out t(e 5est wa# to reresent a concet. 6(is tas necessitates a )aste9erience and (indsi!(t %rom t(e domain 5ein! treated.

    ,i%%icult# in masterin! t(e concets 5ein! modeled. Eac( new a5stract concet is a new elementto 5e learned %or t(e readers and users o% t(e resultin! models.

    /odelers %or /eta-models are seldom and oorl# understood toda#.

    Acceleo (as 5een desi!ned to wor at t(e meta-le)el. It accets an# t#e o% model as its inut> e)en t(ose5ased on rorietar# meta-models.

  • 7/27/2019 Acceleo 2.6 User Guide

    16/79

    Acceleo 2. User Guide

    #age >>?@

    & - rom /odel in! to Code Generat ion

    Code !enerators are so%twares aimed at t(e !eneration o% code %rom inut models. 6(e# allow t(e e%%icientrationali'ation o% t(e so%tware de)elomentNs roduction (ase.

    6(e# are )er# use%ul %or e9loitin! t(e contents o% a model. it( t(em> models desi!ned 5# 5usinesssecialists can 5e carried %rom t(e simle documentation sta!e all t(e wa# t(rou!( to t(e roducti)e modelsta!e.

    &.1 - Comati5ilit#

    &.1.1 - /odelers and Acceleo

    6(e models roduced 5# numerous modelers are comati5le wit( Acceleo 5ecause o% its use o% standardand oen %ormats.

    Acceleo is nati)el# 5ased on E/> and is t(us directl# comati5le wit( tools created around t(is %ramewor.E9amles include R"/> 6o!et(er> and Omondo. :ot all modelers are inte!rated wit( Eclise> 5ut most o%t(em o%%er an /I-t#e e9ort %unction to ensure comati5ilit# wit( ot(er tools.

    Acceleo (as 5een success%ull# tested wit( e9ort tools usin! models U/L 1.& wit( /I 1.9 Poseidon>O58ecteerin!> "ar9> Ar!oU/L> etc.

    &.1.2 - /I Comati5ilit#

    6(e /I %ormat e9ists in se)eral )ersions w(ic( are not inter-comati5le> and w(ic( use two di%%erentdialects /O and E/.

    +ecause Acceleo is 5ased on E/> t(e /I )ersion 2.7 %ormat is directl# suorted.

    +ut 5ecause E/ cannot wor wit( %iles in t(e /I 1.9 %ormat> a 5rid!e was de)eloed wit(in Acceleo toena5le t(e imort %rom a wider ran!e o% modelers.

    6(is 5rid!e is 5ased on t(e /,R %ramewor @/eta ,ata Reositor# w(ic( sran! %rom t(e :et+eans ro8ect

    @(ttDDmdr.net5eans.or! . A con)ersion is t(us e9ecuted at t(e meta-le)el> ermittin!> %or e9amle> t(econ)ersion o% a U/L 1.& D /I 1.2 model into a U/L 1.& D /I 2.7 model> w(ic( is can 5e directl# interreted5# E/. 6(e 5rid!e can also 5e alied to U/L 1.$ models.

    Acceleo is also nati)el# comati5le wit( t(e %ollowin! com5ination o% standards

    XMI \ UML 1.3 1.4 2.0

    1.1 #es #es -

    1.2 #es #es -

    2.7 - - #es

    http://mdr.netbeans.org/http://mdr.netbeans.org/
  • 7/27/2019 Acceleo 2.6 User Guide

    17/79

    Acceleo 2. User Guide

    #age >9?@

    &.1.$ - Comati5ilit# C(art

    Acceleo (as 5een )alidated wit( t(e AGLs in t(e %ollowin! c(art. 6(e list is not e9(austi)e.

    Modeler Version Compti!le

    Rational "o%tware /odeler D R"A .7 #es

    Rational Rose 2771 #es

    6o!et(er 277 #es

    O58ecteerin! - #es

    "ar9 Enterrise Arc(itect - #es

    Poseidon $.1 D $.2 #esOmondo 2.1 minimum

    Ar!oU/L 7.27 #es

    6oCased 7.37 #es

    G/ 1.7 #es

    6(e rocedure is alwa#s t(e same eit(er t(e model is inte!rated wit( EcliseDE/> and Acceleo can directl#use t(e /I %iles> or else t(e modeler is e9ternal and in t(is case it is necessar# to roceed usin! an /Ie9ort rocess> and t(en an E/ con)ersion @a tas w(ic( is automated 5# Acceleo.

    &.1.& - /odels

    .>..> < !2/

    Acceleo is 5ased on E/. All t(e models created wit(in t(is %ramewor can 5e entr# oints %or Acceleo.

    6(e !enerator o%%ers a rocedure to create E/ meta-models more raidl#. 6(e ?/etamodel Pro8ect? wi'ard(els in t(e creation o% a new E/ meta-model ro8ect wit( a new Kecore %ile. 6(is %ile contains t(e set o%in%ormation concernin! t(e meta-model> in an /I-comati5le %ormat. /odels 5ased uon t(is meta-modelwill all in turn 5e comati5le wit( Acceleo.

  • 7/27/2019 Acceleo 2.6 User Guide

    18/79

    Acceleo 2. User Guide

    #age >B?@

    A conte9tual Acceleo menu is a)aila5le t(rou!( a ri!(t-clic on t(e KEcore %iles. 6(is menu tr# and %ills in t(elac o% simlicit# o% t(e E/ en)ironment. It seeds u t(e rocess o% desi!nin! new meta-models wit(out!ettin! into t(e comle9 %ramewor details.

    6(is menu allows t(e user to launc( a de%ault !eneration o% t(e E/ elements necessar# to t(e (andlin! o%

    models and meta-models. Generate Code Generation o% Ba)a model (andlin! classes.

    Generate Editor Generation o% t(e E/ editor to test t(e instantiation o% t(e meta-model.

    6(e creation o% a KBar %ile is necessar# w(en instances o% t(e model are to 5e used in t(e same Eclise

    instance. Indeed> E/ !enerates a lu!-in %or eac( KEcore. 6(ese lu!-in must 5e launc(ed in a newen)ironment to 5e reco!ni'ed.

    6(is is an imortant constraint to t(e rocess o% desi!nin! a meta-modelD!enerator air. 6(at is w(# Acceleo(as 5een desi!ned to (andle on t(e %l#> in t(e same Eclise> models created wit( t(e KEcore %ile t(at is int(e rocess o% 5ein! de%ined. 6(e onl# two constraints are t(e necessit# o% lacin! t(e model occurrences ina director# alon! wit( t(e KEcore meta-model @in t(e same ro8ect and to s#stematicall# recreate t(e KBar%ile corresondin! to t(e E/ elements @?Create Bar? item a%ter eac( modi%ication is made to t(e meta-modelS.

    .>..9 < 32L9

    Amon! t(e a)aila5le meta-models> t(e most widel# sread is ro5a5l# U/L2> w(ic( is t(e meta-model o% allt(e U/L 2.7 models under Eclise. 6(is meta-model is a)aila5le as a lu!-in aca!e> containin! t(e set o%E/ classes and a small inte!rated editor.

  • 7/27/2019 Acceleo 2.6 User Guide

    19/79

    Acceleo 2. User Guide

    #age >?@

    U/L2 models are comati5le wit( Acceleo. 6(e meta-model URI t(at allows t(e reco!nition o% t(ese modelsin Eclise $.1 is (ttDDwww.eclise.or!Duml2D1.7.7DU/L. or Eclise $.2 and newer> t(is URI is(ttDDwww.eclise.or!Duml2D2.7.7DU/L. /ore and more inte!rated modelers are nati)el# comati5le wit(U/L2 R"/> 6o!et(er> Omondo...

    .>..B < 32L>B

    /I %iles e9orted 5# e9ternal modelers are not alwa#s comati5le wit( E/ tools. 6(at is w(# a U/L1.$meta-model (as 5een de%ined wit(in E/ %or Acceleo.

    U/L1.$ e9orts 5# modelers not 5ased on E/ are comati5le t(ans to t(e con)erter sulied wit(Acceleo. 6(is con)erter is 5ased on t(e /,R %ramewor and can also 5e used indeendentl# o% Acceleo.

    An /I %ile reresentin! an e9orted U/L1.$ model can 5e con)erted into a U/L1.$ model %or E/. Inorder to do t(is> it is necessar# to ri!(t-clic once on t(e e9orted %ile and launc( ?Con)ert to E/?. A new%ile wit( t(e e9tension Kuml1$ is created alon!side t(e selected %ile.

    .>.. < 32L>

    U/L1.& e9orted 5# modelers not 5ased on E/ are comati5le t(ans to t(e con)erter sulied wit(Acceleo.

    An /I %ile reresentin! an e9orted U/L1.& model can 5e con)erted into a U/L1.& model %or E/. Inorder to do t(is> it is necessar# to ri!(t-clic once on t(e e9orted %ile and launc( ?Con)ert to E/?. A new%ile wit( t(e e9tension Kuml1& is created alon!side t(e selected %ile.

    6(e Acceleo con)erter wors %or 5ot( U/L 1.$ and U/L 1.&> 5ut it could 5e adated %or ot(er meta-models>5# means o% seci%ic de)eloments.

    &.2 - Re%lecti)e Editor

    6(e re%lecti)e editor is a wa# o% )isuali'in! t(e models roduced 5# standard modelin! tools.6(is editor is a seciali'ation o% t(e 5asic editor sulied wit( E/. Its !oal is to allow t(e oenin! o% models5ased on all t#es o% meta-models. It er%ectl# inte!rates all t(e ad)anced !eneration %unctions> suc( as real-time )isuali'ation o% t(e !enerated code and t(e a5ilit# to load !enerators.

    6o oen t(e re%lecti)e !enerator

    or a %ile wit( an e9tension reco!ni'ed 5# Eclise as descri5in! an /I

    Ri!(t-clic on an /I %ile -F Oen it( -F Acceleo Re%lecti)e Editor

    http://www.eclipse.org/uml2/1.0.0/UMLhttp://www.eclipse.org/uml2/2.0.0/UMLhttp://www.eclipse.org/uml2/1.0.0/UMLhttp://www.eclipse.org/uml2/2.0.0/UML
  • 7/27/2019 Acceleo 2.6 User Guide

    20/79

    Acceleo 2. User Guide

    #age >C?@

    or all /I %iles> wit( an# e9tension

    Ri!(t-clic on t(e %ile -F Oen As -F Acceleo /I

    6(e )isuali'ation mode t(at was c(osen is a tree-structured mode.

    On t(e one (and it is t(us ossi5le to wor on reall# imortant models wit( (undreds or t(ousands o%o58ects. On t(e ot(er (and> onl# t(e semantics o% t(e elements are disla#ed> indeendentl# o% t(eir )isualreresentation.

  • 7/27/2019 Acceleo 2.6 User Guide

    21/79

    Acceleo 2. User Guide

    #age >;?@

    6(e KProerties )iew is essential %or )iewin! t(e in%ormation set %or t(e model. It can 5e oened 5# ri!(tclicin! on a model element and c(oosin! K"(ow Proerties iew.

    /ost o% t(e ossi5le oerations on t(e oen model can 5e e9ecuted usin! t(e conte9tual menu.

    As an e9amle> t(is menu o%%ers t(e E/ oerations to add eit(er a contained element @:ew C(ild or asi5lin! element @:ew "i5lin! to 5e selected element. 6(e list o% c(oices is> o% course> deendin! on t(emeta-model.

    "i9 Acceleo oerations are also a)aila5le w(en t(e (ierarc(ical )iew is ri!(t cliced.

  • 7/27/2019 Acceleo 2.6 User Guide

    22/79

    Acceleo 2. User Guide

    #age >@?@

    irst o% all> t(ere are t(ree (andlin! oerations %or t(e !enerators

    "elect 6emlate "election o% a !enerator a s#m5ol is added to t(e ossi5le o58ects %or !eneration.

    A dou5le clic on a container can 5e used to e9and all t(e temlates (ierarc(#.

    Reload 6emlate @* Reco)ers t(e last c(an!es made to t(e latest selected !enerator.

    ,elete 6emlate Emties t(e !enerator selection and closes t(e re)iousl# selected !enerator.

    :e9t two are e9ecuta5le oerations %or t(e !enerators.

    Generate iles Launc(es t(e !eneration o% t(e selected temlate on t(e selected element wit( t(e!i)en outut director#.

    Re%res( iles Launc(es t(e %ile !eneration in t(e same director# as t(e recedent !eneration.

    inall#> a ?)iew? oeration is also a)aila5le

    "(ow t#es ,isla#s t(e o58ects t#es.

  • 7/27/2019 Acceleo 2.6 User Guide

    23/79

    Acceleo 2. User Guide

    #age >=?@

    Illustration 0 8efault editor view

    Illustration C0 !ditor displaying ob+ects types

    :ote t(at t(e editor contains two ta5s %or )iewin! t(e models and !enerated code.

    "amle iewer ,isla#s t(e (ierarc(al )iew o% t(e model

    "ource Allows re)iewin! t(e !enerated source code> wit( real time udatin! o% t(e te9t.

    An element o% t(e model corresonds to a art o% t(e !enerated te9t> and t(e tool )er# recisel# reco!ni'est(e matc(in! 5etween model elements and !enerated te9t. 6(is is w(at we call t(e modelDcodes#nc(roni'ation.

    6(e outline o% t(e editor s(ows t(e (ierarc(ical )iew o% t(e model. (en an o58ect is selected in t(is )iewand a !enerator is loaded> t(e cursor will 5e ositioned at t(e corresondin! !enerated code.

  • 7/27/2019 Acceleo 2.6 User Guide

    24/79

    Acceleo 2. User Guide

    #age >D?@

    6(e s#nta9 colorin! distin!uis(es t(e elements t(at ori!inate %rom t(e temlates in urle> and t(e elementsori!inatin! %rom t(e model in 5lac.

    Eac( time t(e same outline element is dou5le-cliced> t(e editor ositions t(e cursor at t(e %ollowin! sectiono% t(e source code t(at (as 5een !enerated %rom t(is element. 6(is %unction ena5les t(e te9t !enerated

    wit(in t(e same %ile %rom a sin!le element o% a model to 5e entirel# %ollowed.

    6(e codeDmodel s#nc(roni'ation is 5idirectional. ,ou5le-clicin! t(e !enerated code in t(e K"ource ta5selects t(e corresondin! element in t(e (ierarc(ical )iew.

    I% t(e user ositions t(e cursor on a new element o% t(e model wit( t(e s#m5ol> > t(e code re)iew isautomaticall# udated.

    6(e conte9tual menu o% t(e source )iew resents $ new actions

    Re%res( Code Re%res(es t(e !enerated code and taes into account t(e last c(an!es made to t(emodel. ,oes not alter t(e selected temlate.

    Oen ,e%ault Editor Oens t(e last !enerated %ile on t(is o58ect wit( its de%ault editor. or e9amle> t(eB,6 Ba)a editor is oened w(en t(e !enerated %ile is a Ba)a %ile.

    Oen Lin ,eclaration "election o% t(e model o58ect used to !enerate t(e te9t at t(e current osition.

  • 7/27/2019 Acceleo 2.6 User Guide

    25/79

    Acceleo 2. User Guide

    #age 9:?@

    &.$ - 6(e Arc(itecture o% Acceleo

    6(e %ollowin! sc(ema descri5es t(e relations(i 5etween t(e w(ole set o% Acceleo comonents in a t#icaluse case.

  • 7/27/2019 Acceleo 2.6 User Guide

    26/79

    Acceleo 2. User Guide

    #age 9>?@

    * - Generat ion /odules

    *.1 - ,e%inition

    6(e modules are Acceleo lu!-ins t(at 5rin! code !eneration %or a !i)en tec(nolo!ical lat%orm.

    6(e modules o%%er turne# industrial solutions wit( un5eata5le relia5ilit# and roduction dela#s.

    A module is made u o% se)eral temlates descri5in! t(e necessar# arameters to !enerate source code

    %rom a meta-model. it(in eac( temlate> se)eral scrits are desi!ned to ena5le t(e %ine tunin! o% t(e!eneration.

    *.2 - Creatin! a Generation Pro8ect

    6(e %irst ste is t(e creation o% a ro8ect w(ic( will contain t(e !enerators. 6(e simlest wa# o% doin! so is tocreate an emt# !eneration ro8ect wit( t(e KGeneration Pro8ect wi'ard.

    It is ad)isa5le to use an Eclise lu!-in-lie name to name t(e ro8ect.

    E9amle ro8ect name %r.o5eo.im.uml2.!en.8a)a.(i5ernate

  • 7/27/2019 Acceleo 2.6 User Guide

    27/79

    Acceleo 2. User Guide

    #age 99?@

    6(e second met(od is to con)ert a ro8ect t(at contains !enerators to an Acceleo !eneration ro8ect. Inorder to do t(is> it is necessar# to ri!(t-clic once on t(e ro8ect and select t(e action Acceleo -F ?Con)ertPro8ect to Generator Pro8ectQ?.

    In 5ot( cases an ?AcceleoGen+uilder? 5uilder is added to t(e list o% ro8ect 5uilders. 6(is 5uilder ermits t(eacti)ation o% a certain num5er o% !eneration temlate editin! %unctions> as well as t(eir comilation and t(ereal-time c(ecin! o% s#nta9 errors.

    It is ossi5le to c(ec t(at in t(e roerties o% t(e ro8ect.

    In order to 5e usa5le as !enerators> t(e temlates must 5e located in a K"ource older. :amel#> one o% t(edirectories t(at are identi%ied as containin! t(e source %iles. In order to easil# come to !ris wit( Acceleo> t(issettin! is t(e same as %or a standard Ba)a ro8ect.

    +# de%ault> t(e Ksrc director# is used to contain t(e temlates and t(e Acceleo ser)ices. 6(e arameters can5e modi%ied in t(e ro8ect roerties.

    inall#> it is stron!l# recommended t(at a %ile (ierarc(# 5e created in t(e Ksrc director#. 6(is %ile (ierarc(#s(ould 5e identical to t(e name o% t(e ro8ect>

  • 7/27/2019 Acceleo 2.6 User Guide

    28/79

    Acceleo 2. User Guide

    #age 9B?@

    *.$ - Creatin! a Generation 6emlate

    It is imortant to ensure t(at t(e !eneration ro8ect 5ein! wored on is as descri5ed in t(e a5o)e ara!ra(.6(e temlates s(ould 5e or!ani'ed into aca!es in t(e worsace. 6(ese aca!es s(ould 5e created wit(a simle %ile structure in order to 5ot( %acilitate sortin! and (a)e a clear name sace to uniquel# identi%# alltemlates.

    A new temlate is created )ia t(e wi'ards in t(e menu ile -F :ew -F Acceleo -F ...

    6(e ?Emt# Generator? wi'ard (els in t(e creation o% a new temlate

    6(e %irst ste is to seci%# t(e inutNs meta-model.

    Re!istr# )alues Lists all t(e URIs reco!ni'ed 5# Eclise. 6(ese are mainl# t(e URIs o% meta-modelsdeclared 5# t(e lu!-ins installed in t(e currentl# runnin! Eclise.

    +rowse allows t(e selection o% an KEcore %ormat meta-model resent in t(e worsace> as t(etemlateNs inut meta-model.

    /eta-model URI 6e9tual reresentation o% t(e meta-model URI. In t(e e)ent o% a re!istr# URI> it will

  • 7/27/2019 Acceleo 2.6 User Guide

    29/79

    Acceleo 2. User Guide

    #age 9?@

    most liel# 5e!in wit( ?(ttDD?. Ot(erwise> %or a worsace URI it s(ould 5e!in wit( KD.

    "ome o% t(e most common URIs include

    Ecore(ttDDwww.eclise.or!Dem%D2772DEcore

    U/L2 (ttDDwww.eclise.or!Duml2D1.7.7DU/Lor(ttDDwww.eclise.or!Duml2D2.7.7DU/L

    U/L1.& (ttDDwww.o5eo.%rDacceleoDuml1&

    U/L1.$ (ttDDwww.o5eo.%rDacceleoDuml1$

    6(e second ste is to seci%# in%ormation a5out t(e %ile t(at will 5e created.

    Container 6(e name o% t(e %older or ro8ect t(at will contain t(e temlate

    ile name 6(e name o% t(e temlate> wit( t(e e9tension K.mt

    6(e temlate is automaticall# oened in t(e temlate editor and error detection is acti)ated.

    *.& - Udatin! Generation /odels

    A !eneration module is a set o% temlates t(at allow %ile !eneration %or a !i)en tec(nolo!#.

    http://www.eclipse.org/emf/2002/Ecorehttp://www.eclipse.org/emf/2002/Ecorehttp://www.eclipse.org/uml2/1.0.0/UMLhttp://www.eclipse.org/uml2/21.0.0/UMLhttp://www.eclipse.org/uml2/21.0.0/UMLhttp://www.obeo.fr/acceleo/uml14http://www.obeo.fr/acceleo/uml13http://www.eclipse.org/emf/2002/Ecorehttp://www.eclipse.org/uml2/1.0.0/UMLhttp://www.eclipse.org/uml2/21.0.0/UMLhttp://www.obeo.fr/acceleo/uml14http://www.obeo.fr/acceleo/uml13
  • 7/27/2019 Acceleo 2.6 User Guide

    30/79

    Acceleo 2. User Guide

    #age 9C?@

    *.&.1 - Or!ani'ation

    In order to mae use o% t(e ower%ul resource mana!ement o% Eclise> it is necessar# to create a aca!e%or eac( t#e o% tec(nolo!#. 6(is will also mae %indin! t(e module easier. 6(is or!ani'ation is deendent o%t(e ro8ect mana!ement> 5ut it s(ould also 5e co(erent %rom one ro8ect to anot(er to increase e%%icienc#.

    it( t(is !oal in mind> Acceleo %orces t(e creation o% a !eneration temlate %or eac( %ile to 5e !enerated.6(is is t(e ori!in AcceleoNs %le9i5ilit#. Indeed> t(is requirement> maes it eas# to create> identi%#> c(an!e andreuse a !eneration module. /oreo)er> usin! a sin!le temlate %or eac( tar!et %ile> and a sin!le ro8ect %oreac( tar!et tec(nolo!# simli%ies e%%icient )ersion mana!ement C"> ":> ClearCase> etc.

    Or!ani'in! !enerators into aca!es more or less re%lects t(e or!ani'ation o% t(e !enerated resources. 6(etemlates are inte!rated into t(e de)eloers en)ironment> and are stron!l# insired 5# t(e comuter codet(at will 5e written 5# t(e de)eloers. 6(e code t(at will run and t(e temlate s(ould 5e as close as ossi5le.

    *.&.2 - +ottom-U

    Generation temlates can 5e de)eloed %rom e9amles.

    6(is aroac( is called K5ottom-u. It consists in t(e ela5oration o% a rotot#e> t(en t(e )alidation o% itscode qualit#. 6(is aroac( also comrises t(e )alidation o% t(e codin! rules> testin! t(e rotot#eer%ormance> and stress testin! in a re-roduction en)ironment. 6(en> and onl# t(en> is it trans%ormed into a!enerator. 6(is allows t(e !enerated code to 5e otimi'ed> w(ic( ensures lower maintenance costs and acertain con%idence durin! t(e installation rocess o% t(e industrial alication.

    6(e rotot#e o% an alication t(at alread# runs can 5e used as t(e startin! oint o% a read#-to-use!eneration module. 6(at is t(e reason w(# t(e same ind o% or!ani'ation is used 5etween t(e !eneratedsource code and t(e !enerators. In t(e same manner> it is eas# to determine t(e source code structure in anAcceleo temlate. In t(e %ollowin! e9amle> we can see (ow simle it is to identi%# t(e concets 5etween t(escrit @at t(e to and t(e source re%erence @at t(e 5ottom.

  • 7/27/2019 Acceleo 2.6 User Guide

    31/79

    Acceleo 2. User Guide

    #age 9;?@

    *.&.$ - 6#es o% iles in a /odule

    6(ere are & t#es o% %iles in a !eneration ro8ect

    temlate .mt ile containin! t(e structure o% t(e %ile to 5e !enerated. A sin!le T

  • 7/27/2019 Acceleo 2.6 User Guide

    32/79

    Acceleo 2. User Guide

    #age 9@?@

    6(e user code is identi%ied 5# co(erent ta!s. 6(e code written 5etween t(ese ta!s is entirel# rotected and isnot o)erwritten durin! t(e ne9t !eneration. 6(is 5e(a)ior ena5les t(e seciali'ation o% t(e !enerated code.

    +# usin! an otimal ositionin! %or t(e user ta!s> t(e de)eloer can 5e !uided and (eled 5# t(e automatic!eneration> wit(out 5ecomin! %rustrated 5# it. /a9imum e%%icienc# is o5tained> #et su%%icient li5ert# is le%t tot(e de)eloer> and it is not mandator# to c(an!e t(e tar!et arc(itecture.

    /oreo)er> Acceleo ensures t(at no user code will 5e lost w(en a temlate is modi%ied.

    6(e de)eloer is in%ormed t(at code (as 5een lost 5# a %ile wit( t(e e9tension K.lost. I% it is acti)ated> )ersionmana!ement also identi%ies t(ose K.lost %iles as new.

    6(e Klost %iles contain 5ot( t(e name o% t(e deleted ta! and t(e user code t(at went wit( it. 6(e de)eloerwill onl# need to c(ec it and> i% necessar#> ut t(is code 5ac into anot(er %ile> )ia co#Daste oerations.

    *.&.* - ,e5u!!in! and trace

    C..C.> < 8ebugging

    A de5u!!er is a)aila5le> usin! t(e de5u!!er ersecti)e #ouNll 5e a5le to to!!le 5reaoints in a temlateand e)aluate t(is temlate ste 5# ste.

  • 7/27/2019 Acceleo 2.6 User Guide

    33/79

    Acceleo 2. User Guide

    #age 9=?@

    Acceleo de5u!!er in action

    6(is de5u!!er ro)ides t(e %ollowin! %eatures

    Resume to resume t(e e)aluation.

    "te o)er @ to !et t(e result o% t(e e9ression wit(out !oin! into a su5-scrit.

    "te into @* to !o to t(e ne9t e)aluation ste !oin! into su5-scrits as needed.

    "te return to directl# !et t(e result o% t(e current ste.

    6erminate to susend t(e e9ecution.

    6(e !eneral 5e(a)ior o% t(e de5u!!er is t(e %ollowin! it stos on eac( d#namic area on a line wit( an acti)e5reaoint. 6(ere are two stos %or eac( (i!(li!(ted instruction t(e %irst one to !et t(e inut state and t(esecond one to !et t(e outut o% t(is e)aluation.

    ou ma# also de%ine conditional 5reaoints> to do so #ou s(ould le%t-clic on t(e mouse and write t(econditionNs e9ression.

  • 7/27/2019 Acceleo 2.6 User Guide

    34/79

    Acceleo 2. User Guide

    #age 9D?@

    Acceleo de5u!!er conditional 5reaoint

    C..C.9 < Trace

    Errors related to t(e use o% Acceleo are lo!!ed in a dedicated )iew Acceleo Lo!.

    http://www.acceleo.org/images/acceleo/noteworthy/2.1.0/debuger-condition.png
  • 7/27/2019 Acceleo 2.6 User Guide

    35/79

    Acceleo 2. User Guide

    #age B:?@

    6(is )iew is not required 5# Acceleo users durin! Knormal use.

    6(e in%ormation it disla#s include Acceleo errors and internal warnin!s. or e9amle> tec(nical ro5lemsoccurrin! w(ile editin! temlates are s(own t(ere.

    Generation errors intended to 5e seen 5# users are recorded in a lo! %ile.

    C..C.B < #rofiling

    it( Acceleo #ou can ro%ile t(e time sent 5# eac( element o% a c(ain @%rom a c(ain action to a call inside ascrit. 6o acti)ate t(e ro%iler #ou s(ould create a new launc( con%i!uration. Oen t(e run dialo! 5# a ri!(tclic on a c(ain. In t(e Krun as menu> select KOen run dialo!.... 6o create t(e new launc( con%i!uration #oucan dou5le-clic on Kc(ain at t(e le%t side o% t(e window. ou can select t(e c(ain to run and acti)ate t(ero%ilin! 5# c(ecin! t(e ro%ile c(ec 5o9

    6(en clic t(e KAl# 5utton to al# c(an!es and run t(e c(ain usin! t(e KRun 5utton. A ro%ilin! modelwill 5e created at t(e seci%ied location. 6o oen t(e model dou5le clic on it in t(e aca!e e9lorer. ous(ould see t(e %ollowin! editor

  • 7/27/2019 Acceleo 2.6 User Guide

    36/79

    Acceleo 2. User Guide

    #age B>?@

    In t(is editor #ou can see t(e %ollowin! in%ormation

    t(e ercenta!e o% time sent %or eac( element

    t(e time @in milliseconds sent %or eac( element

    t(e num5er o% times t(e element (as 5een used.

    6(e tree )iew is ordered %rom t(e most time consumin! to t(e less time consumin! element. I% #ou dou5leclic on a temlate element t(e corresondin! editor will s(ow u wit( t(e te9tual reresentation o% t(ero%iled element selected.

    *.&. - 6(e 6emlate Editor

    Acceleo temlates ma# 5e edited directl# wit(in Eclise> usin! a seciali'ed editor.

    6(is editor ro)ides di%%erent ser)ices t(at quicl# 5ecome essential> 5ot( %or t(e ersonali'ation o%temlates and %or t(eir mass creation.

    6(e %eatured %unctionalities o% t(e editor are all comati5le wit( t(e (iloso(# o% Eclise to 5e as

    uno5trusi)e as ossi5le. 6(ere%ore> menus> dialo! 5o9es and arameters were deli5eratel# reduced to t(e5are minimum to sul# a er%ectl# inte!rated en)ironment.

  • 7/27/2019 Acceleo 2.6 User Guide

    37/79

    Acceleo 2. User Guide

    #age B9?@

    C..;.> < Syntax oloring

    "#nta9 colorin! clearl# di%%erentiates d#namic elements %rom static elements.

    Here are t(e meanin!s o% t(e color codes

    Red 6a! %or t(e 5e!innin! o% a scrit

    ,ar 5lue ,eclaration o% imorts and o% t(e meta-model

    Li!(t 5lue ,#namic element @Acceleo control code

    Gre# Comment

    6urquoise User code ta!s

    C..;.9 < Auto co&pletion

    Auto comletion is t(e rocess o% sul#in!> w(ile t(e de)eloer is t#in!> a list o% conte9tual roositions to(el in t(e editin! o% scrits.

    Auto comletion wit(in Acceleo is d#namic and case insensiti)e. 6(is means t(at it reacts accordin! to t(einut meta-model and t(e scrits and ser)ices a)aila5le.

    Auto comletion is acti)ated 5# usin! t(e Ctrl V "ace s(ortcut. It is also automaticall# in)oed w(en t#in!t(e K. searator.

    6(e auto comletion is sensiti)e to t(e conte9t w(en it is in)oed.

    or e9amle> t(e auto comletion rooses t(e list o% all a)aila5le meta-classes %or t(e attri5ute Kt#e wit(int(e T

  • 7/27/2019 Acceleo 2.6 User Guide

    38/79

    Acceleo 2. User Guide

    #age BB?@

    or an Acceleo control code> AutoComlete o%%ers se)eral c(oices> sorted as %ollow

    Current temlate scrits a)aila5le %or t(is t#e o% meta-class

    Attri5utes a)aila5le %or t(e meta-class

    E/ attri5utes

    Alica5le scrits %rom imorts

    Imorted Ba)a ser)ices

    Ba)a ser)ices automaticall# imorted 5# Acceleo

    C..;.B < !rror 8etection

    Comilation errors are automaticall# detected 5# Acceleo w(en t(e %ile is sa)ed.

    6(ese errors can 5e o% se)eral distinct t#es

    "#nta9 errors or e9amle> an unclosed T< ta!> a misselled Kscrit ta!> a missin! quotation mar> Q

    Imort %ailure I% t(e imort scrit is not a)aila5le

    Unnown meta-model I% t(e URI o% t(e meta-model is not re%erenced 5# t(e current Eclise rocedure>

    or i% t(e KEcore %ile containin! t(e meta-model is not a)aila5le

    Unnown element in t(e meta-model 6(e element seci%ied 5etween T<

  • 7/27/2019 Acceleo 2.6 User Guide

    39/79

    Acceleo 2. User Guide

    #age B?@

    Acceleo also detects runtime errors> namel# t(ose errors roduced at t(e time t(e !eneration is launc(ed.Acceleo mars t(e o%%endin! scrits. Runtime error marers will 5e cleared wit( t(e ne9t comilation o% t(escrit.

    It is ossi5le to (a)e a temlate wit( no errors at t(e time o% editin!> 5ut w(ic( roduce se)eral errors durin!!eneration.

    6(is %unction maes it simler to detect t(e cause o% a !i)en ro5lem. Ri!(t-clicin! t(e runtime error in t(eKPro5lems )iew allows oenin! t(e model element w(ic( caused t(e runtime error.

    C..;. < )avigation !ase

    - Oen t(e element de%inition @$ Oens a scrit de%inition in t(e temlate editor.

    - "earc( t(e element re%erences @C6RLV/ABVG Oens a searc( )iew wit( re%erences o% t(e selection.

    - Comment t(e current selection @C6RLV/ABVC CommentsDuncomments a 5loc in t(e temlate editor.

  • 7/27/2019 Acceleo 2.6 User Guide

    40/79

    Acceleo 2. User Guide

    #age BC?@

    *.* - "#nta9 Elements

    6(e s#nta9 used 5# Acceleo (as 5een seciall# desi!ned to %acilitate 5ot( scannin! t(rou!( models andcode !eneration. It is t(e result o% a lot o% e9erience and %eed5ac> and o% man# #ears o% RW,.

    6(e result is a )er# simle s#nta9 wit( t(e 5are minimum num5er o% e#words ena5lin! ma9imum )isi5ilit# o%t(e tar!et code w(ile reser)in! ower o% e9ression.

    6(e s#nta9 is desi!ned as a Ktree-structured s#nta9 5ecause it is entirel# dedicated to t(e use o% inutmodels or!ani'ed in t(e %orm o% trees.

    *.*.1 - +asic Concets

    A !eneration temlate is a attern t(at s(ould clearl# set out t(e static !enerated te9t and t(e )aria5leelements. In Acceleo> t(is limit is clear and cannot 5e customi'ed. 6(is clarit# allows t(ird art# readers toeasil# read an# scrit. 6(e )aria5le te9t starts wit( T< @or ;

  • 7/27/2019 Acceleo 2.6 User Guide

    41/79

    Acceleo 2. User Guide

    #age B;?@

    *.*.2 - Alternate "#nta9 ;< t(e )aria5le te9t starts wit( T< and %inis(es wit( in t(e Kimort section o% t(e scrit (eadin!> t(e URI o% t(e meta-

    http://www.eclipse.org/uml2/1.0.0/UMLhttp://www.eclipse.org/uml2/2.0.0/UMLhttp://www.eclipse.org/emf/2002/Ecorehttp://www.obeo.fr/acceleo/uml14http://www.obeo.fr/acceleo/uml14http://www.eclipse.org/uml2/1.0.0/UMLhttp://www.eclipse.org/uml2/2.0.0/UMLhttp://www.eclipse.org/emf/2002/Ecorehttp://www.obeo.fr/acceleo/uml14http://www.obeo.fr/acceleo/uml14
  • 7/27/2019 Acceleo 2.6 User Guide

    42/79

    Acceleo 2. User Guide

    #age B@?@

    model descri5in! t(e models to w(ic( t(e !enerator ma# 5e alied. e will descri5e more seci%icall# t(eot(er seci%ications %or t(is Kimort section later. Here is an e9amle o% t(e U/L1& Kimort section

    :a)i!atin! wit(in t(e meta-model is t(en ossi5le. 6(e auto comletion will disla# t(e accessi5le lins %ort(e current o58ect o% t(e meta-model.

    I% t(e U/L1$> U/L1& and U/L2 meta-models meet #our needs> #ou can si t(e %ollowin! ara!ra(.

    6(e tool can also 5e adated to t(e constraints related to desi!nin! !enerators in t(e ,"L conte9t> wit( t(euse o% seci%ic meta-models. Usin! E/> it is ossi5le to de%ine #our own meta-model and #our own ,"L>5ut %rom time to time> a !enerator must 5e desi!ned at t(e same time as t(e meta-model. E/ allows alu!-in to 5e !enerated t(is lu!-in must 5e launc(ed in order to 5e reco!ni'ed. 6(is is an imortantconstraint w(en creatin! a meta-model and a !enerator. 6(is is w(# Acceleo can (andle> on t(e %l# andwit(in t(e same Eclise> t(e desi!n o% meta-models and !enerators @see t(e desi!n o% E/ meta-modelsearlier in t(is document. 6(e !eneration scrits also ermit imortin! t(e meta-model 5# usin! a resourceat( in Eclise. D/#Pro8ectDmodelDmeta.ecore. Once t(e meta-model is in a sta5le state> #ou can switc( toURI mode> relacin! t(e meta-model imorts in all t(e scrits wit( t(e roer URI. 6(is solution is also )er#use%ul %or a P"/ conte9t> 5ecause meta-models o%ten e)ol)e durin! t(e desi!n eriod.

    *.*.& - "crits

    E)er# scrit starts wit( t(e declaration> T and ends at t(e 5e!innin! o% t(e ne9t scrit or t(e end o% t(e %ile.

  • 7/27/2019 Acceleo 2.6 User Guide

    43/79

    Acceleo 2. User Guide

    #age B=?@

    "me #escription $ttus

    type 6#e o% t(e meta-class Required

    name :ame o% t(e scrit Required

    file :ame and at( o% t(e %ile to !enerate Otional

    post E9ression to 5e e9ecuted on t(e result o% t(e e)aluation Otional

    description Comment Otional

    It is ossi5le to na)i!ate 5etween scrits. 6(e auto comletion disla#s t(e accessi5le lins %or t(e currento58ect @or its suer classes o% t(e meta-model.

    *.*.* - "er)ices

    "er)ices ro)ide comle9 oerations> oerations t(at would 5e )er# comlicated to reali'e wit( t(e .mt %iles.

    Rat(er t(an in)entin! a new and comle9 s#nta9> it was decided to reuse t(e Ba)a lan!ua!e> w(ic( iser%ectl# adated %or 5ot( accomlis(in! t(ose comle9 oerations and (andlin! t(e E/ classes main! u

    t(e model.

    C.C.C.> < Structure of the Services

    "er)ices are u5lic met(ods de%ined in Ba)a classes. "er)ices are e9ecuted in t(e same conte9t> %rom onecall to anot(er. 6(us t(e# allow t(e use o% structural )aria5les.

    6(ere are two t#es o% ser)ices

    ser)ices t(at are automaticall# imorted and inte!rated into Acceleo

    utilit# ser)ices t(at are inte!rated into t(e !eneration modules and imorted 5# t(e temlates

    In 5ot( cases> t(e %irst arameter o% t(e ser)ice is t(e current !eneration node @called t(e recei)er.

    or e9amle> t(e ?inde9O%? ser)ice> w(ic( !i)es t(e inde9 o% a strin! in anot(er strin!> is called wit( t(e strin!5ein! searc(ed %or as t(e onl# ar!ument. et> t(is ser)ice is declared wit( two arameters 6(e %irst is t(erecei)er on w(ic( t(e searc( is made> and t(e second is t(e ar!ument 5ein! searc(ed %or.

    C.C.C.9 < Receiver Type

    E:ode is an a5stract t#e o% data de%ined 5# Acceleo> w(ic( is used to encasulate a )alue. It can 5eadated to all desired o58ect t#es in t(e ser)ices> includin! inte!er @int> real @dou5le> 5oolean> c(aracterstrin!s @"trin!> list @E:odeList or o58ect @EO58ect. 6(ans to t(is data t#e> t(e common Ba)a e9cetions

    K:ullPointerE9cetion and KOutO%+oundE9cetion are ne)er t(rown an emt# o58ect is returned i% one o%t(ose (aen. C(ainin! met(od calls is t(en alwa#s ossi5le. Liewise> t(e E:ode t#e also ena5les codeDmodel s#nc(roni'ation in t(e re%lecti)e editor.

    EO58ect is t(e E/ equi)alent o% t(e 8a)a.lan!.O58ect class in t(e Ba)a lan!ua!e. It is t(e 5asis o% all

  • 7/27/2019 Acceleo 2.6 User Guide

    44/79

    Acceleo 2. User Guide

    #age BD?@

    E/o58ects.

    6(e recei)er o% a ser)ice ma# 5e one o% se)eral t#es

    A meta-class @%or e9amle Class> Proert#> /odel in t(e U/L %ramewor

    An Acceleo meta-class @%or e9amle EO58ect> E:ode

    A rimiti)e t#e "trin!> List> int> dou5le> or 5oolean

    Acceleo automaticall# adats t(e current !eneration loo to call t(e ser)ice deendin! on t(e recei)er t#e>e)en w(en wor is 5ein! done on a list and t(e ser)ice is not de%ined %or a KList t#e recei)er. Acceleo alsoadats t(e t#e o% o58ects in t(e e9ressions> or w(en arameters are assed. or e9amle> in t(ee9ression KtoUerCase@true> t(e ser)ice toUerCase is declared wit( a strin! as arameter. 6(ere%oret(e +oolean )alue Ktrue is adated to a strin! 5e%ore t(e callQ

    As %or t(e ser)iceNs namin!> it is ad)ised to add t(e su%%i9 K"er)ices to t(e classes ro)idin! t(e ser)ices. Itis also ad)ised t(at ser)ices 5e re!roued 5# t#e o% recei)er @%or e9amle t(e ser)ices actin! on strin!s arein a class named K"trin!"er)ices> ser)ices t(at act on an Oeration class o% a meta-model are in

    KOeration"er)ices.

    It is not ad)isa5le to s#stematicall# use ser)ices %or all meta-model classes. Headin! towards t(is e9tremeoses t(e ris o% de%eatin! t(e nature o% t(e meta-model> and c(an!in! it into a rorietar# API.

    I% elements are missin! in a meta-model> t(e 5est course is to modi%# t(e meta-model or to use t(e ower o%AcceleoNs s#nta9> usin! cascadin! ser)ice calls.

    Anot(er alternati)e is to mae t(e ser)ices su%%icientl# !eneric and reusa5le so t(at t(e# can 5e alied to!eneric t#es suc( as EO58ect or E:ode.

    C.C.C.B < 3sing Services

    6o use a ser)ice in a temlate> it is enou!( to

    (a)e t(e ser)ice accessi5le to t(e current ro8ect> in a K8ar> or in anot(er ro8ect on w(ic( t(e currentro8ect deends.

    declare it in t(e imort section o% t(e temlate

    :a)i!ation is ossi5le wit(in t(e imorted ser)ices. Auto comletion disla#s t(e accessi5le lins %or t(ecurrent o58ect o% t(e meta-model.

  • 7/27/2019 Acceleo 2.6 User Guide

    45/79

    Acceleo 2. User Guide

    #age :?@

    In t(e Ba)a ser)ice si!nature> t(e %irst arameter is t(e recei)er. 6(is arameter does not need to 5e assedon to t(e call 5ecause t(e recei)er is t(e o58ect on w(ic( t(e ser)ice is alied.

    or e9amle> consider t(e %ollowin! ser)ice

    public void (oolean hasStereotype$!le&ent elt" String stereotype%E6(e ar!ument Kelt is t(e recei)er. 6(e ser)ice ma# 5e called in t(e scrits %or t(e (andlin! o% t(e Element>as well as 5# t(e meta-classes> 5# in(eritance.

    C.C.C. < 8ocu&entation of Services

    Comlete documentation o% s#stem ser)ices is a)aila5le in t(e Acceleo re%erence. A quic re%erence in

    Ba)adoc %ormat is also a)aila5le in t(e (el inte!rated wit( Eclise @Hel -F Hel Contents -F AcceleoGenerator Guide. 6(is documentation contains in%ormation on "trin!s (andlin! ser)ices> E/ na)i!ationser)ices> model request ser)ices> %ile mana!ement ser)ices> and ad)anced Acceleo ser)ices.

    *.*. - Imorts

    6(e Kimort section is alwa#s located at t(e 5e!innin! o% t(e %ile. It ena5les deendencies 5etween atemlate and ot(er temlatesDser)ices to 5e seci%ied.

  • 7/27/2019 Acceleo 2.6 User Guide

    46/79

    Acceleo 2. User Guide

    #age >?@

    6(e %irst line is alwa#s t(e declaration o% a meta-model on w(ic( t(e temlate can 5e alied @see t(e

    corresondin! c(ater.Imorts ma# 5e o% two t#es

    6emlates %or w(ic( t(e scrits are accessi5le

    Ba)a ser)ices

    ile e9tensions are not use%ul. Acceleo s#stem ser)ices are imlicitl# imorted and do not need to 5edeclared.

    6(e s#nta9 %or t(e imorts is identical to t(e class imorts in Ba)a notation eac( oint reresents a le)el int(e (#sical %ile.

    6(us> t(e %ollowin! declaration Kimort test.mon6emlate tells Acceleo to searc(...

    eit(er DtestDmon6emlate.mt

    or DtestDmon6emlate.8a)a

    6(e searc( will 5e carried out in t(e ClassPat(. +# de%ault> t(ese %iles s(ould 5e in t(e source %older @Ksrc o%t(e ro8ect.

    Here is an e9amle o% an Kimort section

    :a)i!ation is t(en ossi5le in t(e meta-model> in t(e scrits and in t(e imorted ser)ices. 6(e autocomletion disla#s all t(e ossi5le calls.

    Imortin! temlates and ser)ices %rom anot(er ro8ect is allowed as lon! as t(e deendencies 5etween t(etwo ro8ects is seci%ied.

    6(is settin! is made in t(e ro8ect roerties -F Ba)a +uild Pat( -F Pro8ects.

    A deendenc# can also 5e seci%ied in t(e %ile /E6A-I:D/A:IE"6./ o% t(e ro8ect.

    O% course t(e ro8ects on w(ic( t(e current ro8ect deend must 5e oened to a)oid comilation ro5lems.

  • 7/27/2019 Acceleo 2.6 User Guide

    47/79

    Acceleo 2. User Guide

    #age 9?@

    In order to 5e seci%ic> onl# direct deendencies are resol)ed.

    A ro8ect A deends on a ro8ect +

    A ro8ect + deends on a ro8ect C

    I% A wis(es to use t(e ser)icesDtemlates o% C> it must e9licitl# declare t(at in its list o% deendencies.

    *.*.0 - In(eritance

    Imorts (a)e anot(er %unction in Acceleo. 6(e# also simulate a ind o% in(eritance 5etween t(e scrits. Hereis an e9amle t(at will (el to understand w(at an in(eritance loos lie

    6(e scrit Ka %or t(e %ollowin! temlate ma# 5e alied to elements o% t(e KClass t#e. :otice t(at scrit Kacalls scrit K5> t(at K5 calls Kc and t(at Kc calls Kd. "crit Ka is t(e entr# oint 5ecause t(e K%ile attri5utewas seci%ied %or t(is scrit.

    Here is t(e result o% t(e alication o% t(e recedin! Kde%ault !enerator on a class o% a model

    I%> %or t(e seci%ic needs o% a ro8ect> it is desired to !enerate Ke instead o% Kd> it is not necessar# to create a?co#? o% t(e temlate. 6(e creation o% a temlate rede%inin! t(e scrit is all t(at is required.

    It is onl# necessar# to create a new temlate> to imort t(e !enerator to o)erride @Kde%ault.mt in t(is

  • 7/27/2019 Acceleo 2.6 User Guide

    48/79

    Acceleo 2. User Guide

    #age B?@

    e9amle> and to de%ine a new ?d? scrit.

    :ote t(at t(ere is no direct entr# oint 5ecause no scrit (as t(e K%ile attri5ute> 5ut t(ere is an imlicit entr#

    oint in t(e Kde%ault imorted scrit. In t(is conte9t> t(e in(eritance mec(anism and t(e rede%inition o% scritsis acti)ated.

    Here is t(e result o% t(e alication o% t(e recedin! Kseci%ic !enerator on a class o% a model.

    *.*.3 - Comments

    Comments allow !eneration scrits to 5e documented.

    6(e# are not interreted 5# Acceleo and are not !enerated into t(e tar!et code.

    6(e# are de%ined 5# t(e ta!s T

  • 7/27/2019 Acceleo 2.6 User Guide

    49/79

    Acceleo 2. User Guide

    #age ?@

    A user ta! must 5e unique. It is identi%ied 5# t(e )alue o% t(e entire line o% t(e T

  • 7/27/2019 Acceleo 2.6 User Guide

    50/79

    Acceleo 2. User Guide

    #age C?@

    6(e %ollowin! e9amle can 5e alied in t(e conte9t o% a U/L2 meta-model on t(e KClass meta-class @let us

    name it ?/#Class?.

    T

  • 7/27/2019 Acceleo 2.6 User Guide

    51/79

    Acceleo 2. User Guide

    #age ;?@

    *.*.1$ - Proerties

    In order to mae !eneration modules !eneric enou!( so t(at t(e# can 5e used as t(e# are 5# se)eralro8ects> it is o%ten use%ul to mae use o% arameters %or certain in%ormation and otions.

    Acceleo t(ere%ore maes it ossi5le to use roerties %iles.

    A roerties %ile is a %ile wit( a roerties e9tension and w(ose content is a simle te9t %ile descri5in!e#D)alue airs.

    6(e %ormat is as %ollows

    X a commentar#

    m#e#Jm#alue

    m#"econde#Jtest

    I% t(e )alue or t(e e# must contain t(e KJ c(aracter> it is necessar# to rotect it wit( a 5acslas( KYJ.

    or Kroerties %iles> in accordance wit( Ba)a rules> comlementar# details ma# 5e consulted at t(e%ollowin! URL

    (ttDD8a)a.sun.comD82seD1.&.2DdocsDaiD8a)aDutilDProerties.(tmlXload@8a)a.io.Inut"tream.

    K.roerties %iles ma# 5e used in man# wa#s

    to allow !lo5al !eneration otionsDre%erences %or t(e ro8ect

    to add tec(nical c(oices to t(e elements o% t(e model.

    to use arameters %or certain %ields or te9ts

    to o%%er a list o% strate!ic imlementation c(oices

    6(e ser)ices de%ined in ?Proerties"er)ices? are desi!ned to reco)er e# )alues in t(e roert# %iles.:ota5l#> t(e ?!etProert#? ser)ice taes t(e name o% t(e e# 5ein! searc(ed %or in t(e roert# resources.

    6(ese resources ma# 5e ersonali'ed at will> %or eac( ro8ect> wit(out an# strate!# 5ein! imosed.

    Acceleo automaticall# suorts t(e addition o% roerties in order to roose de%ault otions. It is notnecessar#> (owe)er> to e9licitl# declare t(ese arameter %iles. Acceleo automaticall# (andle t(eiridenti%ication and loadin!.

    Here is t(e searc( order %or t(e e#s in t(ese roerties resources.

    In all t(e %iles ne9t to t(e launc( c(ain @.c(ain

    In all t(e %iles ne9t to t(e !eneration temlate

    *.*.1& - Instructions

    Acceleo o%%ers two instructions t(at (el in main! !eneration scrits t(at are eas# to create> identi%#> alterand reuse. 6(ese instructions are t(e K%or loo and t(e Ki%Qelse...else... conditional.

    http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html#load%5C(java.io.InputStream)%3E%3E%3E%3Eendobj506%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[74%2092.6%20223.3%20104.9]/A%3C%3C/Type/Action/S/URI/URI(http://www.obeo.fr/acceleo/uml14)%3E%3E%3E%3Eendobj507%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[74%20110.8%20223.3%20125.5]/A%3C%3C/Type/Action/S/URI/URI(http://www.obeo.fr/acceleo/uml14)%3E%3E%3E%3Eendobj508%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[74%20131.5%20246.6%20146.2]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/emf/2002/Ecore)%3E%3E%3E%3Eendobj509%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[263.2%20163.4%20435.8%20178.1]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/uml2/2.0.0/UML)%3E%3E%3E%3Eendobj510%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[74%20163.4%20246.6%20178.1]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/uml2/1.0.0/UML)%3E%3E%3E%3Eendobj511%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[114.6%20632.3%20263.9%20643.5]/A%3C%3C/Type/Action/S/URI/URI(http://www.obeo.fr/acceleo/uml13)%3E%3E%3E%3Eendobj512%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[114.6%20649.4%20263.9%20660.6]/A%3C%3C/Type/Action/S/URI/URI(http://www.obeo.fr/acceleo/uml14)%3E%3E%3E%3Eendobj513%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[291.9%20666.6%20464.5%20677.8]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/uml2/21.0.0/UML)%3E%3E%3E%3Eendobj514%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[106.3%20666.6%20278.9%20677.8]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/uml2/1.0.0/UML)%3E%3E%3E%3Eendobj515%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[102.9%20683.7%20275.5%20694.9]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/emf/2002/Ecore)%3E%3E%3E%3Eendobj516%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20695.7%20228.6%20706.9]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/uml2/2.0.0/UML)%3E%3E%3E%3Eendobj517%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[152%20706.9%20324.6%20718.1]/A%3C%3C/Type/Action/S/URI/URI(http://www.eclipse.org/uml2/1.0.0/UML)%3E%3E%3E%3Eendobj518%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[59.4%20246.4%20164.2%20257.6]/A%3C%3C/Type/Action/S/URI/URI(http://mdr.netbeans.org/)%3E%3E%3E%3Eendobj519%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[356.6%20597.6%20462%20608.8]/A%3C%3C/Type/Action/S/URI/URI(http://www.acceleo.org/)%3E%3E%3E%3Eendobj520%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[260.1%20718%20485.5%20729.2]/A%3C%3C/Type/Action/S/URI/URI(http://www.acceleo.org/pages/download-bundle/en)%3E%3E%3E%3Eendobj521%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[230.2%20271.2%20486.2%20284.6]/A%3C%3C/Type/Action/S/URI/URI(http://www.acceleo.org/pages/telechargement-acceleo/en)%3E%3E%3E%3Eendobj522%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[102.4%20111.6%20238.3%20122.8]/A%3C%3C/Type/Action/S/URI/URI(http://www.acceleo.org/update)%3E%3E%3E%3Eendobj523%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20437.2%20150.3%20448.4]/A%3C%3C/Type/Action/S/URI/URI(http://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/)%3E%3E%3E%3Eendobj524%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[416.1%20448.4%20539.3%20459.6]/A%3C%3C/Type/Action/S/URI/URI(http://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.3-200702082048/)%3E%3E%3E%3Eendobj525%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[117.6%20518%20391.1%20529.2]/A%3C%3C/Type/Action/S/URI/URI(http://download.eclipse.org/modeling/emf/emf/downloads/drops/2.2.2/R200702131851/emf-sdo-xsd-SDK-2.2.2.zip)%3E%3E%3E%3Eendobj526%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[117.6%20569.5%20325.2%20580.7]/A%3C%3C/Type/Action/S/URI/URI(http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/)%3E%3E%3E%3Eendobj527%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[233.3%20654.8%20342.2%20668.2]/A%3C%3C/Type/Action/S/URI/URI(http://www.java.com/)%3E%3E%3E%3Eendobj528%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20516.4%20194.7%20527.6]/A%3C%3C/Type/Action/S/URI/URI(http://www.acceleo.org/update/)%3E%3E%3E%3Eendobj529%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20390.9%20538.8%20404.3]/Dest[469%200%20R/XYZ%2094.3%20167.5%200]%3E%3Eendobj530%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20409.9%20538.8%20423.3]/Dest[462%200%20R/XYZ%2094.3%20663.2%200]%3E%3Eendobj531%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20429%20538.8%20442.4]/Dest[462%200%20R/XYZ%2099%20700.3%200]%3E%3Eendobj532%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20448%20538.8%20461.4]/Dest[434%200%20R/XYZ%2094.3%20372.2%200]%3E%3Eendobj533%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20467.1%20538.8%20480.5]/Dest[414%200%20R/XYZ%2094.3%20168.2%200]%3E%3Eendobj534%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20486.1%20538.8%20499.5]/Dest[405%200%20R/XYZ%20108.8%20657.5%200]%3E%3Eendobj535%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20505.2%20538.8%20518.6]/Dest[405%200%20R/XYZ%2099%20700.3%200]%3E%3Eendobj536%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20524.2%20538.8%20537.6]/Dest[387%200%20R/XYZ%2094.3%20226.9%200]%3E%3Eendobj537%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20543.3%20538.8%20556.7]/Dest[364%200%20R/XYZ%2094.3%20420.5%200]%3E%3Eendobj538%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20562.3%20538.8%20575.7]/Dest[357%200%20R/XYZ%2094.3%20711.2%200]%3E%3Eendobj539%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20581.4%20538.8%20594.8]/Dest[346%200%20R/XYZ%2094.3%20542.2%200]%3E%3Eendobj540%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20600.4%20538.8%20613.8]/Dest[346%200%20R/XYZ%2094.3%20662.7%200]%3E%3Eendobj541%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20619.5%20538.8%20632.9]/Dest[346%200%20R/XYZ%2099%20700.2%200]%3E%3Eendobj542%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20638.5%20538.8%20651.9]/Dest[341%200%20R/XYZ%20108.8%20234.9%200]%3E%3Eendobj543%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20657.6%20538.8%20671]/Dest[336%200%20R/XYZ%20118.2%20443.4%200]%3E%3Eendobj544%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20676.6%20538.8%20690]/Dest[332%200%20R/XYZ%20118.2%20551.7%200]%3E%3Eendobj545%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20695.7%20538.8%20709.1]/Dest[332%200%20R/XYZ%20118.2%20690.3%200]%3E%3Eendobj546%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20714.7%20538.8%20728.1]/Dest[332%200%20R/XYZ%20108.8%20729.2%200]%3E%3Eendobj547%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20733.8%20538.8%20747.2]/Dest[321%200%20R/XYZ%20118.2%20279.1%200]%3E%3Eendobj548%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20752.8%20538.8%20766.2]/Dest[316%200%20R/XYZ%20118.2%20521.2%200]%3E%3Eendobj549%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20771.9%20538.8%20785.3]/Dest[316%200%20R/XYZ%20108.8%20560.2%200]%3E%3Eendobj550%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%2067%20538.8%2080.4]/Dest[316%200%20R/XYZ%20108.8%20689.3%200]%3E%3Eendobj551%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%2086.1%20538.8%2099.5]/Dest[316%200%20R/XYZ%2094.3%20729.2%200]%3E%3Eendobj552%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20105.1%20538.8%20118.5]/Dest[310%200%20R/XYZ%20116.6%20729.2%200]%3E%3Eendobj553%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20124.2%20538.8%20137.6]/Dest[302%200%20R/XYZ%20124.9%20253.3%200]%3E%3Eendobj554%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20143.2%20538.8%20156.6]/Dest[302%200%20R/XYZ%20124.9%20672.7%200]%3E%3Eendobj555%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20162.3%20538.8%20175.7]/Dest[297%200%20R/XYZ%20116.6%20124.2%200]%3E%3Eendobj556%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20181.3%20538.8%20194.7]/Dest[297%200%20R/XYZ%20116.6%20647.9%200]%3E%3Eendobj557%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20200.4%20538.8%20213.8]/Dest[290%200%20R/XYZ%20116.6%20190.5%200]%3E%3Eendobj558%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20219.4%20538.8%20232.8]/Dest[290%200%20R/XYZ%20116.6%20392.7%200]%3E%3Eendobj559%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20238.5%20538.8%20251.9]/Dest[283%200%20R/XYZ%20116.6%20449.2%200]%3E%3Eendobj560%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20257.5%20538.8%20270.9]/Dest[272%200%20R/XYZ%20108.8%20189.6%200]%3E%3Eendobj561%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20276.6%20538.8%20290]/Dest[272%200%20R/XYZ%20108.8%20468.2%200]%3E%3Eendobj562%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20295.6%20538.8%20309]/Dest[263%200%20R/XYZ%20108.8%20424.6%200]%3E%3Eendobj563%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20314.7%20538.8%20328.1]/Dest[251%200%20R/XYZ%20108.8%20120.4%200]%3E%3Eendobj564%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20333.7%20538.8%20347.1]/Dest[251%200%20R/XYZ%20118.2%20451.9%200]%3E%3Eendobj565%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20352.8%20538.8%20366.2]/Dest[246%200%20R/XYZ%20118.2%20412.8%200]%3E%3Eendobj566%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20371.8%20538.8%20385.2]/Dest[241%200%20R/XYZ%20118.2%20178.1%200]%3E%3Eendobj567%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20390.9%20538.8%20404.3]/Dest[241%200%20R/XYZ%20118.2%20367.9%200]%3E%3Eendobj568%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20409.9%20538.8%20423.3]/Dest[241%200%20R/XYZ%20108.8%20474.2%200]%3E%3Eendobj569%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20429%20538.8%20442.4]/Dest[232%200%20R/XYZ%20108.8%20261.3%200]%3E%3Eendobj570%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20448%20538.8%20461.4]/Dest[227%200%20R/XYZ%20108.8%20250.2%200]%3E%3Eendobj571%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20467.1%20538.8%20480.5]/Dest[227%200%20R/XYZ%20108.8%20729.2%200]%3E%3Eendobj572%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20486.1%20538.8%20499.5]/Dest[223%200%20R/XYZ%20108.8%20569.5%200]%3E%3Eendobj573%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20505.2%20538.8%20518.6]/Dest[223%200%20R/XYZ%2094.3%20700.1%200]%3E%3Eendobj574%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20524.2%20538.8%20537.6]/Dest[214%200%20R/XYZ%20118.2%20244.6%200]%3E%3Eendobj575%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20543.3%20538.8%20556.7]/Dest[209%200%20R/XYZ%20118.2%20367.6%200]%3E%3Eendobj576%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20562.3%20538.8%20575.7]/Dest[204%200%20R/XYZ%20118.2%20388.8%200]%3E%3Eendobj577%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20581.4%20538.8%20594.8]/Dest[204%200%20R/XYZ%20118.2%20729.2%200]%3E%3Eendobj578%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20600.4%20538.8%20613.8]/Dest[199%200%20R/XYZ%20108.8%20345.6%200]%3E%3Eendobj579%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20619.5%20538.8%20632.9]/Dest[194%200%20R/XYZ%20118.2%20615.7%200]%3E%3Eendobj580%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20638.5%20538.8%20651.9]/Dest[186%200%20R/XYZ%20118.2%20365.6%200]%3E%3Eendobj581%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20657.6%20538.8%20671]/Dest[175%200%20R/XYZ%20118.2%20421.9%200]%3E%3Eendobj582%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20676.6%20538.8%20690]/Dest[175%200%20R/XYZ%20108.8%20460.6%200]%3E%3Eendobj583%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20695.7%20538.8%20709.1]/Dest[170%200%20R/XYZ%20108.8%20224.2%200]%3E%3Eendobj584%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20714.7%20538.8%20728.1]/Dest[170%200%20R/XYZ%20108.8%20461.3%200]%3E%3Eendobj585%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20733.8%20538.8%20747.2]/Dest[165%200%20R/XYZ%20108.8%20449.6%200]%3E%3Eendobj586%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20752.8%20538.8%20766.2]/Dest[165%200%20R/XYZ%20108.8%20729.2%200]%3E%3Eendobj587%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20771.9%20538.8%20785.3]/Dest[158%200%20R/XYZ%2094.3%2097.9%200]%3E%3Eendobj588%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%2071.1%20538.8%2084.5]/Dest[151%200%20R/XYZ%2094.3%20552.2%200]%3E%3Eendobj589%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%2090.2%20538.8%20103.6]/Dest[135%200%20R/XYZ%2094.3%20361.7%200]%3E%3Eendobj590%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20109.2%20538.8%20122.6]/Dest[135%200%20R/XYZ%2094.3%20662.7%200]%3E%3Eendobj591%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20128.3%20538.8%20141.7]/Dest[135%200%20R/XYZ%2099%20700.2%200]%3E%3Eendobj592%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20147.3%20538.8%20160.7]/Dest[128%200%20R/XYZ%2094.3%20729.2%200]%3E%3Eendobj593%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20166.4%20538.8%20179.8]/Dest[83%200%20R/XYZ%2094.3%20284%200]%3E%3Eendobj594%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20185.4%20538.8%20198.8]/Dest[83%200%20R/XYZ%20118.2%20428.4%200]%3E%3Eendobj595%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20204.5%20538.8%20217.9]/Dest[83%200%20R/XYZ%20118.2%20661.6%200]%3E%3Eendobj596%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20223.5%20538.8%20236.9]/Dest[76%200%20R/XYZ%20118.2%20139.5%200]%3E%3Eendobj597%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[98.5%20242.6%20538.8%20256]/Dest[73%200%20R/XYZ%20118.2%20377.3%200]%3E%3Eendobj598%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20261.6%20538.8%20275]/Dest[73%200%20R/XYZ%20108.8%20416%200]%3E%3Eendobj599%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20280.7%20538.8%20294.1]/Dest[73%200%20R/XYZ%20108.8%20706%200]%3E%3Eendobj600%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20299.7%20538.8%20313.1]/Dest[70%200%20R/XYZ%20108.8%20392.2%200]%3E%3Eendobj601%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20318.8%20538.8%20332.2]/Dest[70%200%20R/XYZ%20108.8%20538.1%200]%3E%3Eendobj602%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20337.8%20538.8%20351.2]/Dest[70%200%20R/XYZ%2094.3%20577.8%200]%3E%3Eendobj603%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20356.9%20538.8%20370.3]/Dest[70%200%20R/XYZ%2090%20700.2%200]%3E%3Eendobj604%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20375.9%20538.8%20389.3]/Dest[61%200%20R/XYZ%2094.3%20433.5%200]%3E%3Eendobj605%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20395%20538.8%20408.4]/Dest[61%200%20R/XYZ%2094.3%20729.2%200]%3E%3Eendobj606%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20414%20538.8%20427.4]/Dest[56%200%20R/XYZ%2094.3%20202.9%200]%3E%3Eendobj607%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20433.1%20538.8%20446.5]/Dest[56%200%20R/XYZ%2094.3%20328.5%200]%3E%3Eendobj608%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20452.1%20538.8%20465.5]/Dest[50%200%20R/XYZ%2094.3%20124.3%200]%3E%3Eendobj609%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20471.2%20538.8%20484.6]/Dest[50%200%20R/XYZ%2094.3%20662.7%200]%3E%3Eendobj610%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20490.2%20538.8%20503.6]/Dest[50%200%20R/XYZ%2099%20700.2%200]%3E%3Eendobj611%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20509.3%20538.8%20522.7]/Dest[45%200%20R/XYZ%2094.3%20511%200]%3E%3Eendobj612%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20528.3%20538.8%20541.7]/Dest[45%200%20R/XYZ%2094.3%20654.6%200]%3E%3Eendobj613%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20547.4%20538.8%20560.8]/Dest[38%200%20R/XYZ%2094.3%20132.9%200]%3E%3Eendobj614%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20566.4%20538.8%20579.8]/Dest[38%200%20R/XYZ%2094.3%20347.6%200]%3E%3Eendobj615%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20585.5%20538.8%20598.9]/Dest[24%200%20R/XYZ%2094.3%20143.1%200]%3E%3Eendobj616%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20604.5%20538.8%20617.9]/Dest[24%200%20R/XYZ%20108.8%20414.3%200]%3E%3Eendobj617%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20623.6%20538.8%20637]/Dest[24%200%20R/XYZ%20108.8%20729.2%200]%3E%3Eendobj618%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20642.6%20538.8%20656]/Dest[21%200%20R/XYZ%20108.8%20278.3%200]%3E%3Eendobj619%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[84.3%20661.7%20538.8%20675.1]/Dest[21%200%20R/XYZ%20108.8%20458.8%200]%3E%3Eendobj620%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[70.2%20680.7%20538.8%20694.1]/Dest[21%200%20R/XYZ%2094.3%20498.5%200]%3E%3Eendobj621%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[56%20699.8%20538.8%20713.2]/Dest[21%200%20R/XYZ%2099%20700.2%200]%3E%3Eendobj622%200%20obj%3C%3C/Type/Annot/Subtype/Link/Border[0%200%200]/Rect[62%20445.9%20458.4%20717.2]/A%3C%3C/Type/Action/S/URI/URI(http://www.acceleo.org/images/acceleo/noteworthy/2.1.0/debuger-condition.png)%3E%3E%3E%3Eendobj778%200%20obj%3C%3C/Type/Catalog/Pages%20629%200%20R/OpenAction[1%200%20R%20/XYZ%20null%20null%200]/ViewerPreferences%3C%3C/DisplayDocTitle%20true%3E%3E/Outlines%20683%200%20R/Lang(en-US)%3E%3Eendobj779%200%20obj%3C%3C/Title%3CFEFF0041006300630065006C0065006F%3E/Author%3CFEFF0045004C004C0045004E0020002600200044004F00550047004C00410053002000560049005200470049004E0054%3E/Creator%3CFEFF005700720069007400650072%3E/Producer%3CFEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030%3E/CreationDate(D:20090626184739+02'00')%3E%3Eendobjxref0%207800000000000%2065535%20f%200005384053%2000000%20n%200000000019%2000000%20n%200000000175%2000000%20n%200000000194%2000000%20n%200005384199%2000000%20n%200000058405%2000000%20n%200000061130%2000000%20n%200005384345%2000000%20n%200000061151%2000000%20n%200000065220%2000000%20n%200005384782%2000000%20n%200000065242%2000000%20n%200000069609%2000000%20n%200005385245%2000000%20n%200000069631%2000000%20n%200000072453%2000000%20n%200005385572%2000000%20n%200000072475%2000000%20n%200000074561%2000000%20n%200000074583%2000000%20n%200005385720%2000000%20n%200000091447%2000000%20n%200000094087%2000000%20n%200005385887%2000000%20n%200000094109%200000