Overview of b-org

by Plone Documentation Team last modified Dec 06, 2009 10:10 PM
Contributors: Mikko Ohtamma, Martin Aspeli, Kamon Ayeva, Israel Saeta Pérez
The big picture

To the user, b-org presents itself as three content types:

Department
A container for employees, and a source of groups. That is, each department becomes a group, and the employees within that department become group members.
Employee
Information about employees, and a source of users. That is, each active employee object becomes a user who can log in and interact with the portal.
Project
A project workspace - a folder where employees can collaborate on content. Content inside the project folder has a custom workflow, and employees who are related to the project (by reference) have elevated permissions over this content.
Out of the box, these are not terribly interesting, because they have only the minimum of metadata required to function. The task of providing actual schema fields, view templates, content type names (if Department, Employee and Project are not appropriate) and other application-specific facets is left up to simpler third-party products that plug into b-org. One example of such a product is included, which models a hypothetical charity use case and is called charity.

This seemingly innocuous orchestration of functionality is achieved by a variety of means:
Archetypes
Used to build the actual content types and their schemata.
The Zope 3 Component Architecture
Is used to make all this exensibility possible - you will see lots of examples of interfaces, adapters and utilities.
Membrane
The content types are registered with membrane to be able to act as groups and users
PAS and PlonePAS
The Pluggable Authentication Service is used by membrane to actually provide user sources. A custom PAS plug-in is also used to manage local roles for members and managers within projects and departments.
GenericSetup
The next-generation set-up and installation framework is used to install and configure b-org. charity demonstrates how GenericSetup XML profiles can be used directly, without depending on the actual GenericSetup import mechanism.
Zope 3 events
Zope 3's event dispatch mechanism is used to ensure employee users actually own their own Employee objects, among other things.
Zope 3 views
The charity demo uses views for its display templates.
Annotations
Employees' passwords are hashed and stored in an annotation
Placeful workflow
To let content inside projects have a different workflow to that of the rest of the site, each project uses a CMFPlacefulWorkflow policy.

On the following pages, you will learn about each of these components and how it fits together. Meanwhile, you can follow along the code by looking in the subversion repository, or getting b-org from its product page.