Menu

Project

Adam Tauno Williams

[Model] [Development]

Project

The project entity is the principal "container" entity in the OpenGroupware Coils model. Tasks, Enterprises, and Contacts can all be assigned to a project; a Task may be assigned to a single project while Enterprises and Contacts can be assigned to any number of Projects (via the creation of [assignment] entities).

Each Project has a root folder which is the top of its document hierarchy.

Accounts and teams may also be assigned to Projects which associates those users or members of those teams with the project; assignments to Projects double as ACLs, privileges to operate on the Project can be granted along with the assignment.

Projects are proper first-class entities. In addition to being identifiable by [objectId] a Project also has a unique "number" attribute that can be used as an idempotent value. Projects may be ordered in a hierarchical manner with each's parent_id (the Omphalos attribute "parentObjectid") indicating the Projects' parent. If a project's parent_id is NULL (or zero in Omphalos) then the Project is the top of a hierarchy.

Omphalos

The Omphalos entity name is "Project".

Attribute Legacy Level Data Type Write Description
comment YES 0 long string YES A comment describing the project.
endDate YES 0 datetime YES The date the project entity should be considered concluded or expired.
folderObjectId YES 0 integer NO The objectId of the root folder of the project.
kind YES 0 string YES A string indicating the type of project; project types are primarily site-specific.
name YES 0 string YES The intended human-readable name of the project. Uniqueness of name is not required.
number YES 0 string YES The unique string identifier of the project.
objectId YES 0 integer NO The objectId of the project entity.
ownerObjectId YES 0 integer NO The objectId of the project's owner.
parentObjectId NO 0 integer YES The objectId of the project's parent project, if any. A zero value indicates the project has no parent.
placeHolder YES 0 integer (0/1) YES A value indicating if the project is "fake" or a place-holder.
startDate YES 0 datetime YES The date the project entity becomes relevant.
status YES 0 string YES
version YES 0 integer NO The object version of the project entity.
parentProjectName NO 0 string NO Implemented in 0.1.49rc32. Only included if the project has a parent; so the parentObjectId can be assumed to be a switch for the presence of this attribute. If included it is the name of the parent project.
parentProjectNumber NO 0 string NO Implemented in 0.1.49rc32. Only included if the project has a parent; so the parentObjectId can be assumed to be a switch for the presence of this attribute. If included it is the number of the parent project.
_ENTERPRISES YES 512 [assignment] array YES [assignment] entities for [Enterprise] entities assigned to the project.
_CONTACTS YES 256 [assignment] array YES [assignment] entities for [Contact] entities assigned to the project.
childProjectObjectIds NO 1024 id array NO Implemented in 0.1.49rc32. An array of object ids of all projects for which this project is a parent. This may include the ids of projects to which the current context has not access and when retrieved may result in an [Unknown] response entity.
_TASKS YES 4096 [Task] array NO [Task] entities, at level 0, of tasks assigned to the project.
FLAGS NO 0 Array of strings. No Array of Omphalos flag strings.
projectActiveTaskCount NO 0 Integer No Count of the active tasks assigned to the project. Note: Due to permissions this may not be equal to the number of tasks represented in the _TASKS attribute.
projectArchivedTaskCount NO 0 Integer No Count of the archived tasks assigned to the project. Note: Due to permissions this may not be equal to the number of tasks represented in the _TASKS attribute.
  • The value of the OmphalosIncludeArchivedProjectTasks default will determine if archived tasks are included in the _TASKS subkey. A value of "YES" will include archived tasks, any other value will cause archived tasks not to be included. Beware that including archived tasks can dramatically increase the Omphalose representation size of a long-lived or busy project entity. This default does not effect the values of the projectActiveTaskCount and projectArchivedTaskCount attributes.
  • Beware that for some applications it may not be uncommon for a Project to have thousands of children. The number of ids contained in the childProjectObjectIds attribute may be large; a client application should check the number ids before making a [zogi.getObjectsById] call for the entire contents of the attribute.

Flags

Omphalos flags for Project entities was implemented in OpenGroupware Coils 0.1.49rc33. The implemented flags are:

