Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/parties.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/parties.xml,v diff -u -r1.1 -r1.2 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/parties.xml 13 Mar 2001 22:59:26 -0000 1.1 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/parties.xml 2 Feb 2002 03:47:32 -0000 1.2 @@ -1,5 +1,5 @@ - -Parties in ACS 4 + +Parties in OpenACS 4 by Rafael H. Schloming @@ -18,13 +18,13 @@ individuals and groups as specializations of one supertype. This concept is so commonly used throughout human language and thought that we don't even need to invent for it some bizarre and specialized terminology. This -supertype is called a party. +supertype is called a "party". -A classic example use of the party supertype is evident +A classic example use of the "party" supertype is evident in a common address book. A typical person's address book might contain the address of his doctor, and his cable company. So what do we label the first field in an entry in his address book? It isn't a person, and it -isn't a company. It is a party. +isn't a company. It is a "party". @@ -34,12 +34,12 @@ -Most developers who do significant work with the ACS will become +Most developers who do significant work with the OpenACS will become intimately familiar with the parties data model, and probably extend it on many occasions. For this reason the parties developer guide will begin with an introduction to the data model. -Parties +Parties The central table in the parties data model is the parties table itself. Every party has exactly one row in this table. Every party has an optional @@ -71,7 +71,7 @@ row in the groups table represents the most basic form of an aggregation of individuals that is represented. -Persons +Persons If a party is an individual then there will be a row in the persons table containing first_names and last_name for that individual. Note that the @@ -98,7 +98,7 @@ -Users +Users The users table is an even more specialized form of an individual. A row in the users table represents an individual that has login access to the @@ -112,8 +112,8 @@ users) is that it is now possible to "nuke" a user from a live system by removing his entry from the users table, but leaving the rest of his information present (i.e. turning him from a user into a person). This is -because wherever possible the ACS 4 data model references the persons or -parties table, not the users table. If this feature is +because wherever possible the OpenACS 4 data model references the persons or +parties table, not the users table. If this feature is desired when extending the system, then the developers should be careful to only references the users table in situations where it is clear that the references is to a user and not to an individual. @@ -152,7 +152,7 @@ -Groups +Groups The final piece of the parties data model is the groups data model. A group is a specialization of a party that represents an aggregation of other @@ -177,11 +177,11 @@ -Group Relations +Group Relations One surprise here is that there are actually two relations involved. One is the normal membership relation between parties and groups. A party may be -a member of a group. The other relation is a composition +a "member" of a group. The other relation is a composition relation between two groups. To fully understand why two relations are necessary, and the situations in which each is appropriate, let's consider an example. Greenpeace is an organization that can have as members @@ -192,14 +192,14 @@ itself. Now let's consider a multinational corporation. This corporation might have a U.S. division and a European division. A member of either the U.S. or European division is automatically a member of the company. In this -situation the U.S. and European divisions are components of +situation the U.S. and European divisions are "components" of the company, i.e., membership is transitive with respect to composition. Having a membership relation between groups and parties, and having a composition relation between groups and groups allows us to easily model the full range of sophisticated group structures that exist in the real world. -Group Membership +Group Membership Group memberships can be created and manipulated using the membership_rel package. Note that you can only create one membership object for a given @@ -257,7 +257,7 @@ -Group Composition +Group Composition Composition relations can be created or destroyed using the composition_rel package. The only restriction on compositions is that there @@ -434,7 +434,7 @@ the parties data model in a number of ways. This section will describe some of the more common ways. -Specializing Users +Specializing Users It is conceivable that some applications will want to collect more detailed information for people using the system. If it is the case that @@ -448,7 +448,7 @@ users, persons, parties, and acs_objects tables. This child table could then store any extra information relevant to the MENSA community. -Specializing Groups +Specializing Groups If one were to build an intranet application on top of the 4.0 party system, it is likely that one would want to take advantage of the systems @@ -457,7 +457,7 @@ In this case it would make sense to specialize the group party type into a company party type in the same manner as above. -Specializing Membership Relations +Specializing Membership Relations The final portion of the parties data model that is designed to be extended is the membership relationship. Consider the intranet example again.