Hello,
i’m using the latest version 5.1.1 of drools-flow for a POC project.
I have a process definition where I have an intermediate event node within a foreach CompositeNode.
When I trigger the event using processInstance.signalEvent() I get a ClassCastException:
java.lang.ClassCastException: org.drools.workflow.core.node.CompositeContextNode cannot be cast to org.drools.workflow.core.node.EventNode
at org.drools.workflow.instance.node.EventNodeInstance.getEventNode(EventNodeInstance.java:62)
at org.drools.workflow.instance.node.EventNodeInstance.signalEvent(EventNodeInstance.java:36)
at org.drools.workflow.instance.node.CompositeNodeInstance.signalEvent(CompositeNodeInstance.java:231)
at org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:357)
at de.bdr.prototype.ProcessTest.main(ProcessTest.java:36)
Many thanks for any help!
-Jan
Below my process definition:
<?xml version="1.0" encoding="UTF-8"?>
<process xmlns="http://drools.org/drools-5.0/process"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://drools.org/drools-5.0/process drools-processes-5.0.xsd"
type="RuleFlow" name="flow" id="processOrders" package-name="order.flow" >
<header>
<variables>
<variable name="orderPreparationResult" >
<type name="org.drools.process.core.datatype.impl.type.UndefinedDataType" />
</variable>
<variable name="orders" >
<type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.util.List" />
</variable>
</variables>
</header>
<nodes>
<start id="1" name="Start" x="227" y="16" width="228" height="40" />
<forEach id="2" name="ForEach" x="16" y="88" width="650" height="196" variableName="order" collectionExpression="orders" >
<nodes>
<eventNode id="2" name="OrderPreparation Response" x="146" y="133" width="166" height="40">
<eventFilters>
<eventFilter type="eventType" eventType="OrderPreparationEvent" />
</eventFilters>
</eventNode>
<actionNode id="3" name="ORDER_PREP" x="9" y="53" width="151" height="50" >
<action type="expression" dialect="java" >System.out.println("Call Order prep");</action>
</actionNode>
<join id="4" name="Join" x="191" y="59" width="80" height="40" type="1" />
<actionNode id="5" name="ORDER_VALIDATION" x="300" y="56" width="141" height="40" >
<action type="expression" dialect="java" >System.out.println("Order validation");</action>
</actionNode>
<actionNode id="6" name="POPULATE_DB" x="470" y="55" width="152" height="40" >
<action type="expression" dialect="java" >System.out.println("Save to db");</action>
</actionNode>
</nodes>
<connections>
<connection from="3" to="4" />
<connection from="2" to="4" />
<connection from="4" to="5" />
<connection from="5" to="6" />
</connections>
<in-ports>
<in-port type="DROOLS_DEFAULT" nodeId="3" nodeInType="DROOLS_DEFAULT" />
</in-ports>
<out-ports>
<out-port type="DROOLS_DEFAULT" nodeId="6" nodeOutType="DROOLS_DEFAULT" />
</out-ports>
</forEach>
<end id="4" name="End" x="227" y="388" width="228" height="40" />
<actionNode id="5" name="NOTIFY " x="288" y="316" width="106" height="40" >
<action type="expression" dialect="java" >System.out.println("Notify");</action>
</actionNode>
</nodes>
<connections>
<connection from="1" to="2" />
<connection from="5" to="4" />
<connection from="2" to="5" />
</connections>
</process>