I tried the followings using jbpm 3.2.8. When I end with "no", which should go back to the previous state (submitForm), but I got the following errors occasionally. Did I do something wrong, or what is the right way?
Caused by:
java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(
HashMap.java:793
) at java.util.HashMap$KeyIterator.next(
HashMap.java:828
) at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(
AbstractPersistentCollection.java:555
)
java code (I am in open approveForm state)
Collection taskList = processInstance.getTaskMgmtInstance().getTaskInstances(); Iterator<?> iter = taskList.iterator();
while (iter.hasNext()) { TaskInstance taskInstance = (TaskInstance) iter.next();
if (taskInstance.isOpen()) {
taskInstance.end(approve ?
"yes" :"no"); } } ......
process definition code
<start-state name="start">
<transition to="submitForm"></transition>
</start-state>
<task-node name="submitForm">
<task name="submitForm">
<assignment actor-id="submitter"></assignment>
</task>
<transition to="approveForm"></transition>
</task-node>
<task-node name="approveForm">
<task name="approveForm">
<assignment actor-id="approver"></assignment>
</task>
<transition to="end" name="yes"></transition>
<transition to="submitForm" name="no"></transition>
</task-node>
<end-state name="end">
</end-state>