Slide 1

Slide 1 text

Making Modelling “Fun” With GWT Chris Ainsley

Slide 2

Slide 2 text

Speaker

Slide 3

Slide 3 text

Introduction Modelling Rion Myrion Agenda Example

Slide 4

Slide 4 text

Let‘s Begin

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Where does it go? The burden of choice Does it matter where it goes? I need to talk to expert

Slide 8

Slide 8 text

Easier to understand Productivity through structure The model will guide us Acts as tutorial of problem domain

Slide 9

Slide 9 text

Read Data Create well-structured in-memory Model Utilize Model Model Driven Development Over Simplification

Slide 10

Slide 10 text

Application Configuration Basic Scripting Functionality Asset Generation Uses Of A Well-Formed Model Development Tools

Slide 11

Slide 11 text

Approaches to Modelling Annotation Based

Slide 12

Slide 12 text

Annotation Based

Slide 13

Slide 13 text

Array / Lookup Table Based Annotation Based

Slide 14

Slide 14 text

Array / Lookup Table Based

Slide 15

Slide 15 text

Array / Lookup Table Based DSL Based Annotation Based Domain Specific Language

Slide 16

Slide 16 text

Write Parser and more Utilize DSL Toolkit Both non-trivial to get working with GWT on client side Or

Slide 17

Slide 17 text

Array / Lookup Table Based DSL Based Annotation Based Schema Based

Slide 18

Slide 18 text

XML Schema

Slide 19

Slide 19 text

XML Schema Non trivial to get working with GWT on client side

Slide 20

Slide 20 text

Rion

Slide 21

Slide 21 text

GWT Compatible Easy to Visually Scan Many Advanced Features Strongly Typed Syntax Highlighted Rion Attribute Object Collection

Slide 22

Slide 22 text

Id Value Id Values Id Multi Line Attribute Value Leading & trailing whitespace not significant Attribute Syntax

Slide 23

Slide 23 text

Object Syntax Id Type Id and type

Slide 24

Slide 24 text

Collection Syntax Collection Id Identified objects within collection Collection Id Anonymous objects within collection

Slide 25

Slide 25 text

Rion – Active Content $${…} blocks are active content.

Slide 26

Slide 26 text

Id Dictionary Lookup Key Id Value Backslashes interpreted literally in this syntax Regular expression syntax Dictionary Syntax

Slide 27

Slide 27 text

Rion – Conditional Blocks Environment filter Model elements to be excluded unless environment filter matches

Slide 28

Slide 28 text

Myrion

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Schema Driven Development

Slide 31

Slide 31 text

Schema Driven Development

Slide 32

Slide 32 text

Schema Driven Development

Slide 33

Slide 33 text

Schema Driven Development

Slide 34

Slide 34 text

Schema Driven Development

Slide 35

Slide 35 text

Tight Integration With Rion Object Orientated Easy to learn Myrion Design Considerations Rapid Creation Portable

Slide 36

Slide 36 text

What is in the metaschema? Class / Interface hierarchy Class Members Validation rules Scoping / referential integrity More

Slide 37

Slide 37 text

Creating A Schema

Slide 38

Slide 38 text

Form Item A simple model Gui Form Multiple Choice Text Widget Dropdown Radio Buttons Textbox Text Area Date 1 .. n 1 .. n

Slide 39

Slide 39 text

Creating a schema Press Ctrl + Space

Slide 40

Slide 40 text

Creating a schema Package / Domain Defined classes Root class / Entry point Entry point class Expected items within class

Slide 41

Slide 41 text

model/Gui.java 0100 Modified Snippet from Gui.java

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

Define a skeleton ‘form’ class classes[]

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

Schema So Far

Slide 46

Slide 46 text

Valid document Invalid document

Slide 47

Slide 47 text

Creating a Regular Expression / GuiBuilder.jav a

Slide 48

Slide 48 text

Defining An Enumeration enumerations[] IconType.java

Slide 49

Slide 49 text

Add some attributes to “form”

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Creating the “formitem” abstract class

Slide 53

Slide 53 text

classes[] FormItem.java

Slide 54

Slide 54 text

classes[] Create Text Widget Base Class

Slide 55

Slide 55 text

classes[] Adding Concrete Widgets

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

classes[] classes[] Multiple Choice Widgets

Slide 58

Slide 58 text

GWT Archetype + Code Generation

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Model Module Builder Module Client Module 3 GWT Modules Generated Engine Project Web Project

Slide 62

Slide 62 text

Engine Project Model Module Builder Module

Slide 63

Slide 63 text

Web Project View Rendering Code Goes Here Everything underneath src-gen should not be manually edited

Slide 64

Slide 64 text

J2CL archetypes should be trivial to produce

Slide 65

Slide 65 text

Writing Client Code

Slide 66

Slide 66 text

Rendering code goes here GuiView.java

Slide 67

Slide 67 text

Dispatchers Brittle By Design

Slide 68

Slide 68 text

Serializing The Model Autogenerated, no external library dependencies Next version uses java.lang.Appendable

Slide 69

Slide 69 text

Generated Documentation

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

Summary Enables A New Class Of Applications Can be used client side or server side Leverages Strengths of GWT / J2CL So much more

Slide 72

Slide 72 text

Availability Available Q1 2017 Looking at Dual Licensing Options

Slide 73

Slide 73 text

Rion rionx.io Myrion myrion.io Contact [email protected] Feedback bit.ly/2fibiir Twitter @x202122 Questions