NL-OF-PLUGIN-ENGINE-03 - Error with Virtual User stopped on 2nd iteration of the Loop
Problem

I have recorded a simple Oracle Forms scenario and created a Virtual User that loops a number of Oracle Forms requests over n iterations. The Virtual User fails to execute and returns an NL-OF-PLUGIN-ENGINE-03 error. I noticed that the Virtual User stopped on this error during the 2nd iteration of the loop. The option to delete invalid components automatically, described in Oracle Forms, during the recording is disabled.

Solution

The problem is in the Virtual User design. This indicates that the Virtual User was not in the same graphical state in the Oracle Forms applet in the 2nd iteration as it was in the 1st. At the start of each iteration of the loop, the Virtual User must be in the same graphical state, to the nearest click.

The graphical state of an Oracle Forms applet is defined as a set of graphical components existing at any one time. This example shows a component created in a server response:

<DataMessage> 
  <actionCode>CREATE</actionCode> 
  <handlerId>8</handlerId> 
  <handlerClassId>259</handlerClassId> 
  <properties> 
    <Property> 
      <id>DRAWN_CANVASUSAGE</id> 
      <type>BYTE</type> 
      <value objectClass="byte">3</value> 
    </Property> 
  </properties> 
</DataMessage>

This creates a component with the handlerId 8. The handlerId 8 can now be used in DataMessage in all subsequent requests. When the following message is encountered in a server response

<DataMessage> 
  <actionCode>DESTROY</actionCode> 
  <handlerId>8</handlerId> 
  <properties/> 
</DataMessage>

The component with the handlerId 8 is destroyed. Requests sent after this response can no longer contain DataMessages that reference the component with the handlerId 8.