Welcome, Unregistered Visitor
Welcome, Unregistered Visitor
6 registered users
in last 24 hours
The ]po[ data-model consists at the moment (]po[ V3.4) of:
Fortunately, ]op[ consists of a modular architecture, so that you only need to understand a small part of this data-model in order to access data or to produce custom reports. In addition, we have put great effort in providing you with tools to access the data-model in an easy way:
Data-Model Clickable Map
The clickable map below provides a schematic overview over some core parts of the ]po[ data-model.
Company -> im_companies Office -> im_offices Project -> im_projects
Timesheet Tasks (]project-open[) -> im_timesheet_tasks Party (OpenACS) -> parties Object (OpenACS) -> acs_objects
im_projects -> project_id groups -> group_id
Example Attribute from im_costs variable_cost_p bpchar
Example Attributes from im_tickets ticket_status_id int4 ticket_type_id int4
Object - acs_objects
The root table for the acs object hierarchy. It all starts here folks.
Business Object - im_biz_objects
Most data and the most important objects in the ]project-open[ data model are derived from and structured as "Business Objects". A business object is just a database table which adheres to the following conventions.
Business Object Sub Classes:
Office - im_offices
Represents physical office locations and their data attributes.
Company - im_companies
Represents commercial organizations, what their relation is to your company, contact info, their industry, etc.
Project - im_projects
The "project" concept and running a business using project-management principles is a fundamental to ]project-open[ and it's construction and operation. The majority of actions and activities in ]project-open[ center around project objects, which store data about projects, like creation date, final customer destination, manager, etc.
Categories - im_categories
Category Listing - see all the available ]project-open[ category types and their descriptions
Conventional/traditional database design normally includes many foreign key tables defining the type and status of an object. For example, to capture all the different stati and types of "im_projects" we should create two new tables "im_projects_status" and "im_projects_type". As a result, for every new table x we would like to introduce there is at a minimum 2x more tables to create to track their type and status, possibly more for a complex object.
]project-open[ has taken a different route in our database design model. In order to save space and maintenance efforts, all object type and status id's are stored in one single table, "im_categories" the look-up table for all individual object's to consult. We believe this design offers the following advantages over the classical model:
We do acknowledge that it is possible to assign the wrong category to a field, however this mistake has not happened before by any programmer and it is a relatively easy error to detect.
Within the context of ]project-open[ "Categories" are a general concept being used throughout the system for several different purposes.
However, there are also several disadvantages:
Please make sure you understand the concept of a "transitive closure" before modifying categories yourself.
Category Example - Company Type - company_type_id
The table below shows an example of the “Company Type” category. This category is supposed to be editable by a sysadmin and shows the general structure and function a “category”.
Categories consist of the following fields:
The “Company Type” category is designed to be extended by “knowledgeable users”, so that new types of customers can be added during the lifetime of the system. However, such a “knowledgeable user” would need to know that he or she couldn’t touch the “Internal”, “Provider” or “Customer” fields, because their IDs are referenced as constants internally in the system.
For instructions on how to access the administration menu to view/modify/add categories in ]project-open[ consult below.
Complete and Detailed Object-Type Map
OpenACS provides an administration tool that compiles an automatic map of all the object-types and their hierarchical relation. However, it is not perfect and some database objects are hidden. Most notably you will see that "im_categories" does not appear. Unfortunately we cannot provide a link to see this in real time on the demo server, because you need "SysAdmin" priveleges to see this. Here are the instructions on how to access the Object-Type Map from your own ]project-open[ installation. You must have Admin privileges.
1. The OpenACS Admin Menu is slightly hidden, there is no direct access from internal ]project-open[ screen, you must type the address "myserver/admin" to see the following screen.
2. Click on the "Object-Type" Link and you will be directed to listing of object-types. Clicking on each individual object will display all of it's variable attributes and inheritance.
Category Listing and Administration Menu
From the ]project-open[ admin home page you will find a link to the category manager. You must have admin privileges to view and manipulate the categories. Please do not attempt to change/add categories unless you fully understand first and have read the PO-Configuration Guide, specifically the section on Categories, or have read the relevant wiki entries about categories on this page, or the Category page. Some category types are mandatory and should not be edited.
1. From the ]project-open[ Admin Menu click on "Categories" or proceed directly to the menu screen with the URL "myserver/intratnet/admin/categories"
2. Use the filters to search for category types and view their corresponding categories. The "category" vs. "category type" distinction is:
3. Please note: Categories are frequently cached for performance reasons. You may have to restart the server after adding or modifying a category in order for the changes to take effect. Or you could flush the memory cache.