incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ahmad Khalifa <>
Subject Business Framework Project
Date Tue, 22 Jan 2008 14:20:43 GMT

I wanted to propose a new project idea. This is not a formal proposal,
this just an attempt to see if such a project has a place at the ASF,
and if anyone would be interested in participating.

Note, The project has a working codebase.

The application is a framework for creating business applications.
Unlike some business application frameworks, this one does not generate
Java code or XML, instead it has a repository to store object
definitions, and the runtime interprets those object definitions to
views, records, logic, SQL, etc...

The main advantage to this framework is customization. It is highly
customizable. There are several CRM/ERP/etc. applications out there but
they usually lack in customization features as most of those
applications have hard coded entities with some extra customization
features added on top. What I mean by customization is the ability to
change something via an easy to use GUI. Most of the available
applications can be changed, but they require this to be done by
changing php, xml, jsp, etc.. which is a development effort. What I am
proposing is something at a higher level that gets you thinking only
about entities, fields, views, application logic, user access, etc.. and
IMHO this is important in a business application where your main focus
should be on the business logic rather than 'Did I terminate that last tag?'

Basically, you use this application to define objects that represent
entities, fields, views, picklists, database tables, etc... through the
application's development section, then you instantly go to those views
to see your changes. The definitions are stored in the application database.

The development section itself is developed using the application
itself, i.e. the development section is stored in the database
repository and at runtime its interpreted to views, fields, SQL, etc...
There is also an incomplete CRM-like implementation.

Some key features:

* 3-Tiered object architecture allow re-use
   + Object definitions are separated into 3 main tiers, which are:
     --> User interface objects
     --> Business Entities
     --> Database Tables
   + You can, for example:
     --> Reuse UI components in multiple places without extra effort.
     --> Reuse Business Entities in multiple UI objects.
     --> Reuse database tables in multiple entities.
* Business logic can be implemented in multiple ways.
   + Through object attributes, you can for example:
     - Define read only fields.
     - Define field data types.
     - Define field pick lists.
   + Through formulas (using JSP-EL syntax), you can for example:
     - Define field Readonly status conditions, interpreted at runtime.
     - Define field value validation formulas. Regex can be used.
     - Define field default values.
   + Through Scripting (currently using Rhino JS), you can for example:
     - Override events in data lifecycle to perform any business task.
     - For example, you can overide when the /Loan Approval/ field gets
       set to 'Approved' to verify that the user has enough quota.
* Aggregate entities
   + Define which field to 'Group By' and which one to 'Count' and you
     have an entity that retrieves aggregate data.
   + Charts can be displayed from aggregate data (through jfreechart).
* Interactive javascript client, or stripped down wireless interface
   + Through different templates (JSPs created with the framework) the
     objects can be made to render javascript-intensive views, or
     stripped down versions that are suitable for wireless devices.
   + Both versions would re-use the same entity objects defined.

Ultimately, what this would be good for, is to offer several
pre-built applications along the lines of CRM, ERP, Accounting, POS,
etc... just like some already available applications, but the extra
customization features would make it much more adaptable/extendable to
organizations, and much easier to extend to more business domains.

Well, this is my first stab at it. Comments?


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message