RX Method in a Nutshell
History
In 1999 OOIT.com created a prototype for a data populating system with more than 500 types of business objects. The classical development approach of implementing such a huge number of classes by creating data classes, UI classes and code for saving, retrieval, access control, search seemed impossible and inappropriate. Therefore, a system was built which did not 'hard code' any business objects. Instead the business object types were defined with in a XML like structure. These structures could be added and changed without rebuilding the runtime. This prototype was quite a success and was finished with all relevant logical components implemented. The project name for this prototype was MOM (Meta Object Method). Still the core part of RX Method is based on the ideas of MOM.
Today
Today RX Method is a method and system which offers the creation of many kind of business applications by using specification like programs. So far, we see that RX Method is best used for
  • Replacing ad hoc data collections with a business application (Excel, Texts),
  • Prototyping business applications,
  • Data centered business applications,
  • Highly structured content management for Web sites.
Technically, RX Method consists of the so called RX Definitions which run on the RX Runtime. The following diagram shows in a context diagram how the system is built up.
RX Architecture
The RX Runtime consists of the three server parts RX UI, RX Logic and RX DB. The application itself is a set of XML files, called RX Definitions. RX Definitions cover class definitions which define the business objects attributes, name and attribute labels in multiple languages, attribute types, access elements (create, read, write and delete). Further, the user interface (UI) parts are defined with a definition for edit, for view, and for reports.
List of features
The RX Definitions provide the following features:
  • Attribute definition with various attribute types such as:
    • String
    • Text
    • HTML Text
    • Float
    • Integer
    • Boolean
    • Currency
    • Code table (enumeration)
    • List
    • Tuple
    • One of
    • Foreach
    • Component
    • Reference
  • Multiple language support for all names, labels and descriptions
  • For objects and any of their attributes access roles can be defined for 'create', 'read', 'write' and 'delete'
  • 'Four eyes approval' can be defined on attribute level.
  • For any attribute historical values can be saved.
  • Support for multiple inheritance
  • Support for abstract classes
  • UI definition for edit, read, synopsis and reports without UI programming
  • Document and Picture up and down load components available
  • Pluggable UI support (write your own UI widgets)
  • RX UI is a Ajax based web interface. Currently www.zkoss.org is the Ajax framework used. GWT is planned.
  • Persistence support for relational database
  • Code generation: from RX Definitions bean like classes with search, save methods etc. can be created.
  • Direct (user interface free) usage of RX Logic and RX DB is possible
  • Security components for various login scenarios are available such as: Server login (JAAS), public web users, member login
An Example : RX Address
The following example of an address database shows a simple but not trivial application built with RX Method. Its business objects are Person and Address. The source files are: The element def starts with a class name (attribute moid). Followed by modifier elements such as topLevel or component. Then, name and description elements are defined.
The element accessRoles defines the access to the create, read, edit or delete methods of an object.
The attributes element contains all attributes of the class.
code1
The attribute firstName has a default and a german language label defined by the element label. It type is defined by the type element string. The string can have maximum length of 64 characters. The presence of the element searchable activates the textual search for attribute values. The existence of the element mandatory signifies that the attribute is mandatory.

The XML part below shows how the edit UI is defined. The element editUI contains two page elements. The page elements contain control elements with a reference to the attribute by attref.
code2
In a very similar way the view UI and the synopsis UI are defined. The synopsis UI is used for display in result sets.
code3
And that's it!

With these simple definitions, the RX Address application is ready to deploy!

No additional code for database, for logic or for user interface is needed.

Screenshots:

code3