|
Projects are an important glue concept not directly called out in the ObjectCycle model -- within the web of relationships implied by the namespace and versioning, a user (and ObjectCycle!) needs a rudder, or context, in which to operate. A project, or perhaps more accurately, a development project, provides that context.
From a user’s point of view, a project defines the scope of his/her world within ObjectCycle at any one point in time. A project is intended to correspond directly to some team development effort with which the user is associated. (Multiple projects may of course be on going at once within an ObjectCycle server).
There are two important characteristics of a project from the user’s perspective:
- Each project has a namespace in which to organize objects that is separate from other projects.
- Location of the “current” version of an object within that object’s tree of versions is performed in the context of the project in which the lookup takes place.
Inside ObjectCycle, a project is modeled in the data source as two things: a pointer to a root folder (the root of the project’s namespace, which the user sees and works within), and a pointer to a project object, which in turn has base and currency links to the base and current versions of every object in the project. A project object is just like a user object in most respects, except it’s name is hidden in a system namespace, and ObjectCycle maintains the semantics of the base and currency links.
|