YOUR FEEDBACK
Gregor Rosenauer wrote: well, not what's your take on this? Did I miss a second page of this article or...
AJAXWorld RIA Conference
Early Bird Savings Expire Friday Register Today and SAVE !..

2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts

SYS-CON.TV
TOP THREE LINKS YOU MUST CLICK ON


Content Management
Content Management

This article outlines how to build a typical content-based Web application, a threaded message board. In recent years, threaded message boards have gained popularity due to their ability to draw visitors back to a site with the appeal of fresh content. Message boards also make financial sense.

Unlike the costly process by which Web teams create their own content, a threaded message board automates publication and delegates it to site users. Additionally, companies have achieved significant cost reduction in the area of technical support by creating message boards where communities of users can answer one another's support requests.

Since a threaded message board sits atop a database of content, a dynamic or database-driven content management system drastically speeds the creation and operation of such a Web application This article reviews the basics of building a threaded message board on the BEA WebLogic application server and the FatWire UpdateEngine content management system, which is database-driven and compatible with the Microsoft SQL Server, Oracle, and IBM DB2 databases. With WebLogic, UpdateEngine automates many of the steps involved in creating a threaded message board, such as defining database tables, creating edit screens, and making vendor-specific SQL and workflow calls.

Anatomy of a Threaded Message Board
The basic unit of the threaded message board is the message, or post, which is a short snippet of text with authorship information. Figure 1 shows the main interface of a message board.

Every message belongs to a thread, which is a post about a new topic and its subsequent replies. The left frame of Figure 1 displays the two threads called "New thread" and "Application Accelerators." From this main interface, users can create a new thread, select a thread to view its messages, or reply to a message within a thread. If the users begin a new thread or reply to an existing thread, they are presented with an HTML form to enter the message content.

Building the Dynamic Threaded Message Board Application
Building and running the message board consists of four steps:

  1. Design data structures
  2. Create tables in the database
  3. Program template logic to run the board
  4. Manage content
Design Data Structures
The first step in developing a dynamic Web application is designing the database structures that will hold the content. Surprisingly for a message board, we can get by with only one data structure (content class in UpdateEngine parlance): that of the basic message or post. The messages on this board will contain the fields shown in Table 1.

Create Tables in the Database
In the UpdateEngine GUI, the developer types in field names and selects data types (from the 22 available in a drop-down list). From this point, UpdateEngine's Content Definition wizard creates database tables automatically, eliminating the need to do this programmatically in a database-specific SQL dialect. If new fields need to be added or removed from a table at any stage of the development cycle, this can also be done on the fly. Creating the table definition for this message board takes about 5 minutes with the wizard. Figure 2 shows the wizard interface with the example fields entered.

Program Templates to Run the Message Board
Templates are programs that control the display of the message board and move content into and out of the database. Templates are written in JSP and invoke the UpdateEngine API. This API allows the developer to write high-level Java code to carry out queries, as well as content management and workflow operations, and saves development time by avoiding database-specific SQL or workflow operations. The same templates run on any database compatible with UpdateEngine. Four templates need to be written to power our message board.

Display_Threads
This template runs a database query to get all threads and display them by the order of how recently they were updated. Listing 1 shows a pseudo-code example of how the query could look in the UpdateEngine API. The ordered list can now be displayed as a thread list, and clicking on a thread should call Display_Posts for that thread. Display_Threads should also present the user with the option to create a new thread. Doing so amounts to calling the Create_Post template, passing in information that a new thread (as opposed to a reply) is created.

Display_Posts
Like displaying threads, displaying messages comes down to a simple query. Run a query to get all posts that match a given thread (by checking the POST_PARENT field), and then order them by date authored. An example is shown below:

/*Create a query to find posts whose parent is the current thread,
/*pointed to by dbidCurrentPost */
Query q = new Query(POST_PARENT, Query.EQUALS, dbidCurrentPost);
/*Run the query over all posts. The result is a list of pointers to records */
DBIDList dbidlPost = getDBIDs(POST,q);

This template should also provide an option to reply to the thread. To do this, create a link that calls the Create_Post template, passing in the information that a reply (and not a new thread) should be created.

