1.2. Ticket Tracker Design Document

Table of Contents
1.2.1. Essentials
1.2.2. Introduction
1.2.3. Historical Considerations
1.2.4. Competitive Analysis
1.2.5. Design Tradeoffs
1.2.6. API
1.2.7. Data Model Discussion
1.2.8. User Interface
1.2.9. Configuration/Parameters
1.2.10. Future Improvements/Areas of Likely Change
1.2.11. Authors
1.2.12. Revision History

by Tony Tseng, Phong Nguyen

1.2.1. Essentials

1.2.2. Introduction

Ticket Tracker is an ACS 4.0 package that provides end users with a centralized collaborative means for managing tickets. Ticket Tracker uses the workflow engine to track and manage tickets (i.e., state of the ticket, who is assigned to the ticket).

1.2.3. Historical Considerations

In past 3.x ACS releases, the Ticket Tracker was mainly used to track bugs and feature requests for projects. The SDM package has since emerged from the Ticket Tracker to handle just this. The Ticket Tracker is a more of a general-purpose issue management service intended to handle any type of project. The SDM can be seen as a specific ticket-tracker.

Ticket Tracker for ACS 4.0 does not implement all features provided by the 3.x version. This version has been redesigned from scratch in order to take advantage of the object model in ACS 4.0.

The most noticeable feature change is that users no longer define "Projects". Instead users would mount another instance of the ticket tracker package. This solutions allows administration for different ticket trackers through the site-map admin pages.

1.2.4. Competitive Analysis

incomplete

1.2.5. Design Tradeoffs

The main problem with the 3.x ticket tracker was that it was too slow. During the data model redesign, we kept this in mind and came up with some ideas to help speed up access to ticket information:

The main work of the Ticket Tracker really lies within the workflow engine. The workflow engine keeps track of the current state of the ticket, who is assigned to the ticket, and other important information. We had to keep in mind that the ticket-tracker was going to serve a very general audience in terms of project management, thus the workflow used had to be simple. There are plans of a customizable workflow on a per-package-instance level for future releases of the Ticket Tracker.

However, using workflow also introduces additional complexity. In most SQL queries, multiple workflow tables need to be joined and performance is hindered as a result.

1.2.6. API

No API is provided right now. Although there's an idea that the ticket tracker pacakge might be able to talk to the portal package later on...

1.2.7. Data Model Discussion

The datamodel is quite simple, since the majority of the work is done in ACS-workflow. There are three tables:

The diagram above is the workflow process used in the Ticket Tracker. The process is started whenever a new ticket is entered. Within the process, several custom callbacks in the ttracker_callback package are used:

Originally, another workflow process was used for the ticket tracker. (shown below) It is more complex than the current workflow process, mainly because "Assign ticket" is a task in itself. There are two reasons for it:

  1. We need to email the admin whenever a ticket is unassigned.

  2. If the user feels the ticket assignment is not adequate, we need to somehow notify the admin.

It turns out that [1] can be solved with the new version of acs-workflow. As for [2], we decide to allow the user to change the ticket assignment. Also an option to remove all the parties that a user is a member of is given to the user as well. Therefore, if the ticket assignee knows the right party to assign to, he or she can make the change right away. In the worst case, if nobody knows whom to give the ticket to, the users at least can remove themselves. If all ticket assignees are removed, the ticket becomes unassigned and shows up on the admin's unassigned list again.

1.2.8. User Interface

incomplete

1.2.9. Configuration/Parameters

1.2.10. Future Improvements/Areas of Likely Change

1.2.11. Authors

1.2.12. Revision History

Document Revision # Action Taken, NotesWhen?By Whom?
0.1Creation12/04/2000Phong Nguyen

phong@arsdigita.com

Last modified: $Id: design.html,v 1.2 2001/08/24 14:42:06 vinodk Exp $