Wulin kungfu final

34
Wulin Kungfu Fight for Ruby Enterprise problems

description

My topic on RubyConfChina2012, introduces wulin_master gem which is used for building enterprise application with ruby.

Transcript of Wulin kungfu final

Page 1: Wulin kungfu final

Wulin Kungfu Fight for Ruby Enterprise problems

Page 2: Wulin kungfu final

Background

!   FIFA World Cup 2010 in South Africa

!   BSS software managing the Broadcasting of the event !   TV and Radio orders

!   Broadcasting instructions

!   Temporal booking

!   Spatial booking

!   Finance

Page 3: Wulin kungfu final
Page 4: Wulin kungfu final

Problems

! Extjs (everything is JavaScript)

!   Code duplication !   Controllers setup for the JSON

!   JavaScript setup of the grid and screens

!   Heavy UI - Instability

Page 5: Wulin kungfu final

We hope …

!   Lighter

!   Easier

!   DSL

!   Faster productivity

Page 6: Wulin kungfu final

Birth of WulinMaster

Page 7: Wulin kungfu final

WulinMaster

!   A Ruby on Rails based framework

!   For resolving enterprise problems

!   Developer friendly

!   Extensible

Page 8: Wulin kungfu final

!   Application Interface

Page 9: Wulin kungfu final

Tools and technologies

!   Based on: !   Ruby on Rails ( >= 3.1 )

! SlickGrid ( https://github.com/mleibman/SlickGrid )

! jQuery plugins (jQuery UI, BBQ …)

!   The Wulin plugins are Rails Engines.

!   Use JSON as communication format.

Page 10: Wulin kungfu final

Architecture Your Application

Ruby on Rails

WulinMaster

WulinGrid

WulinScreen

SlickGrid

WulinPanel

jQuery Plugins

WulinScreenController WulinOAuth

WulinAudit

WulinPermit

WulinExcel

Other Wulin Plugins

GridAction GridBehavior

GridRelation GridColumn

WulinHomeController

GridStates

Page 11: Wulin kungfu final

Create Your Guild

Page 12: Wulin kungfu final

Wulin generator

rails g wulin_master:install

� create app/controllers/homepage_controller.rb (menu configuration) � create config/initializers/wulin_master.rb � route root :to => 'homepage#index’ �

Page 13: Wulin kungfu final

Build the menu

# app/controllers/homepage_controller.rb �

Page 14: Wulin kungfu final
Page 15: Wulin kungfu final

Wulin Grid

!   Fundamental component

!   Remote data

!   Auto cell types

!   Association columns

Page 16: Wulin kungfu final

Wulin Screen

!   Fundamental container

!   One/more grids/panels

!   Specific configurations for grids in it

Page 17: Wulin kungfu final

Model View

Controller

Browser

Rails MVC

Model

Screen

Controller

Browser

Wulin MVC

both change

Auto generated

grid grid

Page 18: Wulin kungfu final

Build a screen and a grid

rails g wulin_master:screen_and_grid blogger

name:string age:integer country:reference create db/migrate/20121115075159_create_bloggers.rb �

create app/controllers/bloggers_controller.rb � create app/screens/blogger_screen.rb � create app/grids/blogger_grid.rb � create app/models/blogger.rb � create app/views/bloggers�

route resources :bloggers�

Page 19: Wulin kungfu final

# app/grids/blogger_grid.rb �

# app/screens/blogger_screen.rb �

Page 20: Wulin kungfu final
Page 21: Wulin kungfu final

Your first house!

Page 22: Wulin kungfu final

Furnish it

!   Grid Action

!   Grid Behavior

!   Grid Relation

Page 23: Wulin kungfu final

Grid Action

!   A toolbar button

!   Active – respond to a user event

!   Implemented in JavaScript

!   Default actions are: Add, Edit, Delete

!   Plugins might provide default actions such as Export Excel, Audit, etc.

Page 24: Wulin kungfu final

Grid Behavior

!   Passive Triggered by grid event

!   Implemented by JavaScript

!   Default behaviors

Page 25: Wulin kungfu final
Page 26: Wulin kungfu final

# app/assets/javascripts/actions/show_info.js�

Page 27: Wulin kungfu final

# app/assets/javascripts/behaviors/say_hello.js�

Page 28: Wulin kungfu final

Grid Relation

!   One screen, multiple grids

!   Interaction between grids

!   Default relations

Page 29: Wulin kungfu final

# app/screens/bloggers_posts_screen.rb �

Page 30: Wulin kungfu final
Page 31: Wulin kungfu final

Level up!

Page 32: Wulin kungfu final

Crafting your own weapon

!   Rails Engine

!   Write your own components

!   Define your own actions / behaviors

!   Equip it

Page 33: Wulin kungfu final

Open source

! http://github.com/ekohe/wulin_demo �

! http://github/com/ekohe/wulin_master �

!   http://wulin_demo.ekohe.com�

Page 34: Wulin kungfu final

Jimmy Huang ([email protected]) 黄腾

@pake007