A Solution For Tracking and Monitoring Multi-Stream Processes Using Rational Team Concert
Have you wanted to track the flow of work through a set of steps in a defined multi-stream process using RTC?
I've recently implemented an extension to RTC for a customer that does just this and I thought I'd write about that here. I'm not able to share the code for this (sorry), but hopefully these notes will be useful for anyone looking to implement their own solution.
|Figure 1. - Simple example of a "defined multi-stream process"|
- With the exception of the first step, all other steps are dependent on their "upstream" steps completing before they can start.
- Each step is owned by a team i.e. team members of that team are able to claim the step to work on it.
- A team can own (be responsible for) multiple steps.
- A step can be dependent on more than one "upstream" step e.g. step 4.
- More than one step can be dependent on the same "upstream" step e.g. steps 3.1 and 3.2.
- The process is completed once all of the steps in the process have been completed.
The Workflow States Solution - And the "Who Owns Each Step?" ProblemIts easy enough to represent a process flow using a custom work item workflow describing the states in the process.
|Figure 2 - Workflow States Solution|
Well lets remember that we really care about being able to assign various steps in the process to specific teams.
There is no way in this solution to pre-assign ownership for various steps in the process to specific teams.
Also things get a bit interesting around steps 3.1 and 3.2. In the process defined in figure 1 these steps can occur in parallel - hence referring to this as a "multi-stream" process. In the solution shown in figure 2 the steps can be done in either sequence, but not at the same time.
Lets also add a new requirement that we care about seeing how well our process is performing. How long are we spending in each of the tasks? Who is performing them well. Not all teams will care about tracking this information. But if you're performing continuous improvement (and why wouldn't you be), then read on!
Although the Jazz Report Builder will let us create awesome reports from our data warehouse, this solution doesn't make it easy to track who completed each step, how long we waited to start the step (wait time), and how long it took to complete the step (execution time). That data is simply not readily available in the data warehouse if we stick to the solution shown in figure 2.
So in summary, although this solution is pretty simple to understand, it turns out it doesn't meet our requirements very well.
The Work Item Template Solution - And the "Is It Workable?" ProblemIts easy enough to represent a process using a work item template that contains a parent work item that represents the process, along with child tasks that represent the steps of the process, organised end-to-end using Blocks/Depends On links. That will let you instantiate the process and track the flow of work using the linked set of tasks. Figure 3 outlines what this looks like.
|Figure 3 - Work Item Template Solution|
|Figure 4 - Workflows for the Work Item Template Solution|
- Each task in the process can be pre-assigned to a team.
- By following the Blocks/Depends On links you will know the sequence that tasks should be completed in, and the assignment, start and completion of each task can be tracked.
- If I use a plan to consume my work, there is no way to indicate on the plan that one of the process step tasks is ready to be worked on i.e. its "upstream" process step tasks are completed.
- When all of the process steps are completed, you need to remember to mark the parent "process" work item as completed.
Solution Wish List
- I want to be able to track completion of the steps of a defined process in RTC.
- I want to be able to assign execution of process steps to specific teams/roles.
- Steps can be worked on in parallel.
- I want the process steps to be completed in strict sequence i.e. I don't want someone to be presented with a task unless its upstream tasks have been completed.
- I want to be able to track how well my processes is being performed. Both for the overall process, but also from the point of view of individual steps and teams.
The "Workable Date" Solution
It is based on the Work Item Template solution, but with some additions.
- a timestamp called Workable Date,
- and a Boolean called Is Workable.
|Figure 5 - New Attributes on the Task Work Item Type|
This is provided through a custom Operation Participant deployed as a server-side RTC plugin, and triggered on a Work Item Save action. It automates setting/unsetting the workable date, and marking the overall process as completed once the final step in the process is completed.
|Figure 6 - Workflow Manager Operation Participant|
|Figure 7 - Is Workable Kanban Board|
|Figure 8 - Configuration For Is Workable Kanban Board|
- How long it took for someone to start work on a work item after it became workable.
- What the turnaround time is for the work item from when it became workable.
|Figure 9 - Advanced Report Builder Report Filtering Out Non-Workable Work|
SummaryMy solution to tracking the flow of work through a set of steps in a defined process using RTC consists of the following:
Although a fair amount of thought went into this solution to keep it simple for the users to understand, there are certainly other ways to solve this! Would love to hear some of your ideas/feedback in the comments thread. If there is enough interest I might add further posts that go into some of the technical detail behind the solution.
Thanks to Ralph Schoon and Sam Detweiler for their postings on the IBM CLM forums for providing pointers that helped me understand the ins-and-outs of the RTC API. Ralph's forum and blog postings were especially invaluable and I highly recommend his extensions workshop (see references).
One final thought to end on. Please follow @continualoop to hear more about my thoughts on improving software development and delivery. Let's improve IT!
Copyright © Continualoop Blog 2017. All rights reserved.