Flag ACL Char. Description
ADMIN a The current context has administrative rights for the project.
DELETE d The current context has delete privileges for the project. DELETE is a subset of ADMIN. DELETE relates to being able to delete objects from the project, such as documents (provided there are no other permissions constraints). Only a project administrator may delete the project itself, and the project must be empty to be deleted.
POST p The current context can post data to project forms.
FORM f The current context can manipulate project forms.
WRITE w The current context can change project attributes, other than access. WRITE is subset of ADMIN.
INSERT i The current context can assign entities to the project; a subset of WRITE.
READONLY n/a The current context has not rights to modify the project in any way. So the current context does not have administrative, delete, write, or insert permissions. Form related permissions such as Post and Form are not considered for READONLY.
FAVORITE n/a The Project has been marked as a favorite of the current context.
EMPTY n/a The project contains no tasks, has no child projects, and the document hierarchy is empty. Only empty projects may be deleted.
CHILDREN n/a The project has child projects.
OWNER n/a The current context is the owner of the project.

Logic

The following Logic commands are implemented in the "coils.logic.project" bundle.

NOTE: Assignments to projects can also be created via the "object::set-acl" command as [Project] assignments are also [ACL] entities. An assignment is just an assignment if it grants no permissions and becomes an ACL if the assignment also grants permissions. So this is a case where Entity Transformation can occur - an assignment can become an ACL, and an ACL can become as assignment.

Command Parameters Description
project::assign-contact contact\contact_id, project\project_id Assign a contact to a project.
project::assign-enterprise enterprise\enterprise_id, project\project_id Assign an enterprise to a project.
project::new values Create a new project. Default end time is 2032-12-31 18:59:59 and the default start time is now. A root [Folder] is automatically created. If the values does not provide a "number" then the number of the project becomes the objectId of the project with a "P" prefix.
project::delete object Delete a project. Any [Note] entities associated with the project with have their project association cancelled - the notes will not be deleted. The folder hierarchy will also be destroyed.
project::get-task-actions id\project Return a list of [Task] actions performed on tasks related to a [Project]. Generally used in creating RSS feeds and the like.
project::get-contacts id\project\object Return a list of [Contact]s assigned to the [Project]
project::get-enterprises id\project\object Return a list of [Enterprise]s assigned to the [Project]
project::get-favorites Return a list of the current context's favorite [Projects]s.
project::get-notes id\project return a list of [Note]s related to a [Project]
project::get-path project, path, create Return the entity at the specified path in the [Project]'s document hierarchy. Optionally if the path does not exist, and the current context has sufficient privileges, a [Folder] can be automatically created at the path and returned as the result of the command. The result of the command may be either a [Document] or a [Folder].
project::get ids\id\name\number Retrieve the specified [Project]. If parameter's "name", "number", or "id" are used a single [Project] will be returned. Multiple [Project]s can be retrieved by objectId using the "ids" parameter.
project::get-projects id\project Retrieve the child [Project]s, if any, of the specified [Project].
project::get-root-folder id\project\object Return the root [Folder] of the specified [Project]'s document hierarchy.
project::get-tasks id\project Return the [Tasks] assigned to the [Project].
project::search
project::set-contacts project\project_id, contacts\contact_ids Change the [Contact] assignments of the [Project] to those provided. This overwrites any existing contact assignments.
project::set-enterprises project\project_id, enterprises\enterprise_ids Change the [Enterprise] assignments of the [Project] to those provided. This overwrites any existing enterprise assignments.
project::set-favorite ids\objects Overwrite the list of favorite [Project]s for the current contact.
project::unassign-contact contact\contact_id, project\project_id Remove the assignment of the specified contact from the project.
project::unassign-enterprise enterprise\enterprise_id, project\project_id Remove the assignment of the specified enterprise from the project.
project::set object, values Update the values of the [Project]

Related

News: 2013/04/opengroupware-coils-0149rc22-uploaded
Tickets: #246
Wiki: AccountLogic
Wiki: AttachFS
Wiki: Contact
Wiki: Development
Wiki: Document
Wiki: Enterprise
Wiki: Folder
Wiki: LogicCommand
Wiki: Model
Wiki: Project
Wiki: ProjectForms
Wiki: Projects
Wiki: Task
Wiki: assignment
Wiki: zogi.getObjectsById

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.