Transcript Document

Cofax 1.5 Design Document
What is the product Cofax?



2
Cofax is a framework. It is a set of realized ideas
core to the MarketLeader product.
Cofax is a collection of modules that do different
things. Some of these modules are developed by
us. Some of them are off-the-shelf.
Cofax is not a single application. The Cofax
modules can be integrated into an application using
a control module. CofaxServlet and The Editors
Tools are examples of this.
J2EE Model 2 Java Server Pages
Architecture
Enterprise Servers & Databases
Business Logic
(Java Components/Beans)
Controller
(Servlet(s))
Presentation
(JSP, WYSIWYG, DSP)
Users (Web Browsers, PDAs, Cell Phones)
3
J2EE Model 2 Java Server Pages
Architecture



Industry standard overall architecture.
Designed for integration with enterprise systems.
Cofax’s design modularizes & separates the
following:
–
–
–
–
–
4
Business Logic
Integration Code
Presentation
Content
Site Management
5
CofaxServlet




Example of a Controller Module
Employs the various Cofax modules to maintain an
interactive web site.
Interacts with the user via Application Server
Is able to take advantage of the application server
–
–

6
Under Apache-Tomcat, CofaxServlet is to be used.
Under ATG Dynamo, CofaxDynamoServlet is to be used
which takes advantage of ATG Dynamo functionality.
Under Dynamo, this will comprise mostly of off-theshelf modules from ATG. There will be about 10%
custom code in this.
RequestHandler





7
Analyzes the request the user has made.
Determines what content to serve, what
presentation template to apply to it, and what
medium to serve it to.
Gives Cofax its ability to support configurable
URLs.
Enables Cofax to intelligently serve a variety of
platforms ranging from Personal Computers to Cell
Phones.
This uses functionality provided by components of
the application server.
UserAgentAnalyzer


Determines the capabilities of the user-agent
Determines properties like:
–
–
–
–

8
What web browser it is.
Whether it is a search engine crawler.
Whether it is a Palm Pilot or Cell Phone.
Whether it can display graphics.
Uses off-the-shelf browser detection components.
DataStore




9
Contains all the code that interacts with the data
storage system, usually a Relational Database
Management System (RDBMS).
All Database interaction is done via this module.
No other module may contain any databasespecific code or logic.
Once a module is ready, it makes it easy to plug-in
another database engine. E.g. MS SQL Server or
Oracle.
ConnectionPool




10
Makes the interaction with the database faster and
more efficient.
This module is only known to the DataStore
module.
Current implementation is ours. It will be replaced
with a commercial off-the-shelf component in the
next release.
This replacement will be possible because our
module is compliant to Sun’s JDBC 2.0 Optional
API specification.
TemplateLoader





11
Contains business-logic about what template to use
for presentation of a certain content object.
This module gives Cofax part of its’ edge. It allows
a very flexible web site architecture.
It allows sharing of templates across sites. (E.g.
Palm Pilot or Cell Phone WAP Templates)
It allows small sites to serve an entire publication
using just two templates of their own.
Is able to locate and load a variety of templates:
Our own WYSIWYG, JSP, ATG Dynamo DSP.
TemplateProcessor



12
This handles the application of the template
(I.e.look-and-feel) to the content.
In case of a J2EE (.JSP) template or an ATG
Dynamo DSP (.JHTML) template, it internally
forwards the actual processing to the application
server.
In case of our WYSIWYG templates, the
TemplateProcessor called WYSIWYGTemplate is
used. WYSIWYGTemplate is great for small
newspapers that need to get up and running fast. It
allows an easy migration to JSP later.
CofaxCache




13
Handles the caching of frequently used objects for
Cofax.
Is one of the very few modules available that is
capable of caching dynamic web pages.
Is currently used to cache dynamic web pages,
templates, common requests, database results.
In the next release, the caching of dynamic web
pages will be handled by a commercial off-the-shelf
module or external server.
CofaxPage


14
Is the content-object used by Cofax to represent
content in an object-oriented form.
Results from the database are converted to and
stored in this object.