2008-11-25 21:08:17 UTC
According to the manual, and to the behavior I've been able to map, the <if> job returns the "worst case of that of the child and the condition executed."
I believe this is inappropriate, since in my environment setting up an if/then/else does not prevent the system from stopping the job when the <if> guard returns false.
I believe that in the <if> case, the result should simply be the termination state of the condition executed. The <if> block supports catching exceptions, but in the interest of safety the default exception case should maybe be <throw>, so that an uncaught exception would stop the task.
The point, though, is that <if> is a condition, and so it should not stop the flow when a non-true case occurs.