
The Mingle Dependency Tracker allows dependencies between cards and projects to be recorded and tracked.
The tool consists of three macros:
1. Project macro (dependency-tracker-project) : used to track all the dependencies within a project and to record dependencies between cards in the project and on other projects
2. Card macro (dependency-tracker-card): displays the dependencies relating to a single card and allows that cards dependencies to be recorded
3. Program macro (dependency-tracker-program): displays dependencies between projects
The three macros differ somewhat in the way they work, but all have the same general structure and behaviour.
To view the dependencies of a card, choose it in the central selector. The right-hand table shows the cards that the selected on depends on; the left-hand table shows the cards that depend on it.
Cards are colored according to whether their dependencies have been met. Cards with unmet dependencies are colored red, those with met dependencies and no dependencies at all are colored green.
Dependencies can be created using the form below the selector. This form can be used to create dependencies on other cards in the same project, or on cards in other projects. Duplicate and self-referential dependencies are disallowed.
A number of aspects of the macros can be configured. These include:
See the section "Macro reference", below, for details.
The card macro should be placed in the description of a card. It reports on the dependencies involving that card and allows new dependencies for that card to be recorded.
The project macro should be placed on a wiki page. It reports on all dependencies within the project and on dependencies on other projects. It allows dependencies of any card in the project to be recorded.
The program macro should be placed on a wiki page. It is designed to be used in the context of program-level reporting, possibly in a dedicated program reporting project. It reports only on dependencies between projects. It is not possible to record dependencies using the program macro.
This section details the parameters that the macros take. Each should appear at most once. Examples of each one are given below.
met
MQL condition specifying when a dependency should be considered to be met. Mandatory.
met: Status = Accepted
met: (Type = Story AND 'Story Status' >= Accepted) OR (Type = Bug AND 'Bug Status' >= Closed)
properties
A list of additional properties that will be displayed in the dependency table. Optional.
properties: [Status, 'Card Owner', Type]
properties: Status
card-type
The card type, or types, to display in the tool. Optional. Defaults to "Story" in the project and program macros and the type of the current card in the card macro.
card-type: Story
card-type: [Story, Task, Defect]
filter
MQL condition which restricts the cards displayed in the tool. Optional. No restriction is applied by default.
filter: Release = 'Release 3'
filter: Component = UI AND Status != Closed
projects
Program mode only (see section "Standalone and program mode", below). The identifiers of the projects that make up the program. Optional. Includes the current project by default.
projects: [mobile_client, security, core_services]
dependency-project
Program mode only (see section "Standalone and program mode", below). The identifier of the project where dependencies are stored. Optional. Defaults to the current project.
dependency-project: program_reporting
This example macro invocation includes all the parameters:
{{
dependency-tracker-project
met: Status = Accepted
properties: [Type, Status]
card-type: [Story, Defect]
filter: Release = 'Release 3'
projects: [mobile_client, security, core_services]
dependency-project: program_reporting
}}
For more examples, see the section "Setting up the macros", below.
In order to start using the Dependency Tracker in your project you must:
The tool lives in your Mingle installation’s vendor/plugins directory, in a sub-directory called dependency_tracker.
To install:
The Dependency Tracker can operate in two different modes. For a single, standalone project (standalone mode) the dependencies are stored within the project. For a multi-project program with cross-project dependencies (program mode), all dependencies (between and within projects) are stored in a single project which we will refer to as the dependency project.
You can chose any project on your Mingle instance to be the dependency project. Everyone who uses the Dependency Tracker macro needs to be a full team member of the dependency project.
If you are using Mingle to manage a multi-project program of work, you may have a dedicated program-reporting project. If so, we recommend using this project as the dependency project; otherwise we recommend creating a dedicated dependency project.
It is possible to have multiple projects on the same Mingle instance using the Dependency Tracker in standalone mode. It is only necessary to use it in program mode if you wish to record cross-project dependencies.
It is possible to migrate projects from standalone mode to program mode (see the section "Migrating from standalone to program mode", below); but if you think that you will want to migrate in the future, then it is a good idea to use a single dependency project now, to ease the later migration.
|
Note |
In program mode, all users of the Dependency Tracker must be read only (or full) members all projects in the program. In order to create dependencies, users must be full members of the dependency project. |
In standalone mode, the following configuration needs to be applied to each standalone project that uses the Dependency Tracker. In program mode, the configuration only needs to be applied to the dependency project.
(Card type and property names are case sensitive.)
See the section "Macro reference", above, for details of the macro parameters.
You should create a wiki page to manage your dependencies. Put the project macro into the body of the page.
{{
dependency-tracker-project
met: Status = Accepted
card-type: [Story, Defect]
properties: [Type, Status]
filter: Release = 'Release 3'
}}
You may wish to create different instances of the macro for managing the dependencies in different releases.
You can optionally put the card macro into the description of every card. The easiest way to do this is to include it in the default description of appropriate card types.
{{
dependency-tracker-card
met: Status = Accepted
properties: [Status, Owner]
}}
In program mode, the program macro can be placed in a wiki page in your program reporting project.
{{
dependency-tracker-program
met: Status = Accepted
projects: [mobile_client, security, core_services]
dependency-project: program_reporting
}}
In program mode, the projects and dependency-project parameters are also required in the project and card macros.
|
Caution |
You should back up your project before doing the migration. |
When operating in program mode, the Dependency Tracker stores all of the dependencies in a single project, which needs to be configured specially. Please read the section "Standalone and program mode", above, before doing the migration.
Before migrating your dependency data you must prepare the dependency project, as specified in section "Configuring the project", above.
Repeat the following steps for every project that you want to unite into a program.
1. Export the dependency cards from the single project
2. Import the dependency cards into the dependency project
3. Modify the macro parameters
4. Cleaning up old data in the single project
You should also set up the program macro as specified in the section "Setting up the macros", above.
Comment
I'm trying to get this to work with Mingle 3.0 (on Windows 2003 / postgres) - should it? work on that platform? I was unable to restart Mingle after i unzipped the directory in plugins. The windows service restarted without a problem, but I was unable to launch mingle under localhost - the second part of the startup procedure i believe...
Hi Paul,
The Mingle Dependency Tracker is supported only on Mingle 3.2 and 3.3.
I tried replicating the issue(Win 2003/Postgres 8.3/Mingle3.0) but was unable to. Could you please send across your log files to support@thoughtworks.com to help us investigate further.
Thanks!
Mansi
mingle.log:
[2011-04-18 20:15:36,581] [Thread-0] [org.mortbay.log] Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
[2011-04-18 20:15:36,675] [Thread-0] [org.mortbay.log] jetty-6.1.5
[2011-04-18 20:15:36,706] [Thread-0] [org.mortbay.log] NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
[2011-04-18 20:15:38,065] [ObjectPoolManager] [/] JRuby init time: 1000ms
[2011-04-18 20:15:46,269] [ObjectPoolManager] [/] Failed to load Rails: wrong # of arguments(2 for 1)
C:/Program Files/Mingle_3_0/vendor/plugins/dependency_tracker/init.rb:21:in `deploy_public_files'
C:/Program Files/Mingle_3_0/vendor/plugins/dependency_tracker/init.rb:21:in `evaluate_init_rb'
[2011-04-18 20:15:52,629] [ObjectPoolManager] [/] Failed to load Rails: wrong # of arguments(2 for 1)
C:/Program Files/Mingle_3_0/vendor/plugins/dependency_tracker/init.rb:21:in `deploy_public_files'
C:/Program Files/Mingle_3_0/vendor/plugins/dependency_tracker/init.rb:21:in `evaluate_init_rb'
[2011-04-18 20:15:59,363] [ObjectPoolManager] [/] Failed to load Rails: wrong # of arguments(2 for 1)
C:/Program Files/Mingle_3_0/vendor/plugins/dependency_tracker/init.rb:21:in `deploy_public_files'
C:/Program Files/Mingle_3_0/vendor/plugins/dependency_tracker/init.rb:21:in `evaluate_init_rb'
stderr.log
config.gem: Unpacked gem mingle-macro-development-toolkit-1.3 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.
C:/Program Files/Mingle_3_0/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb:84 warning: given block not used
javax.servlet.ServletException: Could not load Rails. See the logs for more details.
at org.jruby.webapp.RailsFactory.makeObject(RailsFactory.java:139)
at com.thoughtworks.mingle.MingleCustomObjectPool.A(Unknown Source)
at com.thoughtworks.mingle.MingleCustomObjectPool.access$200(Unknown Source)
at com.thoughtworks.mingle.MingleCustomObjectPool$_A.run(Unknown Source)
Finally got upgraded to 3.4, got this installed, and more or less working. It is an EXCELLENT addition to Mingle.
I'm having problems with the filter though - either I'm typing something wrong, or its not working, or it is not doing what i expect.
I'm expecting that it will filter cards in the dropdown. However this (which should return no cards (and is just an example of the many filter expressions I have tried)) still returns a full set of cards in the dropdown.
{{
dependency-tracker-card
met: 'Story Status' = Accepted
properties: ['Story Status', 'Owner', 'Card Subtype']
filter: 'Release' = 'This is not a real Release Name'
projects: [sentri7, sentri7_documentation, hydra_messaging, cas]
dependency-project: pmo
}}
Another question (is there any more detailed help apart from this post?)
I'm puzzled about the met criteria - what does this mean at the project and program levels? And for the filter at the project or program level, can i say: cards that have a unmet dependency ?
Hello Paul
I'm sorry that we've taken so long to get back to you.
The post above is a copy of the README that is distributed with the macro (and may be more helpfully formated). That's all the documentation we have at the moment. I'm very happy to answer your questions here because they may be helpful to other users of the Dependency Tracker; but if if's more convenient for you, feel free to email our Support Team instead.
I am surprised that your filter parameter isn't working; it looks fine to me. Your understanding of how the filter works is correct -- it should limit the cards that appear in the dropdowns (and in the displayed dependencies above). The MQL syntax you are using (with the Release card's name) is correct. There is an alternative syntax that you could try to help debug the problem, using the card number instead, like:
filter: Release = NUMBER 123
The met parameter is used to determine which dependencies have been met. In your example above, any dependency where the dependee (the card that is depended on) has property "Story Status" set to "Accepted" is considered to be met. It will be marked as met in the UI and the depender (the card that depends on the other card) will be green if all dependees have this status. Does that help? It works just the same way whether you are using the card, project or program macros.
There is no way to use the met/unmet dependency status in the filter, I'm afraid.
-Ben