how to display critical path?

347 views
Skip to first unread message

Bert Pieters

unread,
Sep 3, 2019, 6:27:16 AM9/3/19
to taskjugg...@googlegroups.com
Hi all,

I'm looking at finding a way to report or find the critical path.

I found something like pathcriticalness/criticalness, but those values are hard to understand. It doesn't tell me what it means.

Apparently in tj2 there was a way to display it in red.

Best regards

--
Bert Pieters

Project Leader
be...@easics.belinkedin: link+32 16 395 616
 
Easics logoGaston Geenslaan 11+32 16 395 611
3001 Leuven, Belgiumhttps://www.easics.be

John Carey

unread,
Sep 4, 2019, 11:48:58 AM9/4/19
to TaskJuggler Users
Hi,

I haven't found a good way to generate a critical path report within tj3.   Yes, tj2 could display the critical path in a gantt chart report, but tj3 doesn't do it.

As for "Criticalness" values within tj3, they are available or can be calculated using the following two TaskJuggler::TaskScenario public instance methods:

calcCriticalness()
Determine the criticalness of the individual task. This is a measure for the likelyhood that this task will get the resources that it needs to complete the effort. Tasks without effort are not cricital. The only exception are milestones which get an arbitrary value between 0 and 2 based on their priority.

calcPathCriticalness(atEnd = false)
The path criticalness is a measure for the overall criticalness of the task taking the dependencies into account. The fact that a task is part of a chain of effort-based task raises all the task in the chain to a higher criticalness level than the individual tasks. In fact, the path criticalness of this chain is equal to the sum of the individual criticalnesses of the tasks.

calcCriticalness returns a numeric value based on a calculation of the "criticalness" of a task and calcPathCriticalness returns the sum of all of the "criticalness" values of all of the tasks in a particular path.  As far as I can tell, they both return dimensionless numbers that represent some expression of "criticalness" with the only use I can find to be to determine if one task is more "critical" than another, using that metric.  Also, and someone who knows this stuff better than I may correct me here, the metric has more to do with the likelihood of winning a resource arbitration than something having to do with schedule, so it really isn't exactly "criticalness" in the sense of the critical path.

I tried to use these functions to return some sort of traditional critical path report, but without much success.

