The TaskJuggler User Manual

Project Management beyond Gantt Chart Drawing


<< loadunit << Table Of Contents >> logicalflagexpression >>


Keyword logicalexpression

Purpose

A logical expression is a combination of operands and mathematical operations. The final result of a logical expression is always true or false. Logical expressions are used the reduce the properties in a report to a certain subset or to select alternatives for the cell content of a table. When the logical expression is used with attributes like hidetask or hideresource and evaluates to true for a certain property, this property is hidden or rolled-up in the report.

Operands can be previously declared flags, built-in functions, property attributes (specified as scenario.attribute) or another logical expression. When you combine logical operations to a more complex expression, the operators are evaluated from left to right. a | b & c is identical to (a | b) & c. It's highly recommended that you always use brackets to control the evaluation sequence. Currently, TaskJuggler does not support the concept of operator precedence or right-left associativity. This may change in the future.

An operand can also be just a number. 0 evaluates to false, all other numbers to true. The logical expression can also be the special constants @all or @none. The first always evaluates to true, the latter to false.

Date attributes needs special attention. Attributes like maxend can be undefined. To use such an attribute in a comparison, you need to test for the validity first. E. g. to compare the end date of the plan scenario with the maxend value use isvalid(plan.maxend) & (plan.end > plan.maxend). The & and | operators are lazy. If the result is already known after evaluation of the first operand, the second operand will not be evaluated any more.

Syntax @ (all | none)
Arguments none
Context Global scope
See also functions

taskreport "LeaveTasks" {
  hidetask isleaf()
  sorttasks id.up # not 'tree' to really hide parent tasks
}

taskreport "Overruns" {
  hidetask isvalid(plan.maxend) & (plan.end > plan.maxend)
}


<< loadunit << Table Of Contents >> logicalflagexpression >>


Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger <cs@taskjuggler.org>.TaskJuggler is a trademark of Chris Schlaeger.