Group Admin Pages - DesignACS subsite docs : Group Admin Pages - Design
- ACS administrator directory (/admin/groups for each subsite)
- Tcl script directory
- PL/SQL packages
- Requirements document
- Acceptance test
II. IntroductionThe group administration packages provides a "control panel" to allow the administrator of a subsite to control the groups in use on that subsite. Administrators manage the types of groups in use on a subsite. For each of these group types, the administrator can create new groups, specify applicable relationship types, create relations between these groups, and modify attributes of the types and groups.
III. Historical ConsiderationsVersions 4.0.x of the ACS lacked a useful group administration package for subsites. For example:
- Groups were given no context
- Groups could not be deleted
- Group types could not be created
- Relationships were limited to membership and composition, not including subtypes of these two.
IV. Design TradeoffsWhenever possible, the design of this package tries to minimize disturbance to the core ACS 4.0 data model. Instead, we focus on adding a more powerful user interface and PL/SQL API to the existing group admin pages while extending the data model only when necessary.
Permissible relationship typesWe defined the following two tables to store the relationship type used to store the permissible relationship types for group types and individual groups. Whenever a group is created using the
acs_group.newfunction, the relationship types for the new group are automatically copied from those allowed for its group type.
create table group_type_rels ( group_rel_type_id integer constraint gtr_group_rel_type_id_pk primary key, rel_type not null constraint gtr_rel_type_fk references acs_rel_types (rel_type) on delete cascade, group_type not null constraint gtr_group_type_fk references acs_object_types (object_type) on delete cascade, constraint gtr_group_rel_types_un unique (group_type, rel_type) ); create table group_rels ( group_rel_id integer constraint group_rels_group_rel_id_pk primary key, rel_type not null constraint group_rels_rel_type_fk references acs_rel_types (rel_type) on delete cascade, group_id not null constraint group_rels_group_id_fk references groups (group_id) on delete cascade, constraint group_rels_group_rel_type_un unique (group_id, rel_type) );
Dynamic subtypes of object typesTo allow administrators to create dynamic object types (e.g. subtypes of the object types
composition_rel), we provide a Tcl library of procedure that generate PL/SQL packages. For each dynamically created object type, we:
- We create the ACS object type
- We create a table to store the attributes for the new type
- We create a PL/SQL package with a new function and delete procedure
Attributes themselves are stored using
type-specific storage. For each new attribute, we
create a column in the table dynamically created for the new object
To support the clean separation between programmer defined
PL/SQL packages and automatically generated packages, we add the
dynamic_p column to the
acs_object_types.dynamic_p char(1) default 'f' constraint acs_obj_types_dynamic_p_ck check (dynamic_p in ('t', 'f'))
Note that the
dynamic_p is still
experimental and may be removed in a future version of
VII. Data Model Discussion...
VIII. User InterfaceThe user interface comprises entirely of administrative pages located in the
/admin/directory of the subsite package.
IX. Configuration/ParametersThe revised group administration pages require no new package parameters.
X. Future Improvements/Areas of Likely ChangeThere are many areas for improvement to the user interface, including tighter integration with the relational segments and constraints packages. One major improvement would allow individual subsites to define their own group types and relationship types, separate from any other subsite. However, since ACS object types are not themselves objects, it is difficult to properly scope object types.
We also may add a few additional package parameters including:
- "Create Group Types" (Boolean). Determines whether new group types can be created dynamically.
- "Create Relationship Types" (Boolean). Determines whether new relationship types can be created dynamically.
XI. AuthorsThis document is primarily the result of discussions between Oumi Mehrotra and Michael Bryzek. Bryan Quinn and Rafi Schloming provided key insights early in the development process.
- System creator: email@example.com
- System owner: firstname.lastname@example.org
- Documentation author email@example.com
XII. Revision History
|Document Revision #||Action Taken, Notes||When?||By Whom?|
|1.0||Major Revision||1/11/2001||Michael Bryzek|
group-admin-pages-design.html,v 22.214.171.124 2001/01/12 22:43:33 mbryzek Exp