mRFC 0034: General Membership
- Revision history
- Background
- Member owner type
- Member type
- Membership type
- MidgardSchema definition
- Membership introspection
- Member creation and deletion
Revision history
2007-07-05 Created by Piotr Pokora
Background
Generic membership describes the basic way to group any MidgardSchema ( MgdSchema ) type ( class ) as an member of any other type registered in Midgard application. This mRFC also describes known Midgard functionality to group midgard_persons objects as a members of midgard_group one, and capabilities of membership introspection.
Member owner type
The type which groups other types. One type ( class ) can not group objects of the same type.
Member type
The type which belongs to owner group. One type ( class ) can not belongs to group of the same type.
Membership type
The type which holds required information ( like owner or member identifier ) for members and owners.
MidgardSchema definition
Membership information shall be defined in xml schema file as a type properties and attributes and particular introspection capabilities shall be implemented on API level. Membership shall be always defined for member type and never for owner type.
Minimal information should contain:
- Member owner type name
- Membership type name
- Property and (or) field names which should be used for membership links
Example
<type name="midgard_person" table="person" parentfield="creator">
<membership name="midgard_member" owner="midgard_group" >
Membership introspection
Membership implementation should allow to retrieve following information:
Member owner type
- If type has members
- What type name(s) are members of owner type
- Fetch all members
Member type
- If type is a member
- What type is an owner of member type's
Member creation and deletion
In general, members should be created with particular membership type implementation, to avoid direct and random database access. Membership type should always create or delete member for given member and owner type.