That said, I do generate critical path reports from TaskJuggler projects.  I just don't use TaskJuggler to do it.  As far as I can see, there are two ways to do this:
  1. Hack the TaskJuggler ruby code to generate the report you want and then when you get something you like, submit a pull request and maybe Chris will include it in future releases.
    • I have done some of this, that is to say I have hacked the TaskJuggler ruby code but I haven't actually submitted a pull request for my custom reports because I don't think that they are of general interest.
    • Nontrivial and slightly problematic when new TaskJuggler releases occur and you have to patch them with your custom report code.
  2. Write an external application yourself that takes the output of a set of values from a TaskJuggler report and generates a critical path report of some sort.
    • Nontrivial but doable.
      • I wrote something for myself in Python using the Pandas and Plotly libraries that sort of did what I wanted, but there were so many corner cases that it broke as often as it worked.  I gave up on this fairly quickly.
      • Next, I tried using an XML report from TaskJuggler and again used Plotly to generate the report and I had slightly better success with that, but it was a lot of work.
  3. Take the output of a TaskJuggler report and process it in another, third party tool that can generate critical path reports.
    • This is how I do it today.  (Note: I don't do this with every tj3 run.  it is a special report that I do manually and only periodically.)
      • I use the mspxml report format.
        • I notice that mspxml is no longer listed in the "formats" section of the documentation which leads me to think that it is or will soon be deprecated, but it is working for now. 
      • I load the resultant Microsoft Project XML file (actually, MSPDI) into Gnome Planner or projectlibre and then enable the critical path calculation and generate your report or just view the project in the applicaiton.
Good luck with TaskJuggler and your critical path reports.  Let us know what you finally decide to do.

All the best,

John

John Carey

unread,
Sep 4, 2019, 11:52:52 AM9/4/19
to TaskJuggler Users
Correction...  xmlrsp is an export format and it is still in the documentation.  Sorry for the misinformation.

jwc

Rich Shepard

unread,
Sep 4, 2019, 1:15:00 PM9/4/19
to TaskJuggler Users
On Wed, 4 Sep 2019, John Carey wrote:

> I haven't found a good way to generate a critical path report within tj3.
> Yes, tj2 could display the critical path in a gantt chart report, but tj3
> doesn't do it.

John,

I'm not a professional project manager and in my environmental consulting
practice I'm usually the only one working on a project. Regardless, I'm
offering a suggestion based on my finding and using TJ for a large wetland
mitigation bank project.

Years ago I used TimeLine in DOS for project management when I worked for
consulting companies and that was based on critical path management (CPM).
Most recently I learned that this is often not the appropriate, or most
useful, approach. The replacement is Eliyahu Goldratt's "Theory of
Constraints" as described in his book, "The Goal."

While the path to the project's goal might appear to senior executives as
the most critical element, in practice where the bottleneck is located (the
biggest constraint) tends to define the project's progress.

I encourage you to read The Goal and Goldratt's follow up book, "It's Not
Luck." You might find his approach highly useful in your project(s).

Regards,

Rich

Bert Pieters

unread,
Sep 4, 2019, 1:43:59 PM9/4/19
to taskjugg...@googlegroups.com
Hi John,

first of all: thanks for the reply!

That explains why the "(path)criticalness" is hard to understand.

I've tried exporting to MS Project XML format with:
export ms_mpp "MS-Project" {
  scenarios baseline
  formats mspxml
  loadunit days
}

This generates a Ms-Project.xml. It seems to read properly in for people who have access to MS Project (I don't).

I've imported in Gnome Planner which I installed quickly. When I want to display the Critical path, it shows only the very last tasks as "critical". No resources are visible either. Only a Gantt chart and a WBS. I guess the compatibility is not great, and Gnome Planner is unfinished ( version < 1.0) and not updated in years.

I guess I will find a usable MS Project viewer soon.

Regards

--
You received this message because you are subscribed to the "TaskJuggler Users" group.
To post to this group, send email to taskjugg...@googlegroups.com
To unsubscribe from this group, send email to
taskjuggler-us...@googlegroups.com
For more information about TaskJuggler visit http://www.taskjuggler.org
---
You received this message because you are subscribed to the Google Groups "TaskJuggler Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to taskjuggler-us...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/taskjuggler-users/63276758-bf60-454f-bdb4-86091b6eb183%40googlegroups.com.

John Carey

unread,
Sep 5, 2019, 11:45:16 AM9/5/19
to TaskJuggler Users
Hi,

Thanks for the recommendation.

I am very familiar with Critical Chain and the Theory of Constraints and have read Goldratt's books and articles.

I find the technique interesting and have done some preliminary work with a Critical Chain model in TaskJuggler where I preprocess the .tjp and .tji files and for each leaf level task, I break it into two, one appending '_buffer' to the end of the task name and then making it dependent on the actual task.  I duplicate the task and buffer definitions and I divide the duration or effort by 2 assigning half to both the original task and the buffer and then schedule the project.  It adds a lot of complexity to the project but with some specialized reports, it is workable, at least as a demonstration of the technique, but it needs work.

I still use CPM for project planning and estimation.  My clients would complain about all of those "unnecessary" buffers and it simply isn't worth the effort explaining Critical Chain, but I frequently use Critical Chain in managing the project once it is in flight.

All the best,

John

John Carey

unread,
Sep 5, 2019, 12:04:33 PM9/5/19
to TaskJuggler Users
Hi Bert,

You're  welcome.  I'm happy to help when I can.

In addition to Gnome Planner, there are lots of viable, open source, cross platform tools that can read your TaskJuggler generated Ms-Project.xml files.  Some of those are:

projectlibre
ganttproject
projectlibre
open-msp-viewer
MOOS Project Viewer

And a lot more, and most of those support viewing the critical path.

TaskJuggler has an idiosyncratic internal representation of a project and when you translate that to a Microsoft Project XML file (MSPDI), there are things in that file that are syntactically correct for MS-Project and things that work like MS-Project but that aren't sensible with respect to the the way MS-Project represents projects.  To actually use the TaskJuggler generated Ms-Project.xml file, I usually have to do some post processing to make it useful for my purposes.

This is slightly off topic, but another great tool that I use frequently to convert from one project file type to another is MSXJ (http://www.mpxj.org).  It allows me to convert between project types more or less easily.

All the best,

John

For more information about TaskJuggler visit http://www.taskjuggler.org
---
You received this message because you are subscribed to the Google Groups "TaskJuggler Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to taskjugg...@googlegroups.com.

W W

unread,
Jun 4, 2020, 8:29:19 AM6/4/20
to TaskJuggler Users
HI Bert,

I am a novice, but after some playing I found something, that may produce someting similar:

I added a macro:
macro PathImportance [
  fontcolor isleaf() & (plan.pathcriticalness < 10) "#000000" # black
  fontcolor isleaf() & (plan.pathcriticalness < 100) "#d16500" # orange
  fontcolor isleaf() & (plan.pathcriticalness >= 100) "#D00000" # red
]

Then I modified the column definitions in some of my reports like this:

columns bsi { title 'WBS' },
          name { ${PathImportance} },
          scenario, start, end, effort, complete,
          chart {
            ${TaskTip}
            width 1200
          }

This changes the color to orange / red for the tasks on the critical path.

I have not found a way to change the chart coloring yet.

Hope that helps.
Wolfram
Reply all
Reply to author
Forward
0 new messages