Rhodes Overview
-
Upload
ernad-husremovic -
Category
Technology
-
view
1.748 -
download
1
description
Transcript of Rhodes Overview
Adam [email protected]
The Rhomobile Mission
Mobilize enterprise apps… cost-effectively witha great user experience. -provide the high level productivity and portability of
web programming- with device optimization and offline capability of “native mobile apps”- open source for rapid adoption by developers
Platform Overview
Rhodes “microframework” for building locally
executing natively optimized mobile apps Developers run app generator for their
objects of interest and then edit HTML templates
Contains first mobile Ruby implementation RhoSync
Sync focused on web service data (needed in the age of SaaS)
The Rhodes Microframework• a minimalist Ruby implementation for mobile
devices• a Model-View-Controller "microframework"
that consists of a directory structure and file naming convention. Writing to this framework primarily consists of editing a set of ERB templates for creating HTML to display data
• the RhoSync synchronization engine client• a simple object relational manager (ORM)
called Rhom• a web server which is installed on the mobile
device and runs locally• The RhoGen app generator
Sample Rhodes Apps Rhomobile provides small set of enterprise apps
CRM - subset of SugarCRM’s capabilities: syncing to opportunities, contacts to deviceField service – Siebel field service
third party apps TrailGuide (Basecamp) will release in a couple months small number of vendors will accept GPL license their source will be published on rhohub.com highlight best of breed examples in several verticals: field service/MRO, medical, scientific
Building a Rhodes App
• Get your data (RhoSync)• Generate a sync source• Define your sync source adapter code• Test it from the web page
• Generator your app (RhoGen)• Generate an app (in the Rhodes \apps subdirectory for
now)• Generate a model and scaffold code
• Develop your app (Ruby/HTML editor of choice)• Edit your model controllers• Edit your HTML templates (ERB file)
• Build, test, deploy (development environment for device) • Build your app• Test your app• Make available for download (or post to App Store)
RhoSync Architecture
RhoSync
Server
RhoSync
ServerRhodesruntimeRhodesruntime
your appyour app
other appbackendsother appbackends
SugarCRMSugarCRM
SiebelSiebel
SalesForce
SalesForce
BaseCamp
BaseCamp
SOAP
SOAP
SOAP
REST
REST
Defining a Rhosync Source
Provide a Source Adapter class with• login- authentication code for the backend• query - retrieve or read's objects from the
backend source• sync - take apart these objects and put
them into a "property bag” • create • update• delete• logoff – not always necessary
Generated Source Adapter Class
class <%=name%> < SourceAdapter def initialize(source) super end
def login #TODO: Write some code here end
def query # TODO: write some code here end
def sync # usually the generic base class sync does the job super end
def create(name_value_list) #TODO: write some code here end
def update(name_value_list) #TODO: write some code here end
def delete(name_value_list) #TODO: write some code here if applicable end
def logoff #TODO: write some code here if applicable end
end
Sample Rhosync Source Query
select_fields = ['name','case_number','priority','status','type','description','resolution']
result = client.get_entry_list(session_id,'Cases','','case_number',0,select_fields,'10000',0);
Rhodes Architecture
RhoSync
Server
RhoSync
Server
other appbackendsother appbackends
SugarCRMSugarCRM
SiebelSiebel
SalesForce
SalesForce
BaseCamp
BaseCamp
database (SQLite,
PerstLite)
database (SQLite,
PerstLite)
Rhodes app
RhoSync client
RhoSync client
web serverweb server
ORM(Rhom)ORM(Rhom)
Rhodes runtime
browsercontrolbrowsercontrol
Rubyinterpreter
Rubyinterpreter
HTML (ERB)
templates
HTML (ERB)
templates
modelcontroll
ercontroll
er
model HTML (ERB)
templates
HTML (ERB)
templates
controller
controller
Generate Your Rhodes App
Generate your app
rhogen app accountapp
Creates…
application.rbindex.html
Generate your modelcd accountapprhogen model account http://rhosync.rhohub.com/sources/1 1
name,industry
Creates…controller.rbconfig.rbindex.erbnew.erbedit.erb
Edit A View<form title="Edit Account" class="panel" id="account_edit_form" method="POST"
action="<%=url_for('update')%>"> <fieldset> <input type="hidden" name="id" value="<%[email protected]%>"/> <div class="row"> <label>Name: </label> <input type="text" name="account[name]" value="<%[email protected]%>"/> </div> <div class="row"> <label>Industry: </label> <select name="account[industry]"> <%@industries.each do |i|%> <option value=<%=i%> <%if @account.industry==i%> selected<%end%>><%=i%> </option> <%end%> </select> </div> </fieldset> <input type="submit" value="Update"/>
</form>
Build/Test On Your Favorite Device
Platform Status
• 0.1 operational on iPhone, Windows Mobile and RIM Blackberry today
• Sample apps for SugarCRM and Siebel Field Service
• All open source• github.com/rhomobile• rhomobile.lighthouseapp.com
• 0.2 at end of December• Better build process• Faster sync• Faster startup• Symbian• Settable source (already checked in)• PIM access
0.3 Release
• February 2009– Hosted services (i.e. app hosting site:
http://rhohub.com) – RhoVer - vending machine– Device capabilities service – Android support
Hosted Services
• Registration– Developers – Apps
• Sync– Create – Test
• App Creation– Generate – Edit– Download/upload
• Build and provision– Builds– Vending
18
RhoVer RhoVer DeviceCapDeviceCap
3) User hits vending machine for app with mobile browser
Download app for your Kogan
Agora
Download app for your Kogan
Agora
4) Uses DeviceCap (useragent strings/devices) to send back download link
1) user signs up via desktop browser
5) User downloads runner/app for device
enterpriseapp backend
enterpriseapp backend
2) SMS sent to user with download URL
RhoSyncRhoSync
6) App is running on device
rhohub.com/vending/yourapp
!
rhohub.com/vending/yourapp
!
RhodesRhodes
Your appYour app
Why Rhomobile?
Declarative tag-based approach (web programming) is more productive
Rich client against local data much better than remote web apps
Write it once and it works on all smartphones
Open source from the ground up