已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-1-,theartofmodeltransformationwithoperationalqvt,sergeyboykoradomildvorakalexanderigdalovborlandsoftwarecorporation,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-2-,qvtokeyconcepts,operationalqvt(qvto)operateswithemfmodelsusesoclformodelnavigationmaingoal-modelmodificationandtransformationrequiredanexplicitandcompletealgorithmmodel-to-modelmapping,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-3-,qvtostructure,qvtoperationalpackagegeneralstructuringelementsandtop-levelconstructionsimperativeoclpackageextensiontooclexpressionsandtypesystemstandardlibrary,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-4-,qvtoperationalpackage,transformationdeclarationimperativeoperations(mappings,helpers,queries,constructors)intermediatedataobjectcreationandupdatemechanismtraceresolutionexpressions,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-5-,operationaltransformation1,modeltypeecoreuses/emf/2002/ecore;modeltypeumluses/uml2/2.0.0/uml;transformationecore2uml(ininmodel:ecore,outoutmodel:uml);main()inmodel.rootobjects()epackage-mapepackage2model();mappingepackage:epackage2model():modelname:=;,asimpletransformationexample,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-6-,operationaltransformation2,thecontentofthetransformationdefinitionmaybeplacedwithinthetransformationelement:modeltypeecoreuses/emf/2002/ecore;modeltypeumluses/uml2/2.0.0/uml;transformationecore2uml(ininmodel:ecore,outoutmodel:uml)main()inmodel.rootobjects()epackage-mapepackage2model();mappingepackage:epackage2model():modelname:=;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-7-,imperativeoperations,defineanimperativebodyenrichedsignaturetypesofqvtoimperativeoperationsentryoperationmappingshelpersqueriesconstructors,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-8-,entryoperation,anentryoperationistheentrypointfortheexecutionofatransformation.main()inmodel.rootobjects()epackage-mapepackage2model();typicallyreferstomodelparametersandinvokestop-levelmappings.,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-9-,helpersandqueries,ahelperisanoperationthatperformsacomputationononeormoresourceobjectsandprovidesaresult.itisillegaltocreateorupdateobjectinstancesexceptforpre-definedtypeslikesets,tuples,andforintermediateproperties.helperepackage:somehelper1():set(string)if(=a)thenreturnsetb;endif;returns;aqueryisa“read-only”helperwhichisnotallowedtocreateorupdateanyobjects.queryepackage:getnameatob():stringif(=a)thenreturnb;endif;;helperepackage:somehelper2():set(string)=s;queryepackage:getname():string=;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-10-,constructors,aconstructorisanoperationthatdefineshowtocreateandpopulatethepropertiesofaninstanceofagivenclass.constructoreclass:eclass(s:string,op:eoperation)name:=s;eoperations+=op;callingtheconstructor:neweclass(“aclass,neweoperation();,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-11-,mappings,amappingbetweenoneormoresourcemodelelementsintooneormoretargetmodelelements.:=*mapping?(:)?(?)(:param_list)?*?mosttypicalcase:mapping:():mappingecore:epackage:epackage2package():uml:packagename:=;epackage.mapepackage2package();/callingamappingforasinglecontextepackages-mapepackage2package();/callingamappingconsequentlyforacollectionofcontexts,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-12-,mappingparametersdirectionkind,mappingepackage:somemapping(ina:eclass):packagename:=;mappingepackage:somemapping(ina:eclass,inoutb:eattribute):modelname:=+;:=+123;mappinginoutepackage:epackage2package():packagename:=+123;:=+456;mappingparameterdirectionkindinobjectpassedforread-onlyaccess,thedefaultdirectioninoutobjectpassedforupdate,retainsitsvalueoutparameterreceivesnewvalue(notnecessarilynewlycreatedobject),23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-13-,mappingswhenclause,mappingepackage:epackage2package():pnullname:=;,=null(conditionnotsatisfied)mappingnotexecutednullreturnedmappingnotexecutedexceptionthrown,when-clausecontainsabooleancondition,invocation:-instandardmodewhen-clauseactsasaguardwhichfiltersinputparametersa.mapepackage2package();-instrictmodewhen-clauseactsasapre-conditionwhichmustalwaysholda.xmapepackage2package();,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-14-,mappingbodygeneralform,mappingepackage:mymapping():packageinitvartmp:=self.mapothermapping();if(=aaa)thenresult:=objectpackage;endif;populationobjectresult:packagename:=;endassert(null);,initsectioncomputationpriortotheinstantiationoftheoutputs,populationsectionpopulationoftheoutputs,end(termination)sectioncomputationsbeforeexitingthebody,implicitinstantiationsectioninstantiationofoutparameters(results)thatstillhaveanullvalue,predefinedvariablesinmappings:selfreferstothecontextresultreferstotheresult,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-15-,mappingbodypopulationkeywordomitted,mappingepackage:mymapping():packageinitvartmp:=self.mapothermapping();if(=aaa)thenresult:=objectpackage;endif;name:=;endassert(null);,directaccesstopropertiesoftheresultwithinthepopulationsectionwithoutthepopulationkeyword!,omittedpopulationkeywordisthemosttypicalcase!,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-16-,overridingmappings,simpleoverriding:mappingenamedelement:makeclass():eclassname:=ne:+;mappingeclassifier:makeclass():eclassname:=classifier:+;mappingeclass:makeclass():eclassname:=class:+;mappingedatatype:makeclass():eclassname:=dt:+;,-overrides,overrides,overrides,overrides,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-17-,mappingextension-inherits,abstractmappingeclassifier:makeclassifier():eclassifiername:=+1;mappingeclass:makeclass():eclassinheritseclassifier:makeclassifierinitvartmp:=2;name:=name+tmp;evaluationresult:=+12,executionflow:initsection(ofeclass:makeclass)instantiationsection(ofeclass:makeclass)inheritedmapping(s)(eclassifier:makeclassifier)mappingpopulationandterminationsections(ofeclass:makeclass),implicitinstantiation,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-18-,mappingextension-merges,abstractmappingeclassifier:makeclassifier():eclassifiername:=name+1;mappingeclass:makeclass():eclassmergeseclassifier:makeclassifierinitvartmp:=2;name:=+tmp;evaluationresult:=+21,executionflow:mergingmapping(eclass:makeclassifier)mergedmapping(s)(eclassifier:makeclassifier),23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-19-,mappingextension-disjuncts,mappingeclass:makeaclass():ec.startswith(a)name:=+a;mappingeclass:makebclass():ec.startswith(b)name:=+b;mappingeclass:makeclass():eclassdisjunctseclass:makeaclass,eclass:makebclassevaluationresults:objecteclassname:=cclass.mapmakeclass()=null;objecteclassname:=aclass.mapmakeclass().name=aclassa;objecteclassname:=bclass.mapmakeclass().name=bclassb;,executionflow:when-clausesofthedisjunctedmappingsareevaluated(-ofeclass:makeaclass-ofeclass:makebclass)2.ifallwhen-clausesarenotsatisfiednullisreturned3.otherwise,thefirstmappingwithatruewhen-clauseisexecuted,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-20-,traceabilityconcept,tracecontainsinformationaboutmappedobjectstraceconsistsoftracerecordsatracerecordiscreatedwhenamappingisexecutedtracerecordskeepreferencetotheexecutedmappingandthemappingparametervaluesatracerecordiscreatedaftertheimplicitinstantiationsectionofthemappingisfinishedmappingepackage:mymapping():packageinitpopulationendusage:prohibitduplicateexecutionwiththesameparametersusedinresolveexpressionsmaybeserializedafterthetransformationexecution,implicitinstantiationsection,atracerecordiscreatedhere!,trace,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-21-,resolveexpressions1,aresolveexpressionisanexpressionthatinspectstracerecordstoretrievesourceortargetobjectswhichparticipatedinthepreviousmappingexecutions.resolveresolvestargetobjectsforagivensourceobjectinv(invresolve)resolvessourceobjectsforagiventargetobjectone(resolveone)findsthefirstmatchingobjectin(resolvein)inspectstracerecordsforagivenmappingonlylate(lateresolve)performsresolutionandassignmenttosomemodelobjectpropertyafterthetransformationexecutionmappingepackage:mymapping():package24=16combinations,e.g.invresolveoneorlateinvresolveonein,sourceobjectstargetobjects,epackage.resolve(package),23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-22-,resolveexpressions2,mappingeclassifier:c2c():eclassname:=mapped+;/somewhereinthecodevarorig:=objecteclassname:=original;varmapped:=orig.mapc2c();/insomeotherplacevarres1:=orig.resolve(eclass);varres2:=resolveonein(eclassifier:c2c,t:eclass|.startswith(mapped);varres3:=mapped.invresolvein(eclassifier:c2c,eclass);resolveexpressionsareausefulinstrumentofretrievingtraceinformation!,filteringconditiontypebooleanexpression,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-23-,objectexpression,anobjectexpressionisaninlineinstantiationfacility.objectx:x/anexplicitvariablehereobjecty/noreferredvariablehereobjectx:/thetypeofxisskippedherewhenalreadyknownifxexiststhenitisupdated,otherwisecreatedandupdatedobjectepackagename:=pack;nsuri:=;eclassifiers+=objecteclassname:=clazz;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-24-,modelextents,amodelextentisacontainerformodelobjects.foreachmodelparameterthereisamodelextent.modeltypeecoreuses/emf/2002/ecore;transformationtransf(inm:ecore,outx:ecore,outy:ecore);main()vara:=objectepackagexname:=a;varb:=objectepackageyname:=b;mappingeclass:toclass():eclassyname:=;refertomodelextentswithmodel_parameter_name,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-25-,intermediateproperties,anintermediatepropertyisapropertydefinedasanextensionofthetypereferredbythecontext.typicallydefinedasclassextensionsofmodelmetaclassescreatedtemporarilybyatransformationnotapartoftheoutputusedforintermediatecalculationsassociatedwiththeinstancesoftheextendedclassintermediatepropertyeclass:intermprop:string;main()objecteclassname:=original;intermprop:=abc;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-26-,intermediateclasses,aermediateclassmyepackageextendsepackagemyname:string;mappingeclassifier:c2c():eclassobjectmyepackagename:=name;myname:=somethoughtfulname;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-27-,imperativeoclpackage,assignmentsvariablesloops(while,foreach)loopinterruptconstructs(break,continue)conditionalexecutionworkflowconvenientshorthandnotationmutablecollections,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-28-,assignments,assignmenttovariablesassignmenttoproperties(includingcomplexnestedconstructions)mappingeclassifier:c2c():eclassname:=;mappingepackage:p2p():epackagename:=nsprefix:=nsuri:=aaa;eclassifiers+=self.eclassifiers-mapc2c();eclassifiers+=objecteclassname:=a;esuperpackage.esuperpackage.esubpackages-any(true).name:=a;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-29-,variablesinqvto,oclvariablesinletexpression:leta:string=aain/*someexpressionwitha*/;qvtoextendsoclwithvariableinitializationexpressionsandassignmentstovariables:vara:string:=a;/fullnotationvarb:=b;/typededucedfromtheinitializationexpressionvarc:string;/defaultvalueassignedmappingepackage:p2p():epackagevartmp:=a+;/variabledeclarationandinitializationname:=tmp;/variablereadaccesstmp:=tmp+b/variablemodificationeclassifiers+=self.eclassifiers-mapc2c();eclassifiers+=objecteclassname:=tmp;/anotheraccess,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-30-,whileloop,ocliteratorexpressionsiteratethroughcollectionsandcannotbeinterruptedbybreak,continueorreturnstatements.theyareratherspecific,e.g.:collection-collect(v:type|expression-with-v)whileloopisajava-likeimperativecyclethatcanbeinterruptedbybreak,continueandreturn.,mappingepackage:p2p():epackagewhile(i:=0;iforeach(i|i=b)/foreachwithaconditionres:=res+i;foroneequivalenttoforeachwithabreakstatement:,abc-foreach(i|i=b)res:=res+i;break;,abc-forone(i|i=b)res:=res+i;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-32-,loopinterruptionbreakandcontinue,breakandcontinueusedwithinwhile,foreachloopsandimperativeiteratorsvari:integer:=0;while(iswitch(i)case(cond_with_i_1)case(cond_with_i_2);else;,23march,2009,theartofmodeltransformationwithoperationalqvt-sergeyboyko,radomildvorak,alexanderigdalov,-35-,imperativeiterators,newinqvto:xcollectxselectcollectselectcollectoneselectonecollec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46514-2025锂离子电池正极材料检测方法晶体结构的测定X射线衍射法
- GB/T 22906.4-2025纸芯的测定第4部分:尺寸的测定
- 初中逃课检讨书800字
- 成都市 2024-2025 学年小学五年级科学期中模拟试卷及答案
- 成都市 2024-2025 学年小学五年级上学期语文期中模拟卷及答案解析
- 2024-2025 学年度成都市小学五年级道德与法治期中模拟卷及参考答案
- 2025年学校职工招聘试题及答案
- 2025年河北省公务员行测真题汇编试卷
- 2025年音乐教学导论试题及答案
- 2025年干部教育培训试题及答案
- 【高中政治】价值与价值观+课件+统编版必修四哲学与文化
- 海洋调查和探测技术课件
- 小学数学教学仪器配备目录
- 电动葫芦维护检修规程
- 骨科运用PDCA循环提高骨折术后患者对疼痛护理的满意度品管圈成果汇报书
- 2023年一建通信与广电实务真题及答案
- 道德与法治《网络新世界》完美版课件
- 汽柴油一书一签模板
- 体效应振荡器工作特性和波导管状态
- 向阳小学校园卫生检查量化评分表
- 国家开放大学《社区护理学(本)》形考任务1-5参考答案
评论
0/150
提交评论