OoProjectPlannerPlugin
This is a plugin for planning projects and using collaborative maintenance to keep track of the status.
It is a rewrite of the original
TWiki:Plugins.ProjectPlannerPlugin
in an object oriented framework. This allows more generic queries of the data to be done and also removes dependencies on field/column relationships in the data tables. It also removes the need for the
PPTASK column in the data tables.
Description
Layout
There is a hierarchy of information in the web used by the plugin that will be used for planning:
- Web - the TWiki web containing all the projects. It is strongly recommended to setup a separate web for project tracking. One web can be used to track multiple products.
- Project - the project being worked on for a delivarable. Each project has a home page, which contains an auto-generated summary of the project progress.
- Plan - a project is divided into various plans. Each plan can be thought of as a cohesive feature that can be planned and allocated together.
- Task - Task is the atomic unit of work. Each plan is divided into multiple tasks. Task is the granularity of work allocated to a developer and scheduled in terms of man days.
- Developer - a user who is allocated the task.
Usage
Creation of pages is recursive, each page has an html form that uses a template to create child pages or a table with defined columns:
- Projects. You can create a new project page using the html form on the home page for the planning web. You can add additional content to these pages if desired, but do not delete the existing content. This is used to provide high level overviews of schedule progress.
- Plans. Each Project page has a form for creating plans in addition to the summary of currently entered plans. The template for the Plan page has a table where tasks can be added, allocated and updated.
Note: Project and Plan names have to be
WikiWord. Task names may or may not be. However, if Task names are specified as WikiWord, it provides links to add more info about the task and also provides a pretty printed version for online-challenged meetings.
The top level project creation form is displayed by adding the keyword %OOPP{action="allprojects"}% in any page. The creation of plans and addition of tasks are performed in the resulting forms that are generated when a project is created.
Plugin Settings
Plugin settings are stored as preferences variables.
- One line description, is shown in the TextFormattingRules topic:
- Set SHORTDESCRIPTION = Planning and status tracking of projects
- Debug plugin: (See output in
data/debug.txt)
- Set DEBUG = 0
- Set COMPAT = 1
COMPAT enables the old style variables that the original
ProjectPlannerPlugin used. Instead of starting with %PP they start with %OOPP.
Advanced Settings
It is possible to customize the PlanTemplate to have a different layout for the Task Table. The Plugin does not depend on the fields in the template for processing PP tables. Only, "Task Name", "Summary", and "Developer" fields are required for data detection. The Template is only used as a template for creating new plans. This is in contrast to the original ProjectPlannerPlugin which relied on the template for field positions within the tables. Here is a list of required field names for proper reporting:
| Name |
Comment |
| Task Name |
Name of the Task, can be a WikiWord to enable adding more info |
| Summary |
brief summary for executive consumption |
| Developer |
developer assigned to task |
| Status |
status of task (not started, in progress, waiting, and done) |
| Est. Days |
estimate of man days for the task |
| Spent Days |
number of man days already spent |
Note: It is advisable to setup a separate web for the project planner and create all projects and plans in that web. Whenever new data is entered into the web, the plugin crunches through all the files in the web to identify files which belong to various projects. This can be slow if the planner is used on a web with a large number of files.
The display variable %OOPP%
There is one variable for this plugin, %OOPP%. It uses parameters to decide what action to take. The parameter
action is required in all cases, as that tells the plugin what action to take. Most actions take an optional
project and/or
plan parameter. These two parameters are comma separated lists of project or plan names used to filter the data displayed. Simple glob style matching with * can be used in these two parameter values. If not specified, all plans and projects are considered.
The two query actions require a query parameter that filter the tasks considered for processing. There are two types of queries, expression and comparison. An expression query follows the form: {field}{op}{perl regular expression} where
op is
=~ for matching and
!~ for non matching.
Comparison queries follow the form {field}{op}{value} where
op can be
<,<=,==,!=,>, or >=. The field data and value must be a number or a date format understood by the Date::Calc perl module.
Any number of queries can be joined together with
&& and
||. In this way, the queries can be ANDed or ORed together (&& takes precedence over ||).
Following is a description of available actions and associated parameters (parameters in italics are optional):
| action |
Description |
Parameters |
| querysummary |
Reports done vs. remaining work. Reporting can be grouped by values in a field. Special fields PLAN and ID are available for grouping. |
plan project query group_by |
| querydetails |
Returns a list of task details. Displays all fields unless fields are specified (comma separated) in the display parameter |
plan project query display |
| allprojects |
Displays all known projects |
|
| allprojectsinfo |
Shows all tasks and task description (if task name is a link) for given project(s) and plan(s) |
project plan |
| projectplans |
Displays all plans in a project with an optional form to create a new plan. Turn the form off with form=0 |
project form |
| devsummary |
Display completion status by developer for given project(s) |
project |
| devdetails |
Task details by developer for given project(s) |
project |
| allplans |
Shows all testplans for given project(s) |
project |
| allplanstasksummary |
Gives a task status summary by plan given a plan(s) and optional task name comma separated list (simple glob expressions allowed) |
plan task |
| allprojectstasks |
Shows all task detail for given project(s) |
project |
| planidsummary |
Task summary grouped by plan ID for given project(s) |
project |
querysummary and
querydetails provide almost all the functionality of the others, so try to use them when possible.
Examples
%OOPP{action="querydetails" project="FooProject,BarProject" query="Module=~dirtest&&Developer=~unassigned" dislpay="Task Name,Summary,Status"}
%OOPP{action="ppquerysummary" query="Module=~dirtest&&Developer=~unassigned" group_by="Priority"}
%OOPP{action="ppquerydetails" plan="FooPlan" query="Module=~dirtest&&Developer=~unassigned" display="Task Name,Summary,Status"}
%OOPP{action="querysummary" project="BarProject" plan="FooPlan,BarPlan" query="Module=~dirtest&&Developer=~unassigned" group_by="Priority"}
Status Summary Display
- Handling of the Est Days and Spent Days in Summary Views: The plugin computes cumulative totals based on the status of tasks. Hopefully, the following rules help understand the totals:
- done status: Spent days is counted. In the event spent days is not specified, Est days is used
- not started status: It is assumed that any Spent Days is meaningless and the Est Days is used for total days. The Est days will all show up as part of the red bar in status.
- waiting status: This status says the task is blocked for some reason. Spent Days is used here. This is represented as a blue color bar.
- in progress status: The Spent Days are used towards the total (and the orange color bar in status).
- total days: The total count of days, or the total Est Days is made of the Est Days numbers except in cases where Spent Days exceeds Est Days for a task wherein Spent Days will go towards the totals.
- remaining days: Generally total days minus done, waiting, and in progress days. Shows up as a red bar.
Usage Tips
- Naming Projects, Plans and Tasks: It is a good idea to name projects, plans and tasks so that you can group them by using wildcards when you want to display summaries and status.
Additional TWiki plugins/changes needed to get this plugin to work at its best
- The Storable.pm module must be installed in the Perl installation used by the Twiki server.
- The Date::Calc::Object module must be installed in the Perl installation used by the Twiki server.
- EditTablePlugin is used to simplify entering of tasks by using an EditTable template.
- TablePlugin is optional but useful as it allows you to sort tabulated information by column
Warning: as noted in
OoProjectPlannerPluginDev,
does not work on TWiki 4.0 (yet?) --
SeanCMorgan - 25 Oct 2007
Plugin Installation Instructions
- This plugin has only been tested with the 01Feb2003 TWiki release.
- Download the ZIP file from the Plugin web (see below)
- the default ZIP installs in the TWiki common directory. it is advisable to create a separate web for the project planner and copy the Template files to that directory.
- Unzip
OoProjectPlannerPlugin.zip in your twiki installation directory. Content:
| File: |
Description: |
data/TWiki/OoProjectPlannerPlugin.txt |
Plugin topic |
lib/TWiki/Plugins/OoProjectPlannerPlugin.pm |
Plugin Perl module |
lib/TWiki/Plugins/OoProjectPlannerPlugin/Plan.pm |
Plan class for plugin |
lib/TWiki/Plugins/OoProjectPlannerPlugin/Task.pm |
Task Class for plugin |
NOTE: The ProjectTemplate.txt and PlanTemplate.txt files need to be copied to the appropriate
yourweb web or you will see a blank page when you create the Project from the PPALLPROJECTS tagged page.
Installation test
- If installed correctly you should see the following content between the two horizontal lines below - a title "All Projects" and a single cell table with the field containing the word "Project", and finally an html form to add a new project (dont use this form from here though!) You should also see a small summary table for data contained in this topic at the bottom.
%OOPP{action="allprojects"}%
%OOPP{action="querysummary" plan="OoProjectPlannerPlugin" query="Devloper=~.*" group_by="Env"}%
Plugin Info
Related Topics: TWikiPreferences,
TWikiPlugins,
DefaultPlugin
DATA EXAMPLE
Tasks in this Plan
| Num |
Task Name |
Summary |
Env |
Module |
Developer |
Priority |
Status |
Due Date |
Est. Days |
Spent Days |
Est. Effort |
Results_Comments |
Date Added |
Key |
Milestone |
| 1 |
BASIC |
basic data movement |
other |
other |
|
none |
not started |
|
|
|
100 |
no actual work for this item |
2005-11-09 |
none |
| 2 |
CLOCK |
all freq combos |
env1 |
dirtest |
|
high |
in progress |
|
3 |
1 |
100 |
|
2005-11-09 |
none |
| 3 |
CLOCK.P |
all freq combos, C-states |
env3 |
dirtest |
|
high |
cancelled |
|
2 |
|
100 |
|
2005-11-09 |
none |
| 4 |
SYSREQ.1 |
mdReq back-to-back |
env1 |
dirtest |
|
none |
done |
|
1 |
|
100 |
|
2005-11-09 |
none |
| 5 |
SYSREQ.2 |
mdReq back-to-back |
other |
other |
|
none |
in progress |
|
4 |
6 |
100 |
this is the same as #4 above |
2005-11-09 |
none |
| 6 |
SYSREQ.3 |
CmdCancel |
env2 |
other |
|
none |
not started |
|
|
|
100 |
not known |
2005-11-09 |
none |
| 7 |
BUFFER.REQ |
XBR to wrdata req buffer |
env2 |
dirtest |
|
low |
not started |
|
1 |
|
100 |
|
2005-11-09 |
none |
| 8 |
BUFFER.DATA.1 |
XBR data buffer |
env3 |
dirtest |
|
none |
not started |
|
1 |
|
100 |
|
2005-11-09 |
none |
| 9 |
BUFFER.DATA.2 |
XBR to data buffer |
env3 |
dirtest |
|
medium |
not started |
|
1 |
|
100 |
|
2005-11-09 |
none |
| 10 |
FIFOS |
checker on FIFO depth |
other |
other |
|
none |
not started |
|
|
|
100 |
|
2005-11-09 |
none |
--
TWiki:Main.AndrewBarber
- 15 Nov 2005