Create_Post
Create_Post is simply a form that calls Process_Post. If Create_Post is to create a new thread, a subject field should be displayed on the form. If it is being called in order to reply to an existing thread, the subject line should be hidden and its value should be set to that of the referring post with "Re:" as a prefix.

Process_Post
The Process_Post template receives the contents of the form displayed by the Create_Post template, as well as information about what is being created: a new thread, or a reply to an existing thread. In either case, a new message is created in the database and the content fields are instantiated. If the post is the beginning of a new thread, the POST_PARENT field is set to NULL. If it's a reply to an existing thread, the POST_PARENT field is set to point to the initial message in the thread.

Once the database structure is created and the four JSP templates function as desired, the message board is up and running.

Manage Content
No back-end CMS is needed to operate the message board; however, there are occasions where it's desirable to be able to manage board content to remove or edit objectionable posts, to change user names or thread names, or to append editor's notes. Usually, creating a form to edit messages would take additional programming; however, in UpdateEngine forms for entering and viewing content are automatically generated for each database table created by the Content Definition wizard. The automatically generated edit screen for our message board is shown in Figure 3.

To access a data-entry form, first locate the message to edit. Messages may be located from the UpdateEngine browse screen, shown in Figure 4, and they can be sorted on by a number of key fields.

Alternatively, the moderator can access a record using UpdateEngine's search or Power Search tools, which allow Boolean searches over any fields in the database. Once the desired record is identified, it can be checked out (to prevent other moderators from editing it simultaneously) and sent to the edit screen.

If board moderators want to have a higher level of control over what appears on their site, all new messages can be placed into a workflow process instead of being posted live. Workflows are defined using the UpdateEngine GUI. In this example, two stages, "unapproved" and "live," will suffice, but any number of levels of field- and item-level workflow can be created. Using the Java API, the Process_Post template should be modified so it sets the workflow stage to "unapproved," and the display templates should be modified to show messages only in the "live" stage. Now messages will only appear on the board after an authorized moderator has approved them from the UpdateEngine browse screen.

Conclusion
Developing content-rich Web applications without manually programming database tables, edit screens, and workflow processes saves time. Database-specific SQL commands and workflow operations are passed over in favor of interaction with a GUI and a vendor-neutral Java API. With WebLogic and UpdateEngine, a developer can extend the simple message board described here by adding and redefining database tables in order to create a threaded message board as complex as any found on the Web.

About Daniel Goldstein
Daniel Goldstein, PhD, director of developer marketing for FatWire Corporation, has held visiting scholar positions at Stanford University and Harvard University. Daniel's Internet background includes development work for America Online and Rolling Stone.

BEA WEBLOGIC LATEST STORIES
Since its emergence, Web Service technology has gone a long way towards perfecting itself and finding its right application in the real world. With the maturity of the specifications, Web Service technology, with its power of interoperability, is now the major enabling technology of SO...
Join Scott Guthrie as he discusses Microsoft’s commitment to web standards development, Rich Internet Applications and how Microsoft is contributing to help move the web forward. Join Adobe’s Kevin Lynch as he demonstrates how Flash and HTML come together to make the most engaging,...
Virtualization has become a critical part of Enterprise IT strategy. Why and how has it become one of the most important change agents in our industry? To answer these questions I had the good fortune recently to be able to speak to a select group of top IT industry executives who join...
Watching VMware stock and its market cap spike since it IPO'd must have had Red Hat positively pea green with envyWatching VMware stock and its market cap spike since it IPO'd must have had Red Hat positively pea green with envy - so green in fact that it's gonna try taking VMware on b...
A standard from OASIS called Web Services for Remote Portlets (WSRP) is used so portlets can be decoupled from a portal. In part one (JDJ, Volume. 13, issue 3) of this article, we introduced the relevant standards and specifications and then demonstrated WSRP's capabilities by consumin...
SYS-CON's upcoming '3rd International Virtualization Conference & Expo' faculty includes such distinguished speakers as: Al Aghili (Managed Methods), Alan Chhabra (Egenera), Andi Mann (Enterprise Management Associates), Andrew Conte (APC), Andy Astor (EnterpriseDB), Ariel Cohen (Xsigo ...
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE
BREAKING NEWS FROM THE WIRES

Autodesk, Inc. (NASDAQ:ADSK) today announced that its Autodesk LocationLogic platfo...