This is part of the page model for an application in Rational System modeller. In the top left hand corner, we have a navigation pane showing the files and directories in the project. Bottom left: this shows the overall model, and the piece we're seeing. In the centre, we have part of the page model. The boxes are pages; the lines are event (buttons or links) that navigate between the pages. At the bottom is a log area showing the action from a build.
This shows the entity model. The boxes are entities - well mostly - and the lines between them are entity relations. We also have - a box for the application component and - a &quot;data view&quot; - an object that gives us a &quot;view&quot; of the entity data (like a SQL view gives us a view of database tables)
&quot;Model-to-model transformation&quot; PIM to PSM ... but not really - we might hop over levels in the meta-model; we might even go up the meta-model levels! Notice - we're reusing Velocity - we have no need of QVT. If you can write some script, you can write a pattern. _____________________________________ Types of patterns: - fix-up pattern - coordination - back to building components level and cross-tier proxies - implementation patterns - e.g. the - cross-tier patterns - generate default logical data (data-views) from physical data (entities), and gradually build the CRUD screens.
This shows the generated architecture. We have some technical people ask us to support different frameworks, but business users don't care. It's the speed of creating and changing systems that is important. Business users may well care about additional functionality - e.g. JSF/AJAX to get a richer/faster user experience.
These two pages show part of an application generated with JeeWiz. These pages take too long to build in a live demonstration, but the point is this is a reasonably complex page, linking to lots of other pages (we showed the model for this page earlier).
Enterprise-Level Code Generation Matthew Fowler
Same Enhanced Velocity: M2M Language = Velocity + XML
Output is Simple XML - feedback loop
No PIM/PSM dichotomy, no separate stage
Automatic building of result - no configuration
Separation of M2M from rendering to platform
30:1 to 50:1 expansion of model
Model (text) Model (Java objects) M2Text Code Config M2M + Velocity+ Velocity+ +
Entity Key Generation - application of M2M #if( $keys.size() == 0 ) ### if there are no keys ### generate an autokey object on this entity <this> <attribute name="oid" autokey="true" type="Integer" /> </this> #end