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.
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. |
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. |
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] |
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