Index: openacs-4/packages/acs-core-docs/www/object-system-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.html,v diff -u -r1.6 -r1.7 --- openacs-4/packages/acs-core-docs/www/object-system-design.html 10 Aug 2002 20:07:20 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/object-system-design.html 30 Nov 2002 17:16:24 -0000 1.7 @@ -1,12 +1,12 @@ -OpenACS 4 Object Model Design

OpenACS 4 Object Model Design

+OpenACS 4 Object Model Design

OpenACS 4 Object Model Design

by Pete Su, Michael Yoon, Richard Li and Rafael Schloming
- OpenACS docs are written by the named authors, but may be edited - by OpenACS documentation staff. -

Essentials

Data Model

Essentials

Tcl Files

Not yet linked.

History

The motivation for most of the facilities in the OpenACS 4 Object Model can be +particular programming idioms that we wish to generalize.

Related Links

This design document should be read along with the design documents for the new groups system, subsites and the permissions system

History

The motivation for most of the facilities in the OpenACS 4 Object Model can be understood in the context of the 3.x code base and the kinds of programming idioms that evolved there. These are listed and discussed below.

Object Identification

Object identification is a central mechanism in OpenACS 4. Every application object in OpenACS 4 has a unique ID which is mapped to a row in a central table @@ -77,14 +77,14 @@ make sure every object the system is to manage is associated with a row in acs_objects. More importantly, if they do this, new services like general comments can be created without requiring existing applications -to "hook into" them via new metadata.

Note: Object identifiers are a good example of metadata +to "hook into" them via new metadata.

Note: Object identifiers are a good example of metadata in the new system. Each row in acs_objects stores information about the application object, but not the application object itself. This becomes more clear if you skip ahead and look at the SQL schema code that defines this table.

Object Context and Access Control

Until the implementation of the general permissions system, every OpenACS application had to manage access control to its data separately. Later on, a notion of "scoping" was introduced into the core data model.

"Scope" is a term best explained by example. Consider some -hypothetical rows in the address_book table:

...scopeuser_idgroup_id...
...user123...
...group456...
...public...

The first row represents an entry in User 123's personal address book, +hypothetical rows in the address_book table:

...scopeuser_idgroup_id...
...user123...
...group456...
...public...

The first row represents an entry in User 123's personal address book, the second row represents an entry in User Group 456's shared address book, and the third row represents an entry in the site's public address book.

In this way, the scoping columns identify the security context in which a @@ -245,8 +245,8 @@ the more limited domain of the metadata model, this is acceptable since the type hierarchy is fairly small. But the object system data model is not designed to support, for example, a huge type tree like the Java runtime -libraries might define.

This last point cannot be over-stressed: the object model is not -meant to be used for large scale application data storage. It is +libraries might define.

This last point cannot be over-stressed: the object model is not +meant to be used for large scale application data storage. It is meant to represent and store metadata, not application data.

Data Model

Like most data models, the OpenACS Core data model has two levels:

  1. The knowledge level (i.e. the metadata model)

  2. The operational level (i.e. the concrete data model)

You can browse the data models themselves from here:

Future Improvements/Areas of Likely Change

Nothing here yet.

Authors

Pete Su generated this document from material culled from other documents by Michael Yoon, Richard Li and Rafael Schloming. But, any remaining lies -are his and his alone.

Revision History

Document Revision #Action Taken, NotesWhen?By Whom?
0.1Creation9/09/2000Pete Su
0.2Edited for ACS 4 Beta9/30/2000Kai Wu
0.3Edited for ACS 4.0.1, fixed some mistakes, removed use of term -"OM"11/07/2000Pete Su
+are his and his alone.

Revision History

Document Revision #Action Taken, NotesWhen?By Whom?
0.1Creation9/09/2000Pete Su
0.2Edited for ACS 4 Beta9/30/2000Kai Wu
0.3Edited for ACS 4.0.1, fixed some mistakes, removed use of term +"OM"11/07/2000Pete Su
View comments on this page at openacs.org