Consider the following PLEXIL code:
NodeX:
{
Boolean res;
Command: res = myExtCmd();
}
Note that the node transitions do not depend on the completion of the command nor on the outcome nor on the return value. In such a case, in some instances the UE adds "myExtCmd" to the list of batch actions to perform by the ExternalInterface and does not wait for them to actually execute before transitioning the node from EXECUTING to ITERATION_ENDED. This effectively causes the node to deactivate itself and all its expressions, including the node's command name. Later, the command does get executed by the ExternalInterface which tries to resolve the command's name, resulting in the "UNKNOWN" string, as evident in the Expression class:
double Expression::getValue() const {
return (isActive() ? m_value : UNKNOWN());
}
Same behaviour may be expected for similar Function nodes.