MinuteProject     reverse-engineering        short storiesFlorian Adler                     Riga 7/6/12
About meFrench, living in BelgiumJava dev, founder of minuteprojectWorking @ECFormer navy officer                  dropped...
Agenda• MinuteProject Overview                                              Demo1 – simple JPA2 backend• Customisation    ...
OverviewMinuteProject is a:• Code generator• OpenSource Apache v2 licence• 4000+ downloads• Reverse-engineering tool  – RD...
Target Techno Ecosystem                                                                                                 RE...
Techno Demos                                                                         REST           REST                  ...
Why MinuteProject?• Why code generation?• Do not reinvent the wheel  – i.e. let the others do the framework/specs• Crystal...
When to use it?• Legacy model upgrades to new tech• Work from scratch:  – Development tool  – Iterative methodology• Your ...
MP generated Artifacts                             Operating Mechanism                                  Target            ...
Demo 1 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-1-jpa2.html
Demo 1 - explanations•   Start from scratch•   Generate from the console & command line•   Review artifacts•   Write a uni...
Customisation• Art of enrichment• Art of reverse-analysis• Configure model/targetConfiguration optionsIndividual (fine gra...
Demo 2 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-2-jpa2.html
Demo 2 - explanations•   Start from scratch•   Generate from the console & command line•   Review artifacts•   Write a uni...
Integration Technics2 standards• integration by extension• integration by overridingMP adds a new one• integration by alte...
Demo 3 - RESTArchitecture blocks                          CXF                 S                                           ...
Demo 3 - explanations• Start from scratch• Artifacts review:  – CXF track  – Spring config  – Backend DAO  – JPA2  – Maven...
SDD – Statement Driven Dev.• Sometimes statements are just enough• Model is secondary• You just need:  – Statement ex: que...
SDD exampleStart from an SQL queryto deduce function and output          select k.key_name, t.translation,          t.date...
SDD exampleProvide some input          select k.key_name, t.translation,          t.date_finalization, l.code, l.descripti...
SDD - exampleFeed statement into Minuteproject        <query name="get translation info">            <query-body>         ...
SDD - exampleFeed input into Minuteproject       <query-params>         <query-param name="key" is-mandatory="false"      ...
Demo 4                 SDD is WYSIWYG           what you STATE is what you gethttp://minuteproject.blogspot.be/2012/05/rig...
GoodiesWhy not have a JEE web app instantlyOpenXava app generation• Is a RAD Open Source JEE framework based on  JPA2• Has...
Demo 5 – OpenXava AppMinuteProject generates:• OpenXava project artifacts• Build and deploy scripthttp://minuteproject.blo...
Extend MinuteProjectArtifacts can be generated at multiple levels:• Field• Entities (table,view)• Package• Model• Applicat...
Extend MinuteProject•   Add a track•   Add template metadata•   Add template (velocity)•   Add library•   Add plugin•   Ar...
Success stories• Belgium Finance Ministry• European Commission• In Latvia
FAQ
Contact• Twitter @minuteproject• Googlegroup minuteproject• Mail minuteproject@gmail.com
Upcoming SlideShare
Loading in...5
×

Florian adler minute project

1,251

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,251
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • You have the function and its output
  • Florian adler minute project

    1. 1. MinuteProject reverse-engineering short storiesFlorian Adler Riga 7/6/12
    2. 2. About meFrench, living in BelgiumJava dev, founder of minuteprojectWorking @ECFormer navy officer dropped in IT minefield at Y2K
    3. 3. Agenda• MinuteProject Overview Demo1 – simple JPA2 backend• Customisation Demo2 – model evolution JPA2• Integration technics Demo3 – REST app CXF/spring/jpa2• Statement Driven Development Demo4 – REST app with SDD• Goodies Demo5 – OpenXava app• Extend Minuteproject/ contribute?http://minuteproject.blogspot.be/2012/05/minuteproject-reverse-engineering-short.html
    4. 4. OverviewMinuteProject is a:• Code generator• OpenSource Apache v2 licence• 4000+ downloads• Reverse-engineering tool – RDBMS – WSDL
    5. 5. Target Techno Ecosystem REST REST JSF Vaadin CXF SpringMVC Primefaces JSF REST Spring configuration WS Primefaces Jersey DAO – ORM integration EJB – CDI – DAO DAO layer LayerUnder investigation JPA2 JPA (2/1) Hibernate iBatis First Release OpenXava FitNesse Mature JOOQ MinuteProject Tutorial Rails Roo GeneratorUnder development Grails Automated Business Benerator Logic Play Load model Enrich Generate
    6. 6. Techno Demos REST REST JSF Vaadin CXF SpringMVC Primefaces JSF REST Spring configuration WS Primefaces Jersey DAO – ORM integration EJB – CDI – DAO Layer DAO layerDEMOS JPA2 JPA2 Hibernate iBatis OpenXava FitNesse JOOQ MinuteProject Tutorial Rails Roo Generator Grails Automated Business Benerator Logic Play Load model Enrich Generate
    7. 7. Why MinuteProject?• Why code generation?• Do not reinvent the wheel – i.e. let the others do the framework/specs• Crystallize your knowledge• Go fast and customise• Reverse-Engineering is not a one shot process
    8. 8. When to use it?• Legacy model upgrades to new tech• Work from scratch: – Development tool – Iterative methodology• Your own model as your technology tutorial
    9. 9. MP generated Artifacts Operating Mechanism Target MP engine Technologies B Generates Target Technologies A Loads Uses DB model structure Applies templates MP main config Loads metadata Enriches model Target Technology A/B Database model Templates
    10. 10. Demo 1 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-1-jpa2.html
    11. 11. Demo 1 - explanations• Start from scratch• Generate from the console & command line• Review artifacts• Write a unit test
    12. 12. Customisation• Art of enrichment• Art of reverse-analysis• Configure model/targetConfiguration optionsIndividual (fine grain)Global (declarative conventions)http://minuteproject.wikispaces.com/Convention
    13. 13. Demo 2 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-2-jpa2.html
    14. 14. Demo 2 - explanations• Start from scratch• Generate from the console & command line• Review artifacts• Write a unit test• Secure modified code
    15. 15. Integration Technics2 standards• integration by extension• integration by overridingMP adds a new one• integration by alteration/mutation• 3 types of alteration – artifact level (exclude for next generation) – added section – updatable section
    16. 16. Demo 3 - RESTArchitecture blocks CXF S P R DAO I N JPA2 Ghttp://minuteproject.blogspot.be/2012/05/rigajug-demo-rest-cxf.html
    17. 17. Demo 3 - explanations• Start from scratch• Artifacts review: – CXF track – Spring config – Backend DAO – JPA2 – Maven projects• Deploy and test on Tomcat• Test URL
    18. 18. SDD – Statement Driven Dev.• Sometimes statements are just enough• Model is secondary• You just need: – Statement ex: query – I/O
    19. 19. SDD exampleStart from an SQL queryto deduce function and output select k.key_name, t.translation, t.date_finalization, l.code, l.description, tl.first_name, tl.last_name, tl.email from translation t, language l, user tl, translation_key k where t.language_id = l.idlanguage and tl.idUser = t.translator_id and k.id = t.key_id order by key_name
    20. 20. SDD exampleProvide some input select k.key_name, t.translation, t.date_finalization, l.code, l.description, tl.first_name, tl.last_name, tl.email from translation t, language l, user tl, translation_key k where t.language_id = l.idlanguage and tl.idUser = t.translator_id and k.id = t.key_id and k.key_name like ? and l.code like ? order by key_name limit ?
    21. 21. SDD - exampleFeed statement into Minuteproject <query name="get translation info"> <query-body> <value> <![CDATA[select k.key_name, t.translation, t.date_finalization, l.code, l.des cription, tl.first_name, tl.last_name, tl.email from translation t, language l, user tl, translation_key k where t.language_id = l.idlanguage and tl.idUser = t.translator_id and k.id = t.key_id and k.key_name like ? and l.code like ? order by key_name limit ?]]> </value> </query-body>
    22. 22. SDD - exampleFeed input into Minuteproject <query-params> <query-param name="key" is-mandatory="false" type="STRING" sample="test"/> <query-param name="code" is-mandatory="false" type="STRING" sample="FR"/> <query-param name="max" is-mandatory="false" type="INT" sample="10"/> </query-params>
    23. 23. Demo 4 SDD is WYSIWYG what you STATE is what you gethttp://minuteproject.blogspot.be/2012/05/rigajug-demo-rest-sdd.html
    24. 24. GoodiesWhy not have a JEE web app instantlyOpenXava app generation• Is a RAD Open Source JEE framework based on JPA2• Has front-end rendering annotation on entities• Is AJAX
    25. 25. Demo 5 – OpenXava AppMinuteProject generates:• OpenXava project artifacts• Build and deploy scripthttp://minuteproject.blogspot.be/2012/05/rigajug-demo-instant-openxava-app.html
    26. 26. Extend MinuteProjectArtifacts can be generated at multiple levels:• Field• Entities (table,view)• Package• Model• Application
    27. 27. Extend MinuteProject• Add a track• Add template metadata• Add template (velocity)• Add library• Add plugin• Artifact cross-reference
    28. 28. Success stories• Belgium Finance Ministry• European Commission• In Latvia
    29. 29. FAQ
    30. 30. Contact• Twitter @minuteproject• Googlegroup minuteproject• Mail minuteproject@gmail.com
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×