This topic describes TrackStudio demo database
This comprehensive sample demonstration describes how to manage products, versions, departments and customers in the database.
Suppose, we have a company - Sample, Inc. This company has the following organizational structure:
Employees in departments have at least 2 managers (i.e their line manager and department manager). Each department manager is only responsible for their own employee. Each line manager is only responsible for their own project.
Sample, Inc has the following user statuses (groups):
Name each employee of Sample, Inc, their login/password and user status (group):
Ben Vincent will manage customers. He will define
Samples, Inc also has a customer - Chris Tuck, from GoodBank. He can login as ctuck/ctuck and add a bug into the system. Also he can create subordinate users from his company to add bug reports. You can limit how many accounts each customer can create and set an expiry date for your customer as defined in your support contract (one year, for example).
A user's password is the same as his/her login. Login as root/root or jsmith/jsmith to examine the organizational structure.
Sample, Inc develops two software products: XWare and YTracker. Currently they have 2 versions of XWare: 1.0 (already mature) and 1.5 (active). YTracker is still in development and they have no customer support for it.
User Name |
Role |
John Baetz |
project manager |
Jeff Franke |
software tester |
Stuart Manske |
software developer |
User Name |
Role |
Jesse Levon |
project manager |
Stuart Manske |
software developer |
Charles Parmenter |
software developer |
Jacob Miller |
software tester |
Ben Vincent is the sales representative and Mike Clinton is the customer support member for both products.
Now let's check out how user groups are be defined. Login as jsmith and check out User Management -> Statuses. Note that each user group has a parent user group. A group can't have more permissions than the parent group has. If you disable some permission for parent group - it will be disabled for all child groups automatically.
With user groups you can control every tab and every button the user can view. You can also set which fields the user can see or edit. When you grant any permission, all dependent permissions will be granted automatically.
This team also uses the following workflows:
Workflow Name |
Description |
Folder |
A simple container for other objects, one state, no transitions. |
Product Lifecycle |
Implements the life cycle for products and software releases. Contains states:
Contains two workflow-specific custom fields:
This workflow is used primary by management. |
Issue Lifecycle |
Implements the life cycle for software bugs or issues. Contains steps:
|
Take close look at permissions defined for the Issue Lifecycle workflow
Message Type |
Description |
Permissions |
001 Resolve |
Resolve a bug |
|
002 Verify |
Verify a bug |
|
003 Close |
Close a bug |
|
004 Reopen |
Reopen a bug |
|
000 Note |
Add a note |
|
005 Request to Customer |
Question or note to customer |
|
006 Response from Customer |
Feedback from customer |
|
When user creates a bug - he/she doesn't specify workflow directly. Instead, he/she should choose task categories (such as Software Bug) that are connected to some workflow. Several categories can be connected to the same workflow.
For each category, you can specify who can create, edit, or delete tasks within this category and define the category's dependency (for example, Folder can contains Software Bug, but Software Bug can't contains Folder).
Product managers cannot assign developers or testers directly to projects - they need approval from department managers. Check out task #11 where YTracker's project manager, John Baetz, asks R&D department manager, Bill Richardson, about 1 developer for his project. Bill approved it and assign Stuart Manske to YTracker as software developer (check out the Access Control -> Assigned Statuses tab for YTracker #7). Department managers can use the My Assignment Requests filter to find their assignment requests.
We store the user departments in the Company field. We would like a report that shows the number of tasks created from each department.
As Company field is a user field, it cannot be referenced by a task filter directly. To solve this, we create a task custom field that uses a script which will return the Company field.
Login as jsmith/jsmith and go to the User Management->Scripts tab. Check out the getDepartment script which will return department names when the task submitter is you or your subordinate user, and will return Unknown otherwise. For example, John Smith (administrator) can see the department names for all tasks, Sean Law (QA Department Manager) can see department names only for tasks submitted by testers and himself; Jacob Miller can see department names only for his tasks.
if (task.getSubmitter()==null || task.getSubmitter().getCompany()==null) return "Unknown"; return task.getSubmitter().getCompany();
We've connected the getDepartment script to the Submitter Department task custom field (check out the Task -> Customize tab for the task #2).
We also use the getCustomerAddress script that returns the addresses of customer that have submitted a bug. This script used by the Customer Address custom field of the task #5. Go to the task #24 (submitted by customer) to check how it works.
The calculated custom fields option is slow and should only be used when absolutely necessary.
Filters are used to search tasks by criteria. The following public filters are available for all projects in Sample, Inc.
Filter Name |
Description |
All |
Returns all direct subtasks of the current task. |
Change List |
Returns list of closed bugs. You can use this filter for any project or project version. |
My Assignment Requests |
Functional department managers can use this filter to find all requests issued to assign an employee to a project. |
Bugs (Personal and Subordinate) |
Returns a list of bugs that should be fixed by logged user or subordinate users. This filter is very useful for developers, testers and their managers. |
Roadmap |
Returns a list of opened bugs. |
Tasks by department breakdown |
Returns a list of open bugs with info about the submitter’s department. |