The Cofax Framework
Cofax has an modular, object-oriented application design.
Each module is independent from the next, and is made up of components that are replaceable so you can apply a best-of-breed or customized approach as necessary.
Cofax gives you a solution that allows you the freedom to pick and choose the modules that best fit your infrastructure and plans for the future.
For example - utilizing the best database for your organization.
The framework is the building blocks and core of the it's design.
It's been built to be flexible, extensible and modular to enable you to change, add, or delete functionality as you require.
It comprises of four main tiers:
The Cofax CFS - Cofax Feed System
Designed with flexibility and simplicity in mind, the Cofax Feed System utilizes a series of Java classes to import a by design simple XML format into the Cofax Data Warehouse, from newsroom systems.
In a newsroom environments, all the information for an article is often not sent in one batch. The basic article with basic meta data from the publishing system may come from one source in a batch feed or in real time. The very simple article dtd is used for this since most newsprint publishing systems have only this information.
Section/Mapping meta-data may come from yet another source at another time. For example, from an automatic AI categorization engine like autonomy which may take a while to process the feed. In many cases, we want the newspapers to post online before this processing is completed.
This information can be added to the Cofax data store when it is ready.
In addition, other information may have been entered by Editors the night before or later on.
This information comes in another batch.
Cofax automatically does versioning if an article is inserted twice into the system.
Once Cofax has imported the data, it is immediately available for delivery to a variety of clients ranging from web browsers via a web application server to export feeds to other systems.
This system, by design, is a fully seperate tier/component and can be modifed to accept different import sources quickly and easily without modifying the other tiers.
One requirement of this system is that data be pre-formatted to the simple XML format prior to import.
Most newsrooms utilized Perl scripts to do this.
The new second generation content management system utilized by Knight Ridder, uses a tool named XMultra to solve this problem.
The Cofax CDW - Cofax Data Warehouse
The Data Warehouse is a fully seperate tier that exposes it's own API to the other tiers.
This allows for a high degree of maintenance and extensibility freedom without having to modify source code in the other tiers.
This is largely thru the defining of 'packageTags' - data sets used by editors and designers - done entirely within the database layer.
Currently there are two data warehouse implementations: Microsoft SQL Server and MySQL. But by design, the CDW can be ported to any number of systems from almost any vendor.
Oracle, Sybase, Object Store, XML/flat files for example.
For the system administrator, switching between database implementations is as simple as modifying the configuation of the system.
While designed primarily to store and manage newspaper content, the schema of the CDW has proven to be simple, yet flexible, to handling the demanding needs of a variety of uses.
The Cofax CMS - Content Management System
Editorial tools can be built using any data store aware environment. ASP, JSP, Servlets can all be employed.
Editor's tools are server based and are interfaced through a web browser.
First versions of the editorial tools were actually deployed in ASP.
The newest versions of the editorial toolset are developed in Java utilizing Servlets and JSP, taking advantage of classes developed for the CDS.
The Cofax CDS - Content Display System
The CDS is a strict implementation of the Model-View-Controler design pattern. Design, Logic and Content are seperate and each can be modified without needing to change the the other two.
Design layouts are developed the usual way, designers working with HTML templates with a simple markup language that requires minimal training.
The controler servlet utilizes caching and database pooling to keep performance at acceptable levels.
The CDS is designed in a modular fashion and utilizing different templating languages, database pooling, and caching is easy and in most cases does not require changes to code.