| Edit | Rename | Changes | History | Upload | Download | Back to Top |
Created by M. Roberts
Cincom Systems, Inc.
February 28, 2003
This page summarizes functional requirements for a Smalltalk CMF.
A typical CMF might provide the following:
Persistence
The main issue here seems to be: OODB vs. RBDMS. The two most plausible candidates on the OODB side are OmniBase and GemStone. On the RBDMS side, there are numerous possibilities.
Comment:
After spending a few months trying to use the VisualWorks EXDI, my inclination would be to use an OODB as the persistence engine for a CMF. For the Shoji CMF, I used OmniBase with very good results. [MDR]
Documents and Templates
The CMF provides an API for serving documents from a database - a single mechanism is used for persistent storage of all documents. Access to the document store is governed by rights assigned to each user/visitor.
Content-intensive sites are generally organized into sections or rubrics, where every document belonging to a given section is displayed using the same template. A document requested by a client is inserted into a template, and then sent to the client's browser. Content (documents) is cleanly separated from presentation (templates).
The CMF provides an interface to a document store that supports two types of objects: templates and documents. The distinction between them is that templates are actually Smalltalk Server Pages, while documents may be plain text, or HTML-formatted but with no active script.
Templates are used to define page structure and page functionalty. Whereas a template may be served as-is, a document is intended to be served by inserting it in a template. A document is thus an HTML fragment that contains no script. A collection of templates defines the site as a whole. Templates are stored in the database as a special kind of document, and may thus be edited and versioned as well.
Templates are further distinguished into two varities: templates and template elements, with the latter being a kind of inset used to build up a template from pieces (e.g., navigation bars, side bars, etc.).
The document manager handles indexing of documents for full-text searching, and caching of templates for improved performance. Each document includes keyword metadata, so that searches may be performed using specialized criteria.
Users and Groups
Visitors are encouraged to become members. A member, or user, has rights that govern access to the document store. Each user belongs to at least one group, and users acquire their rights by virtue of belonging to a group. These rights are managed by a moderator or administrator.
Group privileges control access to the document database. For example, the "editors" group has full access to the contents of the document database. Standard groups might include: administrators, editors, template designers, members, and guests. Each group also has a designated moderator who controls access to the group. Users with appropriate rights may also create new groups.
All user and group information is stored in the database. User profiles are controlled under a disclosure policy. Users may remain anonymous if they wish, with various levels of profile disclosure available.
Membership/registration suite
Visitors can register to become users, creating and later maintaining their user profile.
Authoring suite
A browser-based interface is provided to enable registered users to easily create documents, upload existing HTML files into the document store, and to modify these within the document store. Users can publish content with only a browser - just like a Wiki. It is not necessary to use FTP or access the server's file system to publish. For users that use blogging tools, a servlet interface should be provided as well.
Each document includes metadata to facilitate searching, versioning, and fields for providing links to references or similar documents. The authoring interface should make it possible to tag documents with metadata, and to modify, preview, and update them. It should be possible to schedule documents for publication or removal in advance.
As an alternative to the forms-based authoring interface, registered users should also be able to upload a HTML or XML-formatted documents which contain all of the CMF's document metadata (author, title, etc.). Alternately, they should be able to use blogging tools. This is important for facilitating off-line authoring.
Workflow suite
Each document includes workflow information to facilitate and track editorial reviews and approval before publishing. The workflow suite enables users to manage documents that are awaiting approval, passing them forward through the work process.
Workflow is described using a "pattern" or "policy" that captures a simple set of rules. Patterns are specified on a group-by-group basis, and are indicated as a series of stakeholders and approvals. Each pattern is stored as a document in the database.
When a document is created, it may be "scheduled" for review. It then awaits approval by the next user identified in the workflow pattern. There may be intermediate steps in the pattern. For example, the reviewer may ask the document's creator for various types of changes before approval is possible.
Administration suite
A secured web interface grants administrators access to the document database, control over all users and groups, and an additional level of control over the configuration of the content server itself. To maintain security and to simplify the use of the server application, the mechanism for validating administrators is separate from the server's host OS access mechanism.
Syndication
RSS has emerged as the standard mechanism for syndication. The CMF should make it simple to create RSS feeds that are generated using simple rules (i.e., all posts on a certain topic/category/rubric, etc.)
Links
Design Patterns
Greenspun on Content Management
http://philip.greenspun.com/internet-application-workbook/content-management
Created by M. Roberts, February 28, 2003.
Last modified, April 11, 2006.
| Edit | Rename | Changes | History | Upload | Download | Back to Top |