Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UF UberFire
Saturday, 29 June 13
GWT
Saturday, 29 June 13
GWT
Google committed to Open Source development
model
Steering Commit/Transparency
TimeBox releases (twice year)
Future fo...
GWT
GWT used extensively at Google
Adwords (97% of google revenue)
Google Groups (rewrite just announced)
Major new consum...
BRMS and BPMS
Saturday, 29 June 13
BRMS and BPMS
Authoring
Build
Deploy
Saturday, 29 June 13
BRMS and BPMS
Authoring
Build
Deploy
Monitor and Manage
Work
Saturday, 29 June 13
BRMS Components
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
Saturday, 29 June 13
What we Learned
Saturday, 29 June 13
5.x Critique
UI
GWT
But not easily
extended
Fixed layouts
No perspectives
Saturday, 29 June 13
5.x Critique
JCR
Performance Issues
Everything stored as blob
No tagging, branching etc.
Webdav
Limited team providers
Sat...
6.x Requirements
Modular design
Plugins
Compile time composition of plugins
Maven modules
Hybrid GWT + JS support (Runtime...
6.x Requirements
Panels
Common Life cycles
Panel re-use in other frameworks
Eclipse, Portal etc
Security visibility
Hybrid...
6.x Requirements
Perspectives
Flexible layout with DnD
Multiple layout managers
Security visibility
Hybrid GWT + JS suppor...
6.x Requirements
Menu’s, Toolbars
decoupled form components
contextual to perspective and focus panel
Security visibility
...
6.x Requirements
GIT Backend
VFS (nio2)
seamless API for client and Server
Security
MetaData
stored as .dot file in git fo...
KIE
Knowledge is
Everything
Saturday, 29 June 13
KIE
Saturday, 29 June 13
KIE
Saturday, 29 June 13
UberFire
Saturday, 29 June 13
UberFire Architecture
Saturday, 29 June 13
Saturday, 29 June 13
Workbench Screen
Saturday, 29 June 13
Workbench Screen
@WorkbenchScreen(identifier = "MyFirstPanel")
public class MyFirstPanel extends SimplePanel {
public MyFi...
Workbench Screen$registerPlugin({
id: "my angular js",
type: "angularjs",
templateUrl: "angular.sample.html",
title: funct...
Workbench Editor
Saturday, 29 June 13
@WorkbenchEditor(identifier = "TextEditor",
supportedTypes = { TextResourceType.class,
DotResourceType.class })
public cla...
Screen Life Cycles
OnStart
OnSave
IsDirty
OnClose
OnFocus
OnLostFocus
OnMayClose
OnReveal
Lifecycle
Saturday, 29 June 13
@WorkbenchEditor(identifier = "TextEditor",
supportedTypes = { TextResourceType.class,
DotResourceType.class })
public cla...
Workbench Perspective
Saturday, 29 June 13
Window Managers
NESW, with DnD
Nesting, for flexible layouts.
Supports programmatic and json
Future
Grid
Templates
Saturda...
@WorkbenchPerspective(
identifier = "HomePerspective",
isDefault = true)
public class HomePerspective {
@Perspective
publi...
Workbench Perspective$registerPerspective({
"id": "Markdown Editor",
"view": {
"parts": [
{
"place": "MarkdownLiveViewer",...
UberFire Annotations
OnStart
OnSave
IsDirty
OnClose
OnFocus
OnLostFocus
OnMayClose
OnReveal
WorkbenchEditor
WorkbenchPersp...
Hyrbid Plugins
Saturday, 29 June 13
Saturday, 29 June 13
DEMO 1
BRMS Beta3
Saturday, 29 June 13
Saturday, 29 June 13
DEMO 2
BPMS Beta4
Saturday, 29 June 13
Saturday, 29 June 13
DEMO 3
Web IDE
Saturday, 29 June 13
Saturday, 29 June 13
UI Improvments
Saturday, 29 June 13
UberFire new Navigation System
Saturday, 29 June 13
UberFire new Navigation System
Saturday, 29 June 13
UberFire new Navigation System
Saturday, 29 June 13
UberFire new Navigation System
Saturday, 29 June 13
DEMO 4
Dynamic non-GWT Plugins
(Live, no Video)
Saturday, 29 June 13
Upcoming SlideShare
Loading in …5
×

UberFire Quick Intro and Overview (early beta Jul 2013)

2,229 views

Published on

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

Published in: Technology
  • Be the first to comment

UberFire Quick Intro and Overview (early beta Jul 2013)

  1. 1. UF UberFire Saturday, 29 June 13
  2. 2. GWT Saturday, 29 June 13
  3. 3. GWT Google committed to Open Source development model Steering Commit/Transparency TimeBox releases (twice year) Future focus Mobile (reduced CPU utilization, more code splitting) Easier “Hyrbid” apps Smaller and faster executions Saturday, 29 June 13
  4. 4. GWT GWT used extensively at Google Adwords (97% of google revenue) Google Groups (rewrite just announced) Major new consumer projects about to be announced Big chunk of internal IT 100K+ monthly auto-update pings (Eclipse) GWT considered mature Not investing in marketing or evangalising Saturday, 29 June 13
  5. 5. BRMS and BPMS Saturday, 29 June 13
  6. 6. BRMS and BPMS Authoring Build Deploy Saturday, 29 June 13
  7. 7. BRMS and BPMS Authoring Build Deploy Monitor and Manage Work Saturday, 29 June 13
  8. 8. BRMS Components Saturday, 29 June 13
  9. 9. Saturday, 29 June 13
  10. 10. Saturday, 29 June 13
  11. 11. Saturday, 29 June 13
  12. 12. Saturday, 29 June 13
  13. 13. Saturday, 29 June 13
  14. 14. Saturday, 29 June 13
  15. 15. Saturday, 29 June 13
  16. 16. Saturday, 29 June 13
  17. 17. Saturday, 29 June 13
  18. 18. Saturday, 29 June 13
  19. 19. Saturday, 29 June 13
  20. 20. Saturday, 29 June 13
  21. 21. Saturday, 29 June 13
  22. 22. Saturday, 29 June 13
  23. 23. Saturday, 29 June 13
  24. 24. Saturday, 29 June 13
  25. 25. Saturday, 29 June 13
  26. 26. Saturday, 29 June 13
  27. 27. What we Learned Saturday, 29 June 13
  28. 28. 5.x Critique UI GWT But not easily extended Fixed layouts No perspectives Saturday, 29 June 13
  29. 29. 5.x Critique JCR Performance Issues Everything stored as blob No tagging, branching etc. Webdav Limited team providers Saturday, 29 June 13
  30. 30. 6.x Requirements Modular design Plugins Compile time composition of plugins Maven modules Hybrid GWT + JS support (Runtime Plugins) Twitter Bootstrap UI Saturday, 29 June 13
  31. 31. 6.x Requirements Panels Common Life cycles Panel re-use in other frameworks Eclipse, Portal etc Security visibility Hybrid GWT + JS support (Runtime Plugins) Saturday, 29 June 13
  32. 32. 6.x Requirements Perspectives Flexible layout with DnD Multiple layout managers Security visibility Hybrid GWT + JS support (Runtime Plugins) Saturday, 29 June 13
  33. 33. 6.x Requirements Menu’s, Toolbars decoupled form components contextual to perspective and focus panel Security visibility GIT Backend High Availabilty GIT cluster Saturday, 29 June 13
  34. 34. 6.x Requirements GIT Backend VFS (nio2) seamless API for client and Server Security MetaData stored as .dot file in git for each “asset” High Availability GIT cluster Saturday, 29 June 13
  35. 35. KIE Knowledge is Everything Saturday, 29 June 13
  36. 36. KIE Saturday, 29 June 13
  37. 37. KIE Saturday, 29 June 13
  38. 38. UberFire Saturday, 29 June 13
  39. 39. UberFire Architecture Saturday, 29 June 13
  40. 40. Saturday, 29 June 13
  41. 41. Workbench Screen Saturday, 29 June 13
  42. 42. 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
  43. 43. 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
  44. 44. Workbench Editor Saturday, 29 June 13
  45. 45. @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
  46. 46. Screen Life Cycles OnStart OnSave IsDirty OnClose OnFocus OnLostFocus OnMayClose OnReveal Lifecycle Saturday, 29 June 13
  47. 47. @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
  48. 48. Workbench Perspective Saturday, 29 June 13
  49. 49. Window Managers NESW, with DnD Nesting, for flexible layouts. Supports programmatic and json Future Grid Templates Saturday, 29 June 13
  50. 50. @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
  51. 51. 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
  52. 52. UberFire Annotations OnStart OnSave IsDirty OnClose OnFocus OnLostFocus OnMayClose OnReveal WorkbenchEditor WorkbenchPerspective WorkbenchPopup WorkbenchScreen WorkbenchPartTitle WorkbenchPartView WorkbenchMenu Perspective Components Lifecycle Component Rendering Info Saturday, 29 June 13
  53. 53. Hyrbid Plugins Saturday, 29 June 13
  54. 54. Saturday, 29 June 13
  55. 55. DEMO 1 BRMS Beta3 Saturday, 29 June 13
  56. 56. Saturday, 29 June 13
  57. 57. DEMO 2 BPMS Beta4 Saturday, 29 June 13
  58. 58. Saturday, 29 June 13
  59. 59. DEMO 3 Web IDE Saturday, 29 June 13
  60. 60. Saturday, 29 June 13
  61. 61. UI Improvments Saturday, 29 June 13
  62. 62. UberFire new Navigation System Saturday, 29 June 13
  63. 63. UberFire new Navigation System Saturday, 29 June 13
  64. 64. UberFire new Navigation System Saturday, 29 June 13
  65. 65. UberFire new Navigation System Saturday, 29 June 13
  66. 66. DEMO 4 Dynamic non-GWT Plugins (Live, no Video) Saturday, 29 June 13
  67. 67. Proof Is In The Pudding Saturday, 29 June 13
  68. 68. UI Rewrite started in November Entire BRMS ported New BPMS built, all integrated Tasks, Calendars, BPM Designer Only one person on core UI framework All team memebers distributed Despite aggressive schedule Code remains modular Easy to maintain and extend Proof Is In The Pudding Saturday, 29 June 13

×