Why do I get stacktraces when using "Fail if true"?
The
Fail_if_true and
Fail_if_false local workers, available under
Local services ->
Local Java widgets ->
conditional, have the
functionality that they fail if the input is "true" or "false". This can
be combined with a "Coordinate from" on another processor that would
then only run if the
Fail* processor succeeds, ie. doesn't fail.
(effectively branching the workflow).
In addition, a nested workflow can use the
Fail* processors set as
Critical and thereby conditionally fail the whole nested workflow.
This combined with a retry policy for the nested workflow in the
wrapping workflow can be used for typical 'Wait until service says X'
loops, such as job submission systems.
The way these processors are implemented is simply to fail on purpose if
the input condition matches. However, this means that a stack trace will
be printed from the enactment engine every time a processor like this
fails. Note that this doesn't neccessarily mean the workflow failed, in
fact that part of the workflow is probably designed to fail.
We have still marked this as a bug,
TAV-479, since we
shouldn't be outputting stack traces unless there's an actual error.
With Taverna 2 this kind of control logic can probably be implemented by
the workflow designer without resorting to failing processors.