Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Making Modelling "Fun" with GWT by Chris Ainsley

3e8bbe56bf459ee2b5f4ca79fd63efde?s=47 GWTcon
November 15, 2016

Making Modelling "Fun" with GWT by Chris Ainsley

Making Modelling "Fun" with GWT by Chris Ainsley
GWTcon2016 - Firenze 14-15th November 2016


NOTE: This speakerdeck presentation omits some animated screencast gifs, which can be viewed in the original presentations via the google slides link provided above).



November 15, 2016

More Decks by GWTcon

Other Decks in Technology


  1. Making Modelling “Fun” With GWT Chris Ainsley

  2. Speaker

  3. Introduction Modelling Rion Myrion Agenda Example

  4. Let‘s Begin

  5. much wow !!!!!! such fun so profesunel i’m scared

  6. None
  7. Where does it go? The burden of choice Does it

    matter where it goes? I need to talk to expert
  8. Easier to understand Productivity through structure The model will guide

    us Acts as tutorial of problem domain
  9. Read Data Create well-structured in-memory Model Utilize Model Model Driven

    Development Over Simplification
  10. Application Configuration Basic Scripting Functionality Asset Generation Uses Of A

    Well-Formed Model Development Tools
  11. Approaches to Modelling Annotation Based

  12. Annotation Based

  13. Array / Lookup Table Based Annotation Based

  14. Array / Lookup Table Based

  15. Array / Lookup Table Based DSL Based Annotation Based Domain

    Specific Language
  16. Write Parser and more Utilize DSL Toolkit Both non-trivial to

    get working with GWT on client side Or
  17. Array / Lookup Table Based DSL Based Annotation Based Schema

  18. XML Schema

  19. XML Schema Non trivial to get working with GWT on

    client side
  20. Rion

  21. GWT Compatible Easy to Visually Scan Many Advanced Features Strongly

    Typed Syntax Highlighted Rion Attribute Object Collection
  22. Id Value Id Values Id Multi Line Attribute Value Leading

    & trailing whitespace not significant Attribute Syntax
  23. Object Syntax Id Type Id and type

  24. Collection Syntax Collection Id Identified objects within collection Collection Id

    Anonymous objects within collection
  25. Rion – Active Content $${…} blocks are active content.

  26. Id Dictionary Lookup Key Id Value Backslashes interpreted literally in

    this syntax Regular expression syntax Dictionary Syntax
  27. Rion – Conditional Blocks Environment filter Model elements to be

    excluded unless environment filter matches
  28. Myrion

  29. Rion Myrion XML XML Schema / JAXB Client-side GWT compatible

  30. Schema Driven Development

  31. Schema Driven Development

  32. Schema Driven Development

  33. Schema Driven Development

  34. Schema Driven Development

  35. Tight Integration With Rion Object Orientated Easy to learn Myrion

    Design Considerations Rapid Creation Portable
  36. What is in the metaschema? Class / Interface hierarchy Class

    Members Validation rules Scoping / referential integrity More
  37. Creating A Schema

  38. Form Item A simple model Gui Form Multiple Choice Text

    Widget Dropdown Radio Buttons Textbox Text Area Date 1 .. n 1 .. n
  39. Creating a schema Press Ctrl + Space

  40. Creating a schema Package / Domain Defined classes Root class

    / Entry point Entry point class Expected items within class
  41. model/Gui.java 0100 Modified Snippet from Gui.java

  42. builder/GuiBuilder.java 0100 Modified Snippet from GuiBuilder.java

  43. Define a skeleton ‘form’ class classes[]

  44. classes[]/gui//content[]//forms Gui.java Define Forms At Root Level

  45. Schema So Far

  46. Valid document Invalid document

  47. Creating a Regular Expression / GuiBuilder.jav a

  48. Defining An Enumeration enumerations[] IconType.java

  49. Add some attributes to “form”

  50. classes[]/form/content[] Form.java

  51. classes[]/form/content[] Form.java

  52. Creating the “formitem” abstract class

  53. classes[] FormItem.java

  54. classes[] Create Text Widget Base Class

  55. classes[] Adding Concrete Widgets

  56. classes[]/form/content[] Adding Form Items To A Form

  57. classes[] classes[] Multiple Choice Widgets

  58. GWT Archetype + Code Generation

  59. None
  60. None
  61. Model Module Builder Module Client Module 3 GWT Modules Generated

    Engine Project Web Project
  62. Engine Project Model Module Builder Module

  63. Web Project View Rendering Code Goes Here Everything underneath src-gen

    should not be manually edited
  64. J2CL archetypes should be trivial to produce

  65. Writing Client Code

  66. Rendering code goes here GuiView.java

  67. Dispatchers Brittle By Design

  68. Serializing The Model Autogenerated, no external library dependencies Next version

    uses java.lang.Appendable
  69. Generated Documentation

  70. None
  71. Summary Enables A New Class Of Applications Can be used

    client side or server side Leverages Strengths of GWT / J2CL So much more
  72. Availability Available Q1 2017 Looking at Dual Licensing Options

  73. Rion rionx.io Myrion myrion.io Contact info@myrion.io Feedback bit.ly/2fibiir Twitter @x202122