BPC Logic Filter – Version 1.5 Improvements

The latest release of BPC Logic Filter – an Add-in for schedule logic analysis in Microsoft Project – includes direct implementation of the QuickTrace macros, faster logic-related formatting of Gantt chart bars, additional controls for logic-based schedule navigation, and overall snappier performance.

Introduction

My company started sharing BPC Logic Filter, our Add-in for Microsoft Project, in 2015.  Since then, we’ve made incremental improvements to the tool that get shared in real time.  Many of these improvements were prompted by informal user feedback, for which we are most grateful.  Version 1.5, released in January 2019, brings a few nice little goodies that we’ve been anticipating for a while….

QuickTrace

QuickTrace is a set of macros for simplified logic tracing and filtering in MSP.  I wrote the original macros for a blog entry several years ago, and subsequent high traffic on that entry implies that a fair number of MSP users are downloading and implementing the macros.  We’ve now partially integrated that code with the rest of the add-in, providing a new ribbon button and a dedicated form, and including QuickTrace in the daily logs.

Eventually, we may get rid of the two boxes for selecting custom fields, streamlining the form even more.

QuickTrace is fully aligned with MSP’s internal “Task Inspector” and the associated “Task Path” bar styles (in MSP 2013+).  Like the two native tools, QuickTrace relies on internal MSP calculations for identifying “driving” logic.  This makes it blazing fast compared to the rest of BPC Logic Filter.  Also like the two native tools, it incorrectly identifies driving logic paths in the presence of certain (fairly common) complicating factors.

We’ve included QuickTrace as a reasonable accessory.  It is particularly useful when there is a need to compare its results with those of the other logic Tracers in BPC Logic Filter.  (This is the chief argument for leaving the QuickTrace custom fields as user-selected, outside the Add-in’s normal routines for selecting and managing its use of custom fields.)

[Because it relies on recursion (a kind of repeated “cloning” of itself), QuickTrace is subject to memory-overload errors.  This restricts the maximum path length that can be evaluated before “crashing out.”  Based on limited testing, the memory-limited maximum path length (in number of tasks) varies by MSP version and execution environment, as summarized here (figures are approximate).

The two obvious conclusions from the table are: 1) MSP 2016 imposes a much larger memory burden than MSP 2010, especially in the nominally-internal vba environment.   2) Compared to the macro/vba, BPC Logic Filter’s implementation of Quicktrace is far less likely to run out of memory on a very large project.  This advantage is amplified in MSP 2016.  On the downside, the out-of-memory add-in will crash hard, taking your data with it, while the macro/vba solution tends to crash softly.

For the add-in, QuickTrace’s lowest path-length limit – at 7,740 tasks – corresponds to 30 years of 1-day tasks arranged finish-to-start.  It seems unlikely that this limit could be reached in a real-world project of at least moderate complexity.  Nevertheless, as always, save early and save often.]

Bar Formatting Improvements

The first major upgrade of the tool (v1.1) included the ability to add certain logic-related information to bars in a Gantt Chart, specifically by modifying bar shapes, colors, and text.  Such information would be particularly useful for displaying related tasks within the context of an unfiltered view of the overall project schedule (i.e. “In-Line Only”), though I’ve had the habit of re-coloring bars in virtually all analyses.

For several reasons, bar coloring can impose a substantial time penalty on the completion of a logic analysis in BPC Logic Filter, with the size of the penalty being proportional to the number of tasks ultimately displayed.  Recent releases of Microsoft Project (e.g. MSP 2013+) have increased the size of this penalty while also introducing some erroneous coloring results for in-progress tasks.  Consequently, coloring Gantt bars in very large projects typically has been something to avoid.

Accelerated Bar Coloring

The new “Accelerate Bar Coloring” option is implemented via a single checkbox in the Bar Preferences tab – accessed directly through the “Settings” button on the Ribbon or indirectly through the “Bar Chart Options” button on the control window for each Tracer.

This option introduces an alternate bar coloring process that:

  • Draws bars more quickly for large filter outputs, with the largest outputs seeing the greatest gain. For example, I have configured a Near-Longest-Path analysis of an 18,000-task schedule to include every task in the output filter.  Without bar coloring, the overall analysis takes just under two and a half minutes (145 seconds) on my laptop computer.  With Accelerated Bar Coloring, the overall analysis takes 13 seconds more (158 seconds).  With traditional bar coloring, the overall analysis takes nearly 20 minutes more!
  • Overcomes issues of incorrect bar coloring for in-progress tasks (MSP2013+).
  • Constructs and manages up to 25 new bar styles for uniquely and accurately describing the output. In contrast to the other option, these bar styles can be readily modified and augmented by advanced users of MSP.

These improvements can make the coloring of Gantt bars no longer something to avoid for large project schedules.

The new option does come at a cost, however.  Specifically, it uses 4 more custom Flag fields (in addition to the 3 needed for generating filtered views).  Custom fields typically get used up during the execution of a project, and constraining the need for custom fields was one of our key priorities during the early development of BPC Logic Filter.  This new demand may force schedulers to be a bit more disciplined in allocating them.  The accelerated bar coloring process also has a more rigid requirement for Data Persistence.  If “Permanently save the data for further analysis/presentation” is NOT checked, then none of the important information will be shown.  (With both the acceleration and permanently-save options turned off, bars are correctly colored, but logic-related text is not shown.)  Finally, the additional overhead imposed by the setting can actually slow down the overall analysis and display of a smaller project schedule, so it is not always the fastest.

Link Options

All previous versions of BPC Logic Filter have automatically enforced the inclusion of end-connected link lines (relationship lines) in logic tracing results.  The new version leaves this selection to the user.

Logic-Jumping Through Hidden Tasks

As any user of MSP’s built-in “Go To” (F5) tool knows, a task must be visible in the existing view to be selected and activated.  In the past, this meant that the Logic Inspector Jump buttons – used for navigating through the schedule based on logic relationships alone – could be blocked if portions of the schedule were hidden (by filters or outlining).  In the last build of version 1.4, we introduced some features for automatically breaking through such blockages.

Version 1.5 refines and provides for user-control of the behavior.  First, it is now possible to fully navigate through any project schedule using the Jump buttons alone, without selecting or activating the tasks in the corresponding task table.  This is the behavior demonstrated by the first radio button in the new form below.

Alternately, the Logic Inspector can automatically select and activate the hidden task by opening a closed Outline (i.e. summary task) where necessary and by adding the task to a temporary filter.  (Two types of filter persistence are supported.)

The new form is presented on the first attempt to Jump to a hidden task.  The options on the left side of the form tell the software how to handle the specific hidden task.  The buttons on the right side tell the software how long to remember this selection.  You can always change this decision using the “Reset Filter” button in the Settings.

Streamlined Code and Improved Housekeeping

In addition to the improvements noted above, Version 1.5 incorporates substantial changes to the underlying code base, leading to faster and more efficient analyses.

As a minor note, there is another new user control provided in the General Settings dialog: the “Clear BPC Fields” button.  This allows the permanent removal of all BPC-related custom field names and associated data.