Hi, I'm using jbpm in a process where I have many tokens running and two main difference kinds of node: - "internal activities node": implemented as general purpose node (no Task) that represent some activities (routine, maybe task, etc...) - "receiver node" that wait for external input; when one of this node has to be activated (the external input go in) I load (jbpmContext.load) my token and signaling it.
It happen that sometimes when I receive an input addressed to a receiver node my process execution is active through a different token. My input are input from the Web ... so to each input I have a new java Thread I found a solution to synchronize the control flow of process (implementing a custom sort of join), but I have problem with the persistence... I mean ... When I receive an input to a receiver node I do the following: (1) open a JbpmContext | (2) load the process | (3) signal | (4) save the processInstance (I didn't found a method to really save just a token) | (5) close the jbpmContext | | | It sometime happens that I receive two input for two different receivers nodes in a short time gap ... and for instance when I've done (1)-(2)-(3)- (4) for input A, before doing (5) , I do (1) and (2)-(3)-(4) for input B (my VM decide for me :) ). When my B thread then arrive to (5) [close the jbpmcontext] I have the following error: | | [#|2006-05-09T10:03:18.880+0200|SEVERE|sun-appserver-pe8.2|org.hibernate.event.def.AbstractFlushingEventListener|_ThreadID=19;|Could not synchronize database state with session | org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.graph.exe.Token#130842624] | at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1635) | at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2208) | at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2118) | at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2374) | at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:84) | | ......... | | | I have two java thread of execution and I think that happens something like the following: | | | >>Thread A | >>>> Thread B | ------------------------------------------------ | I) openJbpmContex | II) load | III) signal | IV) save | V) --------------------- openJbpmContex | VI)--------------------- load | VII) ------------------- signal | VIII) ------------------ save | IX)-------------------- close >> ERROR | | | | | I'm using Jbpm inside a J2EE netBeans project under Sun Application Server, but I think that's not due to the environment ... | Maybe I'm not using in the right wait the persistence tool ... I ask you sorry if this is the case ... | Do you have any suggestion to manage and solve this problem??? | I'm doing something wrong?? | | Thanks in advance. | | Roby. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3942145#3942145 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3942145 ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user