uberfire quick intro and overview (early beta jul 2013)

66
UF UberFire Saturday, 29 June 13

Upload: mark-proctor

Post on 13-Dec-2014

1.245 views

Category:

Technology


0 download

DESCRIPTION

Quick intro and overview of the UberFire project. UberFire is a tool to help rapidly build workbench or console applications.

TRANSCRIPT

Page 1: UberFire Quick Intro and Overview (early beta Jul 2013)

UF UberFire

Saturday, 29 June 13

Page 2: UberFire Quick Intro and Overview (early beta Jul 2013)

GWT

Saturday, 29 June 13

Page 3: UberFire Quick Intro and Overview (early beta Jul 2013)

GWTGoogle committed to Open Source developmentmodel

Steering Commit/TransparencyTimeBox releases (twice year)Future focus

Mobile (reduced CPU utilization, more code splitting)Easier “Hyrbid” appsSmaller and faster executions

Saturday, 29 June 13

Page 4: UberFire Quick Intro and Overview (early beta Jul 2013)

GWTGWT used extensively at Google

Adwords (97% of google revenue)Google Groups (rewrite just announced)Major new consumer projects about to be announcedBig chunk of internal IT100K+ monthly auto-update pings (Eclipse)

GWT considered matureNot investing in marketing or evangalising

Saturday, 29 June 13

Page 5: UberFire Quick Intro and Overview (early beta Jul 2013)

BRMS and BPMS

Saturday, 29 June 13

Page 6: UberFire Quick Intro and Overview (early beta Jul 2013)

BRMS and BPMS AuthoringBuildDeploy

Saturday, 29 June 13

Page 7: UberFire Quick Intro and Overview (early beta Jul 2013)

BRMS and BPMS AuthoringBuildDeployMonitor and ManageWork

Saturday, 29 June 13

Page 8: UberFire Quick Intro and Overview (early beta Jul 2013)

BRMS Components

Saturday, 29 June 13

Page 9: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 10: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 11: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 12: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 13: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 14: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 15: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 16: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 17: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 18: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 19: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 20: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 21: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 22: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 23: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 24: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 25: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 26: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 27: UberFire Quick Intro and Overview (early beta Jul 2013)

What we Learned

Saturday, 29 June 13

Page 28: UberFire Quick Intro and Overview (early beta Jul 2013)

5.x CritiqueUI

GWTBut not easilyextendedFixed layoutsNo perspectives

Saturday, 29 June 13

Page 29: UberFire Quick Intro and Overview (early beta Jul 2013)

5.x CritiqueJCR

Performance IssuesEverything stored as blobNo tagging, branching etc.WebdavLimited team providers

Saturday, 29 June 13

Page 30: UberFire Quick Intro and Overview (early beta Jul 2013)

6.x RequirementsModular design

PluginsCompile time composition of plugins

Maven modulesHybrid GWT + JS support (Runtime Plugins)

Twitter Bootstrap UI

Saturday, 29 June 13

Page 31: UberFire Quick Intro and Overview (early beta Jul 2013)

6.x RequirementsPanels

Common Life cyclesPanel re-use in other frameworks

Eclipse, Portal etcSecurity visibilityHybrid GWT + JS support (Runtime Plugins)

Saturday, 29 June 13

Page 32: UberFire Quick Intro and Overview (early beta Jul 2013)

6.x RequirementsPerspectives

Flexible layout with DnDMultiple layout managersSecurity visibilityHybrid GWT + JS support (Runtime Plugins)

Saturday, 29 June 13

Page 33: UberFire Quick Intro and Overview (early beta Jul 2013)

6.x RequirementsMenu’s, Toolbars

decoupled form componentscontextual to perspective and focus panelSecurity visibility

GIT BackendHigh Availabilty

GIT cluster

Saturday, 29 June 13

Page 34: UberFire Quick Intro and Overview (early beta Jul 2013)

6.x RequirementsGIT BackendVFS (nio2)

seamless API for client and ServerSecurityMetaData

stored as .dot file in git for each “asset”High Availability

GIT cluster

Saturday, 29 June 13

Page 35: UberFire Quick Intro and Overview (early beta Jul 2013)

KIEKnowledge is Everything

Saturday, 29 June 13

Page 36: UberFire Quick Intro and Overview (early beta Jul 2013)

KIE

Saturday, 29 June 13

Page 37: UberFire Quick Intro and Overview (early beta Jul 2013)

KIE

Saturday, 29 June 13

Page 38: UberFire Quick Intro and Overview (early beta Jul 2013)

UberFire

Saturday, 29 June 13

Page 39: UberFire Quick Intro and Overview (early beta Jul 2013)

UberFire Architecture

Saturday, 29 June 13

Page 40: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 41: UberFire Quick Intro and Overview (early beta Jul 2013)

Workbench Screen

Saturday, 29 June 13

Page 42: UberFire Quick Intro and Overview (early beta Jul 2013)

Workbench Screen

@WorkbenchScreen(identifier = "MyFirstPanel")public class MyFirstPanel extends SimplePanel {

public MyFirstPanel() { setWidget( new Label("Hello World 1") ); }

@WorkbenchPartTitle public String myTitle() { return "My First Panel!"; }

}

Saturday, 29 June 13

Page 43: UberFire Quick Intro and Overview (early beta Jul 2013)

