PROPOSAL : New Graffito Object Model
------------------------------------

         Key: GRFT-25
         URL: http://issues.apache.org/jira/browse/GRFT-25
     Project: Graffito
        Type: Improvement
  Components: Model  
    Versions: 1.0-a1-dev    
    Reporter: Christophe Lombart
 Assigned to: Christophe Lombart 
     Fix For: 1.0-a1-dev
 Attachments: graffito-model.png

Introduction
------------
This document describes a proposal for a new Graffito Object Model. 

In my point of view, the model has the following weaknesses : 
1. The CmsObject interface contains too many attributes. Title, description and 
owner should be not mandatory. Futhermore, this interface contains getObjects() 
and getProperties() which could be duplicate attributes.
2. The Document interface forces to have a binary content. Binary content is 
only interesting for Document management & asset management. We can expect to 
use Graffito for a CMS application containing only articles. In a such case, an 
article can be composed only of a set of String : title, summary, content, 
authors, ...  and not binary content. 
3. The Content interface is not an appropriate name. DocumentStream seems to be 
more explicit.
4. We need to have a better internationalisation support.
5. It is difficult to extend the model.

The New Object Model 
--------------------
The proposed model is splitted into different modules (see in attachement the 
UML class diagram) :
* The Graffito code module.
* A series of optional modules.

1. The Graffito Core Module
---------------------------
This module contains all ancestor objects like CmsObject, Folder, Content. 
Content is the ancestor of any kind of content object (Document, topic, 
article, ...). Versionning is not mandatory is all case. The 
"VersionnedContent" is the ancestor used in a version management context. As 
you can see, only content can be versionned. Later, we can support versionning 
on Folders. 

2. Optional modules 
-------------------
Depending on the application requirements, the Graffito users can select one or 
more optional modules. If the Graffito model doesn't fit to the application 
requirements, it should be possible to plug a customized module. One subproject 
per module has to be defined in the Graffito project. 

2.1 Document Management module
------------------------------
This module manage any kind of binary documents (Ms Word, pdf, ...). By 
default, this DM module is supporting internationalisation. In order to 
increase the performance, the DocumentStream should be defined as a proxy. All 
documents are versionned. 

2.2 Article Management module
-----------------------------
This module can manage translated articles or single language articles. All 
articles are versionned. 

2.3. Forum
----------
This module is a simple object model that can be used for a Forum application. 
Obviously, topic (the forum content) are not versionned. 

2.4. Other modules
------------------

Now, it should be easy to extend the Core Graffito module or any other optional 
modules. For example, someone can add a news management, asset management or 
customize the article module. 
  

3.Open points 
--------------
* Review the project structure in order to support modules.
* CmsObject interface : getProperties, getObjects() : David, are you using both 
attributes ?
* Internationalisation : providing by default in the different module or not ?  






-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to