OpenBiz Tutorial
Open Business software framework
Aug. 2005
(Cover Openbiz 2.0 and above)
Rocky Swen
Agenda
Openbiz Overview
Architecture Stack
Build your applications
Design Design Design Design BizDataObj BizForm BizView HTML Template
Resource
OpenBiz Overview
What is OpenBiz?
OpenBiz is an open php business software framework
How can OpenBiz help?
Build data-oriented complicated web application in an easy way Build your application by constructing metadata file, not by coding Easily extending for special requirements
Architecture Stack
Metadata Objects Common Services
BizView Report service Model View Controller Object Relational Mapping
BizForm Input/ouput service Object Factory
BizDataObj Log service
Extended object Email Service DataObj Trigger Security Smarty ADODB
Common Application Infrastructure
Data Validation
XML Metadata Session Context
Runtime
PHP Windows Linux Others
Platforms
Build your application
Data model design
Database schema
BizDataObj design business data unit
What properties in the BizDataObj What functions provided by the BizDataObj What relationship between BizDataObjs
BizForm design presentation unit
Map BizDataObj properties and functions on UI
BizView design presentation container
Contain multiple BizForms
HTML Template design GUI
Data model design
Entity Relationship Graph
Modeling business data into database table schema Please refer to database design book for details
Create tables in database
Create tables/indexes using GUI tools or scripts Specify Prefix in id_table for each table so that SYSID of new record will be auto-generated as Prefix+sequence format. i.e. PLY_101 Add your database connection information to [Link]. i.e. replace the Default database
Data model design (example)
event {SYSID, NAME, HOST, LOCATION } regist {SYSID, PLAYER_ID, EVENT_ID, FEE} attendee {SYSID, NAME, EMAIL, PHONE }
A registration system modeling
BizDataObj design
Each BizDataObj is based on a database table base table Properties in the BizDataObj
Map a field from a base table column Join a field from a foreign table column Define table relationship by referencing other BizDataObj
Functions provided by the BizDataObj
Basic functions are provided by OpenBiz Implement special functions by extending BizDataObj
BizDataObj design (example)
BORegist - base table = regist Properties
Id [Link] Attendee Id regist.ATTENDEE_ID Attendee Name [Link] (by join) Event Id regist.EVENT_ID Event Name [Link] (by join) Fee [Link]
Functions BizDataObj provides enough functions, no special requirement
New object wizard in Eclipse
BizDataObj design in Eclipse
BizForm design
BizForm is the UI proxy of BizDataObj
A BizForm can have difference presentation mode (default, edit, query) associated with templates
Map a field control from BizObj field
Map a field control from base BizObj field Does a field need pick data from other BizForm? Is the field editable, visible?
Add functions on BizForm
Map functions provided by BizForm class to buttons. Implement special functions by extending BizForm
BizForm design (example)
FMRegist - base BizDataObj = BORegist
Default mode uses table Template ([Link]) Edit, query mode uses form Template ([Link])
Map BizObj fields to UI
Registration Id [Id] Attendee Id [Attendee Id] Noneditable Attendee Name [Player Name] Noneditable, Need select field data from AttendeePopup Event Id [Event Id] Noneditable Fee [Fee] Need select field from 2 values $15, $20.
BizForm design (example cont.)
Add function buttons on UI toolbar
Search button SearchRecord() Go button RunSearch() New button NewRecord() Edit button EditRecord() Copy button CopyRecord() Delete button DeleteRecord() Save button SaveRecord() Cancel button CancelRecord()
Add Navigation button on UI Navbar
Go Previous Button MovePrev() Go Next Button MoveNext()
Add ValuePicker to show popup form
BizForm design in Eclipse
BizView design
BizView is the container of BizForms and other HTML controls
Page layout is defined in templates
Define the relationship between BizForms
A BizForm can help subforms that depend on its current data A BizForm can depend on the current data of other BizForm
BizView design (example)
What can a user do on the Event view?
Add/edit a new event Add/edit attendee for the event
What should a user see on the view?
An event BizForm An attendee BizForm
What the relationship between Forms
The attendee form depends on the current data of the event form
BizView design (example cont.)
List of events (FMEvent BizForm)
SubCtrls="FMAttendeeChild"
The attendee of the above event (FMAttendeeChild BizForm)
Dependency is defined in their BizDataObjs
BizView design in Eclipse
HTML Template design
Typical templates
Table template a HTML table contains multiple BizForm records Edit template a HTML form contains single BizForm record
Other templates
Special templates, such as calendar
All templates must has format <form id={$name} name={$name}></form>
HTML Template design (cont.)
Data output from [Link]
{$title}, {$name} as value {$toolbar}, {$navbar} as array {$columns} as array field labels/headers In table format
{$fmttable} as HTML table as a whole
In array format
{$fields} as array, for each item in the array [Link] and [Link] can be used
These output variables can be used in your template files
Please refer to [Link] for details
HTML Template design (cont.)
Design UI theme of your application
Build color theme using CSS CSS file is referred in BizView template Build button theme
Summary
Development steps with OpenBiz
Requirements Data model User Interface Create BizDataObj Create BizForm Create BizView Create Templates Openbiz Eclipse Plug-in
Resource
Openbiz home at [Link] Support email is changed to support@[Link] Openbiz Forum at [Link]