Workbench Screen$registerPlugin({ id: "my angular js", type: "angularjs", templateUrl: "angular.sample.html", title: function () { return "angular " + Math.floor(Math.random() * 10); }, on_close: function () { alert("this is a pure JS alert!"); }});<div ng-controller="TodoCtrl"> <span>{{remaining()}} of {{todos.length}} remaining</span> [ <a href="" ng-click="archive()">archive</a> ] <ul class="unstyled"> <li ng-repeat="todo in todos"> <input type="checkbox" ng-model="todo.done"> <span class="done-{{todo.done}}">{{todo.text}}</span> </li> </ul> <form ng-submit="addTodo()"> <input type="text" ng-model="todoText" size="30" placeholder="add new todo here"> <input class="btn-primary" type="submit" value="add"> </form> <form ng-submit="goto()"> <input type="text" ng-model="placeText" size="30" placeholder="place to go"> <input class="btn-primary" type="submit" value="goTo"> </form></div>

Saturday, 29 June 13

Page 44: UberFire Quick Intro and Overview (early beta Jul 2013)

Workbench Editor

Saturday, 29 June 13

Page 45: UberFire Quick Intro and Overview (early beta Jul 2013)

@WorkbenchEditor(identifier = "TextEditor", supportedTypes = { TextResourceType.class, DotResourceType.class })public class TextEditorPresenter {

@WorkbenchPartTitle public String getTitle() { return "Text Editor [" + path.getFileName() + "]"; }

@WorkbenchPartView public IsWidget getWidget() {

return view; //injected } (...)}

Workbench Editor

Saturday, 29 June 13

Page 46: UberFire Quick Intro and Overview (early beta Jul 2013)

Screen Life Cycles

OnStart OnSave IsDirtyOnCloseOnFocusOnLostFocusOnMayCloseOnReveal

Lifecycle

Saturday, 29 June 13

Page 47: UberFire Quick Intro and Overview (early beta Jul 2013)

@WorkbenchEditor(identifier = "TextEditor", supportedTypes = { TextResourceType.class, DotResourceType.class })public class TextEditorPresenter { (...)

@OnStart public void onStart( final Path path ) { this.path = path; }

@OnSave public void onSave() { }

@IsDirty public boolean isDirty() { return view.isDirty(); }}

Life Cycle Annotations

Saturday, 29 June 13

Page 48: UberFire Quick Intro and Overview (early beta Jul 2013)

Workbench Perspective

Saturday, 29 June 13

Page 49: UberFire Quick Intro and Overview (early beta Jul 2013)

Window ManagersNESW, with DnD

Nesting, for flexible layouts.Supports programmatic and json

FutureGridTemplates

Saturday, 29 June 13

Page 50: UberFire Quick Intro and Overview (early beta Jul 2013)

@WorkbenchPerspective( identifier = "HomePerspective", isDefault = true)public class HomePerspective {

@Perspective public PerspectiveDefinition buildPerspective() { final PerspectiveDefinition p = new PerspectiveDefinitionImpl(); p.setName( "Home Perspective" ); p.getRoot().addPart( new PartDefinitionImpl( new DefaultPlaceRequest( "RepoList" ) ) );

return p; }}

Workbench Perspective

Saturday, 29 June 13

Page 51: UberFire Quick Intro and Overview (early beta Jul 2013)

Workbench Perspective$registerPerspective({ "id": "Markdown Editor", "view": { "parts": [ { "place": "MarkdownLiveViewer", "parameters": {} } ], "panels": [ { "width": 600, "min_width": 300, "position": "west", "parts": [ { "place": "MarkdownLiveEditor", "parameters": {} } ] } ] }, on_close: function () { }});

Saturday, 29 June 13

Page 52: UberFire Quick Intro and Overview (early beta Jul 2013)

UberFire Annotations

OnStart OnSave IsDirtyOnCloseOnFocusOnLostFocusOnMayCloseOnReveal

WorkbenchEditorWorkbenchPerspectiveWorkbenchPopupWorkbenchScreen

WorkbenchPartTitleWorkbenchPartViewWorkbenchMenuPerspective

Components Lifecycle ComponentRendering Info

Saturday, 29 June 13

Page 53: UberFire Quick Intro and Overview (early beta Jul 2013)

Hyrbid Plugins

Saturday, 29 June 13

Page 54: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 55: UberFire Quick Intro and Overview (early beta Jul 2013)

DEMO 1BRMS Beta3

Saturday, 29 June 13

Page 56: UberFire Quick Intro and Overview (early beta Jul 2013)

DEMO 2BPMS Beta4

Saturday, 29 June 13

Page 57: UberFire Quick Intro and Overview (early beta Jul 2013)

DEMO 3Web IDE

Saturday, 29 June 13

Page 58: UberFire Quick Intro and Overview (early beta Jul 2013)

Saturday, 29 June 13

Page 59: UberFire Quick Intro and Overview (early beta Jul 2013)

UI Improvments

Saturday, 29 June 13

Page 60: UberFire Quick Intro and Overview (early beta Jul 2013)

UberFire new Navigation System

Saturday, 29 June 13

Page 61: UberFire Quick Intro and Overview (early beta Jul 2013)

UberFire new Navigation System

Saturday, 29 June 13

Page 62: UberFire Quick Intro and Overview (early beta Jul 2013)

UberFire new Navigation System

Saturday, 29 June 13

Page 63: UberFire Quick Intro and Overview (early beta Jul 2013)

UberFire new Navigation System

Saturday, 29 June 13

Page 64: UberFire Quick Intro and Overview (early beta Jul 2013)

DEMO 4Dynamic non-GWT Plugins

(Live, no Video)

Saturday, 29 June 13

Page 65: UberFire Quick Intro and Overview (early beta Jul 2013)

Proof Is In The Pudding

Saturday, 29 June 13

Page 66: UberFire Quick Intro and Overview (early beta Jul 2013)

UI Rewrite started in NovemberEntire BRMS portedNew BPMS built, all integratedTasks, Calendars, BPM DesignerOnly one person on core UI frameworkAll team memebers distributedDespite aggressive schedule

Code remains modularEasy to maintain and extend

Proof Is In The Pudding

Saturday, 29 June 13