Failed workflow operations are have the timeinqueue left set to NULL, this should be set to a valid value.
Job.getQueueTime() returns NULL if job hasn't started, it appears that the majority of calls to this function fail to check for NULL.
The InspectionWFOp does check
long timeInQueue = inspectJob.getQueueTime() == null ? 0 : inspectJob.getQueueTime();
The above is probably unnecessary and it is a matter of updating the operation's time in queue specifically when the operation fails.