Index: openacs-4/packages/acs-core-docs/www/groups-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.html,v diff -u -r1.21.2.1 -r1.21.2.2 --- openacs-4/packages/acs-core-docs/www/groups-design.html 5 Jul 2004 19:47:30 -0000 1.21.2.1 +++ openacs-4/packages/acs-core-docs/www/groups-design.html 1 Nov 2004 23:39:44 -0000 1.21.2.2 @@ -1,13 +1,13 @@ -Groups Design

Groups Design

By Rafael H. Schloming and Mark Thomas

+Groups Design

Groups Design

By Rafael H. Schloming and Mark Thomas

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

Essentials

Introduction

Almost all database-backed websites have users, and need to model the +

Essentials

Introduction

Almost all database-backed websites have users, and need to model the grouping of users. The OpenACS 4 Parties and Groups system is intended to provide the flexibility needed to model complex real-world organizational structures, particularly to support powerful subsite services; that is, where one OpenACS installation can support what appears to the user as distinct web services -for different user communities.

Historical Considerations

The primary limitation of the OpenACS 3.x user group system is that it +for different user communities.

Historical Considerations

The primary limitation of the OpenACS 3.x user group system is that it 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 @@ -24,7 +24,7 @@ (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

  • Competitive Analysis

    ...

    Design Tradeoffs

    The core of the Group Systems data model is quite simple, but it was +group_id values

    Competitive Analysis

    ...

    Design Tradeoffs

    The core of the Group Systems data model is quite simple, but it was designed in the hopes of modeling "real world" organizations which can be complex graph structures. The Groups System only considers groups that can be modeled using directed acyclic graphs, but queries over these @@ -37,7 +37,7 @@ without making the system too complex or too slow. The added triggers, views, and tables and will increase storage requirements and the insert and delete times in an effort to speed access time. The limited flexibility (no updates -on membership) trades against the complexity of the code.

    Data Model Discussion

    The Group System data model consists of the following tables:

    parties +on membership) trades against the complexity of the code.

    Data Model Discussion

    The Group System data model consists of the following tables:

    parties

    The set of all defined parties: any person, user, or group must have a corresponding row in this table.

    persons @@ -128,12 +128,12 @@

    A mapping of a party P to the set of parties {Pi} party P is an -approved member of.

    API

    +approved member of.

    API

    The API consists of tables and views and PL/SQL functions. -

    Tables and Views

    The group_types table is used to create new types of groups.

    The group_member_map, group_approved_member_map, +

    Tables and Views

    The group_types table is used to create new types of groups.

    The group_member_map, group_approved_member_map, group_distinct_member_map, group_component_map, party_member_map, and party_approved_member_map views are -used to query group membership and composition.

    PL/SQL API

    Person

    person.new creates a new person and returns the +used to query group membership and composition.

    PL/SQL API

    Person

    person.new creates a new person and returns the person_id. The function must be given the full name of the person in two pieces: first_names and last_name. All other fields are optional and default to null except for object_type which defaults @@ -293,13 +293,13 @@ procedure membership_rel.delete ( rel_id composition_rels.rel_id%TYPE ); -

    User Interface

    Describe the admin pages.

    Configuration/Parameters

    ...

    Acceptance Tests

    ...

    Future Improvements/Areas of Likely Change

    ...

    Authors

    System creator +

    User Interface

    Describe the admin pages.

    Configuration/Parameters

    ...

    Acceptance Tests

    ...

    Future Improvements/Areas of Likely Change

    ...

    Authors

    System creator

    Rafael H. Schloming

    System owner

    Rafael H. Schloming

    Documentation author -

    Mark Thomas

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation08/22/2000Rafael H. Schloming
    0.2Initial Revision08/30/2000 +

    Mark Thomas

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation08/22/2000Rafael H. Schloming
    0.2Initial Revision08/30/2000 Mark Thomas
    0.3Additional revisions; tried to clarify membership/compostion09/08/2000 Mark Thomas