Adding Iterations to AgileTrac?
Updating Ticket Workflow
EndUser? can view the size of all completed tickets for a given Iteration.
In order to be able to do this we need a way to specify that a ticket is closed on a certain time.
Currently the ticket system supports a way to capture the time when the state of the ticket is changed (for example closed), but there is no way to say, "I completed this ticket on dd/mm/yyyy". To allow for this we need to modify the ticket page to display a radio item for completing either on the current date, or on some specified date. For example:
- test complete now
- [_23/05/2009_]
- test complete on
- [____________] dd/mm/yyyy
- resolve as
- [____________][V] choice of invalid, duplicate, worksforme, wontfix
NOTES:
- The two completion stage options will only be available to a completion stage with a numeric size that is not 0. In fact if the relative size is 'undecided' then you will not be able to 'close' the ticket.
- To resolve the ticket as one of the 'dismissive' resolutions (invalid, duplicate, worksforme or wontfix) the relative size must be 0 for each completion stage.
- either these sizes will be set to 0 automatically on selection of this option, or,
- you must first set all completion stage sizes to 0 to enable this option.
The easiest choice for dealing with dismissive resolutions has yet to be decided.
We also need to be able to use the ticket workflow to allow this to work as expected. The default workflow is:
[ticket] default_component = default_milestone = default_priority = major default_resolution = fixed default_type = defect default_version = max_description_size = 262144 preserve_newlines = default restrict_owner = false workflow = ConfigurableTicketWorkflow [ticket-workflow] accept = new,assigned,accepted,reopened -> accepted accept.operations = set_owner_to_self accept.permissions = TICKET_MODIFY leave = * -> * leave.default = 1 leave.operations = leave_status reassign = new,assigned,accepted,reopened -> assigned reassign.operations = set_owner reassign.permissions = TICKET_MODIFY reopen = closed -> reopened reopen.operations = del_resolution reopen.permissions = TICKET_CREATE resolve = new,assigned,accepted,reopened -> closed resolve.operations = set_resolution resolve.permissions = TICKET_MODIFY
To be able to use completion stages (see the next section) we need some changes to the basic workflow. Basically we want to follow a couple of rules:
- using 'resolve' to change the ticket state to invalid, duplicate, worksforme results all completion stage sizes being set to 0 (or they must be all 0 to begin with).
- either resolve to wontfix will be treated the same as other dismissive resolutions, or, it will be possible to not have the sixe set to 0 and then place the wontfix ticket into a wontfix milestone. Another possibility would be to ignore wontfix tickets in any given milestone.
- using '''stage_complete''' on dd/mm/yyyy will either,
- make the subsequent completion stage available, or,
- change the ticket state to 'closed' (that is, DONE)
A possible workflow then might be
complete = new, assigned, accepted, reopened -> partially_complete complete.operations = set_completion_stage complete.permissions = TICKET_MODIFY
set_completion_stage would close the ticket if this is the last complete 'completion_stage'.
We may need to add a 'sized' status, for example,
sized = new, assigned, accepted, reopened -> sized sized.operations = set_ticket_size sized.permissions = TICKET_MODIFY
It may make sense to only allow a ticket to be accepted after it has been sized. This would allow this us to fit the idea of sizing into the ticket status without forcing to rewrite how status is used conceptually for tickets. In other words the status would continue to be a linear advancement.
Complex Tickets have Completion Stages
In AgileTrac? there will be 4 types ticket as standard,
- defect - complex
- enhancement - complex
- userstory - complex
- task - simple
Of these three are complex. What we mean by that is that the complex three have more than one completion stage. The default completion stages are:
- test_complete
- documentation_complete
- acceptance_complete
In the case of a task it will have only one stage, that of,
- complete
The basic idea is to use a table (or tables) in the database that captures these stages for each ticket type, allowing them to be changed as appropriate, for example,
| defect | test_complete |
| defect | documentation_complete |
| defect | acceptance_complete |
| enhancenment | test_complete |
| enhancenment | documentation_complete |
| enhancenment | acceptance_complete |
| userstory | test_complete |
| userstory | documentation_complete |
| userstory | acceptance_complete |
| task | complete |
might be added to the enum table in the trac database.
You can see an entry of 'complete' for task. This would be the default even if no entry was specified for task.
