Hello,

Here is a test case that fails on a SimpleMerge node.
The schema definition is the following, please note the two branch loops (i put 
actions in between to trace the execution):
--------------
<?xml version="1.0" encoding="UTF-8"?>
<workflow name="test" version="1">
  <node id="1" type="Start">
    <outNode id="3"/>
  </node>
  <node id="2" type="End"/>
  <node id="3" type="Action" serviceObjectClass="MyServiceObject">
    <arguments>
      <string>INIT</string>
    </arguments>
    <outNode id="4"/>
  </node>
  <node id="4" type="SimpleMerge">
    <outNode id="5"/>
  </node>
  <node id="5" type="Action" serviceObjectClass="MyServiceObject">
    <arguments>
      <string>ACTION 1</string>
    </arguments>
    <outNode id="6"/>
  </node>
  <node id="6" type="SimpleMerge">
    <outNode id="7"/>
  </node>
  <node id="7" type="Action" serviceObjectClass="MyServiceObject">
    <arguments>
      <string>ACTION 2</string>
    </arguments>
    <outNode id="8"/>
  </node>
  <node id="8" type="Input">
    <variable name="choice2">
      <condition type="IsBool"/>
    </variable>
    <outNode id="9"/>
  </node>
  <node id="9" type="ExclusiveChoice">
    <condition type="Variable" name="choice2">
      <condition type="IsTrue"/>
      <outNode id="10"/>
    </condition>
    <condition type="Variable" name="choice2">
      <condition type="IsFalse"/>
      <outNode id="4"/>
    </condition>
  </node>
  <node id="10" type="Action" serviceObjectClass="MyServiceObject">
    <arguments>
      <string>ACTION 3</string>
    </arguments>
    <outNode id="11"/>
  </node>
  <node id="11" type="Input">
    <variable name="choice3">
      <condition type="IsBool"/>
    </variable>
    <outNode id="12"/>
  </node>
  <node id="12" type="ExclusiveChoice">
    <condition type="Variable" name="choice3">
      <condition type="IsFalse"/>
      <outNode id="6"/>
    </condition>
    <condition type="Variable" name="choice3">
      <condition type="IsTrue"/>
      <outNode id="13"/>
    </condition>
  </node>
  <node id="13" type="Action" serviceObjectClass="MyServiceObject">
    <arguments>
      <string>END</string>
    </arguments>
    <outNode id="2"/>
  </node>
</workflow>
------------------
The MyServiceObject class only echoes the parameter String (as in the tutorial 
example).
The execution is basic as follows (db stuff omitted):

$execution = new ezcWorkflowDatabaseExecution( $db );
$execution->workflow = $workflow;
$id = $execution->start();
$execution->resume(array('choice2'=>true));
$execution->resume(array('choice3'=>true));

I am not even trying to loop here (not relevant).
The execution outputs is the following:
message: INIT

message: ACTION 1
then it throws an exception:

Dec 15 14:15:30 PHP [alert] There is no thread with id #0

You can see the graphviz output of the stuck node and the whole schema in 
attachment.

If i do just ONE loop in the schema (so i remove the 2nd merge node and 3rd 
XOR) it works fine (no error, looping ok). Whenever i add the 2nd loop it 
throws that error.

Maybe i am not using the proper nodes (simplemerge) ? I am stuck on this error.

Best regards,
Guillaume

Attachment: failmerge.dot
Description: failmerge.dot

-- 
Components mailing list
Components@lists.ez.no
http://lists.ez.no/mailman/listinfo/components

Reply via email to