Difference between revisions of "Ajax Client"

From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.
(Alternative Architecure)
(Resource: zk ajax guide)
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
==Architecture==
 
==Architecture==
Thick javascript client base on the existing Swing client architecture. Rendering of UI will be done on the client side using advance javascript GUI framework like [http://dojotoolkit.org/ Dojo], [http://qooxdoo.org/ Qooxdoo] or [http://code.google.com/webtoolkit/ GWT]. The server-side is exposed to the javascript client as RESTian or JSON-RPC endpoint to served and process dynamic data. The primary motivation of this approach is to produce richer, more performant UI experience than the Thin Client.
 
There should be minimum changes required on the current ADempiere core.
 
  
==Dynamic Data Format==
+
=== Thick Javascript Client ===
[http://www.json.org/ JSON] instead of XML is use as it produces more compact representation , it is blazingly fast to parse on a client — essentially simple JavaScript eval() would do, and it is very simple to parse on a server too.
+
Rendering of UI will be done on the client side using advance javascript GUI framework like [http://dojotoolkit.org/ Dojo], [http://qooxdoo.org/ Qooxdoo] or [http://code.google.com/webtoolkit/ GWT]. The server-side is exposed to the javascript client as RESTian or JSON-RPC endpoint to served and process dynamic data. The primary motivation of this approach is to produce richer, more performant UI experience than the Thin Client.
 +
 
 +
=== Thin Javascript Client ===
 +
A server side model where the application code is mainly running on the server side and smartly refreshing the client by using AJAX. This is the easier path as more code from the current Swing client can be reused.
 +
*[http://www.nextapp.com/platform/echo2/echo/ Echo2]
 +
**Swing like API
 +
**[http://www.nextapp.com/platform/echo2/echo/demo/ Online Demo]
 +
*[http://www.eclipse.org/rap Eclipse RAP]
 +
**Using the proven eclipse plugin architecture
 +
**[http://rap.innoopract.com/rap?w4t_startup=default&w4t_scriptEnabled=false&w4t_ajaxEnabled=false&w4t_width=1024&w4t_height=768  Online Demo]
 +
*[http://www.zkoss.org ZK]
 +
**Swing like API
 +
**[[Flash_Demo_of_Ajax_Client|POC by the Posterita team]] ( [[User:Agramdass|Ashley Ramdass]] )
 +
**[http://www.zkoss.org/zkdemo/userguide/ Online Demo]
  
 
==Transport==
 
==Transport==
Line 16: Line 27:
 
* Login
 
* Login
 
* Tree Menu
 
* Tree Menu
* Opening of window
+
** Standard tree navigation support
* Preview of report
+
** Find menu item
 +
* Application window
 +
** Standard CRUD operations
 +
** Grid and form mode
 +
* Form window
 +
* Process window
 +
** Process parameter
 +
** Execution of long running process
 +
* Report window
 +
** Report parameter
 +
** Preview of report
  
Please find a demo of posterita POC for the ajax client. [http://www.posterita.org/share/WebUIAdempierePosterita.EXE posterita ajax client] Implemented by: [[User:Agramdass|Ashley Ramdass]]
+
==Status==
 +
*We have decided to use the thin javascript client model and a working version is now in the svn, develop using the ZK Ajax framework. The initial version is contributed by Ashley from Posterita.
 +
*Posterita has pulled out of the ADempiere Bazaar and the ZK UI is largely finished by [[user:hengsin|Low Hengsin]] and here is a developer's tutorial for [[Creating WebUI Workspace]] so that more volunteers can extend and contribute it. - [[User:Red1|Red1]] 07:37, 25 July 2008 (EDT)
  
==Schedule==
+
==Discussions==
Current plan is to build a POC and demonstrate at the ADempiere Europe Conference this May.
+
*[[Exec Summary 4/4/07]]
 +
*[[IRC log 4/4/07]]
  
 
==Resource==
 
==Resource==
* [http://json-lib.sourceforge.net/ JSON Binding for Java]
+
*[http://www.zkoss.org ZK Ajax Framework]
* [http://json-rpc.org/ JSON RPC]
+
*[http://extjs.com/ Ext JS Library]
** [http://qooxdoo.org/documentation/user_manual/rpc Qooxdoo binding]
+
*[http://www.linux.com/feature/141601 Good guide on ZK Ajax]
** [http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book9 Dojo binding]
+
  
 
==Team Members==
 
==Team Members==
 
+
*[[User:Hengsin|Low Hengsin]] (Avantz, Malaysia)
*[[User:Agramdass|Ashley G Ramdass]] (posterita)
+
*[[User:Agramdass|Ashley G Ramdass]] (posterita) - (withdrawn)
 
* (pls add your name here - pros only)
 
* (pls add your name here - pros only)
 
==Alternative Architecure==
 
Another alternative is a server side model where the application code is mainly running on the serverside and smartly refreshing the client by using AJAX. This could be the easier path as more code from the current Swing client can be reused.
 
*[http://www.nextapp.com/platform/echo2/echo/ Echo2]
 
**Swing like API
 
**[http://www.nextapp.com/platform/echo2/echo/demo/ Online Demo]
 
*[http://www.eclipse.org/rap Eclipse RAP]
 
**Using the proven eclipse plugin architecture
 
**[http://rap.innoopract.com/rap?w4t_startup=default&w4t_scriptEnabled=false&w4t_ajaxEnabled=false&w4t_width=1024&w4t_height=768  Online Demo]
 
*[http://www.zkoss.org ZK]
 
**Swing like API
 
**[[Flash_Demo_of_Ajax_Client|POC started by the Posterita team]]
 
**[http://www.zkoss.org/zkdemo/userguide/ Online Demo]
 
  
 
[[Category:Projects]]
 
[[Category:Projects]]

Latest revision as of 14:46, 20 September 2008

Architecture

Thick Javascript Client

Rendering of UI will be done on the client side using advance javascript GUI framework like Dojo, Qooxdoo or GWT. The server-side is exposed to the javascript client as RESTian or JSON-RPC endpoint to served and process dynamic data. The primary motivation of this approach is to produce richer, more performant UI experience than the Thin Client.

Thin Javascript Client

A server side model where the application code is mainly running on the server side and smartly refreshing the client by using AJAX. This is the easier path as more code from the current Swing client can be reused.

Transport

  • XMLHttp
The XMLHttp transport is the default transport. It works well in most cases, but it cannot transfer files.
  • IFrame
The IFrame I/O transport is useful because it can upload files to the server.

Proof Of Concept

A prototype should be build as a POC. The prototype should demonstrate the following features:

  • Login
  • Tree Menu
    • Standard tree navigation support
    • Find menu item
  • Application window
    • Standard CRUD operations
    • Grid and form mode
  • Form window
  • Process window
    • Process parameter
    • Execution of long running process
  • Report window
    • Report parameter
    • Preview of report

Status

  • We have decided to use the thin javascript client model and a working version is now in the svn, develop using the ZK Ajax framework. The initial version is contributed by Ashley from Posterita.
  • Posterita has pulled out of the ADempiere Bazaar and the ZK UI is largely finished by Low Hengsin and here is a developer's tutorial for Creating WebUI Workspace so that more volunteers can extend and contribute it. - Red1 07:37, 25 July 2008 (EDT)

Discussions

Resource

Team Members