Index: openacs-4/packages/acs-core-docs/www/groups-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.html,v diff -u -r1.25 -r1.26 --- openacs-4/packages/acs-core-docs/www/groups-requirements.html 16 Feb 2005 00:21:02 -0000 1.25 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.html 4 Jun 2006 00:45:24 -0000 1.26 @@ -1,4 +1,5 @@ -Groups Requirements

Groups Requirements

By Rafael H. Schloming, Mark Thomas

+ +Groups Requirements

Groups Requirements

By Rafael H. Schloming, Mark Thomas

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

Introduction

Almost all database-backed websites have users, and need to model the @@ -15,7 +16,7 @@ member of the division and the corporation, and works at (is a member of, but in a different sense) a particular office. OpenACS's Parties and Groups system will support such complex relations faithfully.

Historical Motivations

The primary limitation of the OpenACS 3.x user group system is that it - restricts the application developer to representing a "flat group" + restricts the application developer to representing a "flat group" that contains only users: The user_groups table may contain the group_id of a parent group, but parent-child relationship support is limited because it only allows one kind of relationship between @@ -27,8 +28,8 @@ scope, user_id, and group_id columns was used to identify the party. One disadvantage of this design convention is that it increases a data model's complexity by requiring the programmer - to:

  • add these three columns to each "scoped" table

  • define a multi-column check constraint to protect against data corruption - (e.g., a row with a scope value of "group" but a null + to:

    • add these three columns to each "scoped" table

    • define a multi-column check constraint to protect against data corruption + (e.g., a row with a scope value of "group" but a null group_id)

    • perform extra checks in Tcl and PL/SQL functions and procedures to check both the user_id and group_id values

    In sum, the goal of the Parties and Groups system is to @@ -175,39 +176,39 @@

    The parties and groups system provides an API for answering the question: - "Is party P a member of group - G?"

    135.0 Composition check + "Is party P a member of group + G?"

    135.0 Composition check

    The parties and groups system provides an API for answering the question: - "Is group GC a component of group - GP?"

    140.0 Get members query + "Is group GC a component of group + GP?"

    140.0 Get members query

    The parties and groups system provides an API for answering the question: - "Which parties are members of group G?"

    145.0 Get components query + "Which parties are members of group G?"

    145.0 Get components query

    The parties and groups system provides an API for answering the question: - "Which groups are components of group G?"

    150.0 Member-of-groups query + "Which groups are components of group G?"

    150.0 Member-of-groups query

    The parties and groups system provides an API for answering the question: - "Of which groups is party P a member?"

    155.0 Component-of-groups query + "Of which groups is party P a member?"

    155.0 Component-of-groups query

    The parties and groups system provides an API for answering the question: - "Of which groups is group G a component?"

    160.0 Allowed membership check + "Of which groups is group G a component?"

    160.0 Allowed membership check

    The parties and groups system provides an API for answering the question: - "Is party P allowed to become a member of group - G?"

    165.0 Allowed composition check + "Is party P allowed to become a member of group + G?"

    165.0 Allowed composition check

    The parties and groups system provides an API for answering the question: - "Is group GC allowed to become a component - of group GP?"

    170.0 Efficiency + "Is group GC allowed to become a component + of group GP?"

    170.0 Efficiency

    Since many pages at a site may check membership in a group before serving