ACS Content Design Document

I. Essentials

II. Introduction

The ACS Content package allows different applications to store content in the centralized location of a single table. This content could be ordinary data or data representations of objects. In the content repository, any object is associated with single piece of content. The content is represented by a BLOB, a binary large object. Such content could be text, an image, a video, or binary information of any sort.

III. Historical Consideration

The development of the content repository was originally motivated by a need for site wide search support. The site wide search needed a centralized facility to search all objects' content.

IV. Competitive Analysis

to be filled in

V. Design Tradeoffs

Currently there is a content repository system, or CR, provided with the ACS Development platform. It has a lot of useful features, such as support for revisions, containers, and search capabilities, and is great for most publishing tasks. Unfortunately, it has a lot of overhead for certain applications that do not require such capabilities. For example, a phone book application would only need the search capability. In order to use the search capability, the phone book application would have to build on top of the current CR architecture.

The goal of the design of the ACS Content system is to simplify the content repository to support centralized storage for all applications. The simplified CR will only contain the basic attributes of a content, namely format and language. Format and language are needed to support manipulation and display of the content. ACS Content will not be an object since it does not require any use of permissioning or the ACS relational object oriented architecture. [need to flesh this out more explicitly; what does it mean to say that a package isn't an object?] It is merely a storage facility.

VI. API

There are functions available for creating and deleting objects and their content association. They are defined within the acs_content package.
 function new (
 object_id in acs_objects.object_id%TYPE null,
 mime_type in acs_contents.mime_type%TYPE null,
 nls_language in acs_contents.nls_lanaguage%TYPE
 ...
 ) return acs_objects.object_id%TYPE;
 procedure delete (
 object_id in acs_objects.object_id%TYPE
 );

VII. Data Model Discussion

There is one table for the simplified content repository. The acs_content table stores the association between object and content:
create table acs_contents (
 content_id integer
 constraint acs_cont_obj_id_fk references acs_objects(object_id)
 constraint acs_cont_rep_obj_id_pk primary key,
 content blob,
 searchable_p char(1) default 't'
 constraint acs_cont_rep_searchable_p_ck check (searchable_p in ('t','f'))
 constraint acs_cont_rep_searchable_p_nn not null,
 -- stores the language of the content
 nls_language varchar2(50),
 -- mime type
 mime_type varchar2(200) default 'text/plain'
);
The searchable_p indicates the searchable attribute of the content. It allows applications to determine whether the content is ready to searched.

VIII. User Interface

to be filled in

IX. Configuration/Parameters

to be filled in

X. Future Improvements/Areas of Likely Change

A much more stable applet based client interface would be in order. It would also be nice if we allowed more concurrent applet connections to the server.

XI. Authors

System creator: Khy Huang
System owner: Khy Huang
Documentation authors: Khy Huang

VII. Revision History

Document Revision # Action Taken, Notes When? By Whom?
0.4 More editing 2000-12-15 Josh Finkler
0.3 Edited 2000-11-27 Khy Huang
0.2 Edited 2000-11-20 Josh Finkler and Khy Huang
0.2 Edited 2000-11-20 John Prevost
0.1 Created 2000-11-17