Error Causes
The following combinations of tools and connections must be avoided as the resulting tool flows are not executable.
Not Executable Tool
Not executable tools can occur in connection with the tool Branch on Condition.
In the example below, the tool Branch on Condition triggers either tool T1 or tool T2, depending on the result of the condition. In consequence only one of the tools is executed and sends data to the subsequent tool T3. However, since tool T3 waits for the data from tool T1 and tool T2, it will never be executed.
There is no clean solution for this problem, but the following examples show possible alternatives.
Depending on the condition, either tool T1 or tool T2 is executed. Therefore, tool T3 will be executed either with the result values from tool T1 or tool T2.
Tool T2 is executed in parallel to tool T1 and independently of the condition. Tool T3 is executed if the condition is fulfilled because it receives the required input data from tool T1.
Race Condition
A race condition occurs if the state of a tool is not defined logically because a parameter or trigger of the tool has more than one incoming connection from previous tools.
In the following example, the results of tool T1 and tool T2 are connected to the same parameter of tool T3. Thus, tool T3 is executed with data from tool T1 or tool T2, depending on which tool sends its results earlier to tool T3. The execution with such a tool connection is prevented by MERLIC.
The following examples show how a race condition could be resolved.
As a result, tool T3 is executed twice, once with data from tool T1 and once with data from tool T2.
The state of tool T3 is defined depending on the branching condition. The tool will either be executed with result values from tool T1 or tool T2.