April 2007 - Posts
Many people asked if there would be a release of these tools, all I can say so far is "there's a good chance" and it may be open sourced.
To release them I have to enhance things because I really do want them to be highly configurable and adaptable to your Process Template. That means I have to be able to deal with any kind of Work Item Types (as long as my three custom fields are declared), custom States, etc.
We use them in production already, and if there's a release, I want any team to be able to use them in production too. Otherwise it would be pointless...
I also want both WICreator and WINetwork to be plugable. The first in-house plugin will be the creation of Work Items from JIRA Issues in WICreator and the workflow synchronization between a Work Item and its corresponding JIRA Issue in the WINetwork.
The wish list for WICreator also includes:
- Ordered Hierarchy (almost done).
- A filter for the TreeView (Work Item Types, States, Owner).
- A "Favorites" list for the recent opened databases.
- Visual Studio Package instead of a standalone application? (your thought about that is welcomed)
- Integration with MS Project Server (in my dreams or at least in a not so near future): linking a Work Item with a MS Project Task, being able to update the task from a Work Item. No more Project Web Access for timesheet updates!
Stay tuned!
My team came up with a request that looked at first « easy to code » but which turned out to be a real pain: managing order in siblings.
As I wrote in a previous post, I was using the Work Item's Links (to link a son with its father) and a custom field "ParentWI" to handle the Hierarchy.
The pros:
- I'm relying on existing features of Team System, it's supposed to make the enhancement tighter with the original software.
- I thought it would be easier to code it that way... Well, until I had to code it!
The cons:
- It turned out that the Links of type "Work Item" are bidirectional, and then automatically created on the opposite way when you create a new link. This is a REAL PAIN for the implementation, because you constantly have to SyncToLatest() the opposite Work Item after creating a Link. And looks like it's not always working: there are some times when I have exceptions raising because of my Work Item not up to date with the server.
This issue is emphasized by the fact that you CAN'T merge Work Item: I you made changes locally and the Work Item was changed (due to the bidirectional link creation, for instance) by the time you save it, it throws you an exception...Not very handy or easy to encounter...
- There is no order between siblings, not even a chronological one. I first thought that the order will be chronological, but it turned out it has no sense at all (on a functional point of view). And my teammates yell at me "why the order changed suddently!!!"
I came to the point that I had to implement hierarchy in a different way: forget about the Links, this is just a nightmare for WI Hierarchy and I can't really see the advantages for the price I pay to use them.
The solution was not complicated to find: add two more custom fields.
"FirstChildWI", it contains the ID of the first child of the Work Item.
"NextWI", it contains the ID of the next sibling.
I don't need a "PrevWI" kind of field, parsing backward is not very useful, and I can still do it without it.
Another solution would have been to create a "ChildrenWI" custom field of type String that references all the children in a given order. But I assumed (maybe I'm wrong) that the String type has a limited size, and I wouldn't want to limit the count of children.
So here I am, three custom fields for the hierarchy, no more Links to handle, a simplified saving process, and I still kept the ability to create new Work Items in a hierarchical way WITHOUT saving them right away (which lets the user the possibility to "delete" the Work Item if needed).
The user has the ability to reorder its Work Items, life is good! :)
I've made some videos of the WICreator application, used with the WINetwork system.
Check them out, I think they worth it!
-
This
one is about the creation of a project and the realization of a task with a code review. Both processes use the WINetwork to ease the communication and synchronization of Work Items.
-
-
I should have disabled the ClearType font antialiasing for the Video Capture, looks ugly because of it...
One last thing, and not the least, if you want to know how the whole thing works internally, check out this XML file. It defines what type of Work Items we can create in respect of the hierarchy, and also describes all the Work Item Network Models I told about in this post.
Yes I know, spare me with the poor naming of this application, this is what happens when you allow yourself no more than 30sec to find something...
Anyway, as I told in previous posts, hierarchy in Work Items are a must for us, so we had to develop an application which allow people to create Work Items in a hierarchical way.
To make the application works, all you have to do is create a "ParentWI" integer field!
There are some features like the Recycle Bin one that is just cool for everyday use. As you can't destroy a Work Item, I created a Recycle Bin one where all the Work Items people don't need any more are stored. I also change the Area Path of the Work Item when it's moved there, to get it out of every scope.
Here what the application looks like.