Ok, here's the situation.
I have a process that relies heavily on timers. In fact, the business process
looks something like: do something, do something else after 10 days, do
something else after 10 more days, etc. Some of the somethings are automated
(node), and some are not (tasknode).
My specific problem is that I have a node that 1) is entered by a timer, 2)
leaves on its own, and 3) enters a node with a timer.
Process snippet describing 1 and 3:
| <state name="wait1">
| <timer duedate="10 seconds" transition="continue" />
| <transition name="continue" to="mynode" />
| </state>
| <node name="mynode">
| <action class="foo.MyActionHandler" />
| <transition to="wait2" />
| </node>
| <state name="wait2">
| <timer duedate="20 seconds" transition="continue" />
| <transition name="continue" to="anotherstate" />
| </state>
|
Part 2:
| public void execute(ExecutionContext ctx) throws Exception {
| log.debug("Executing mynode");
| ctx.leaveNode();
| }
|
Executing it as such creates wait2's timer, but does not save it (as referenced
in other threads
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=69040). If I take the
advice given in that thread and save it explicitly with anything that comes
from JbpmSession.getCurrentJbpmSession() then I get a StaleStateException from
wait1's timer.
For instance, if I do:
| public void execute(ExecutionContext ctx) throws Exception {
| log.debug("Executing mynode");
| ctx.leaveNode();
|
JbpmUtil.saveProcessInstanceFamily(JbpmSession.getCurrentJbpmSession().getGraphSession(),ctx.getProcessInstance());
| }
|
with JbpmUtil.saveProcessInstanceFamily():
| public static void saveProcessInstanceFamily(GraphSession graphSession,
ProcessInstance processInstance) {
| // save family:
| Token token = processInstance.getRootToken();
| log.debug("saving process instance #" +
processInstance.getId());
| graphSession.saveProcessInstance(processInstance);
| if (token.hasParent()) {
| ProcessInstance pi = token.getParent().getProcessInstance();
| log.debug("saving process instance #" + pi.getId());
| graphSession.saveProcessInstance(pi);
| }
| ProcessInstance sub = token.getSubProcessInstance();
| if (sub != null) {
| log.debug("saving process instance #" + sub.getId());
| graphSession.saveProcessInstance(sub);
| }
| }
|
then I get:
| 2006-02-10 14:48:34,253 DEBUG [foo.MyActionHandler] Executing mynode
| 2006-02-10 14:48:34,269 DEBUG [org.jbpm.graph.def.GraphElement] event
'node-leave' on 'Node(mynode)' for 'Token(/)'
| 2006-02-10 14:48:34,269 DEBUG [org.jbpm.graph.def.GraphElement] event
'transition' on 'Transition(1c71a93)' for 'Token(/)'
| 2006-02-10 14:48:34,269 DEBUG [org.jbpm.graph.def.GraphElement] event
'node-enter' on 'State(wait2)' for 'Token(/)'
| 2006-02-10 14:48:34,284 DEBUG [org.jbpm.graph.def.GraphElement] executing
action 'CreateTimerAction(12d12e0)'
| 2006-02-10 14:48:34,331 DEBUG [org.jbpm.db.SchedulerSession] saving timer
timer(wait2,14:48:54,284)
| 2006-02-10 14:48:34,363 DEBUG [org.jbpm.graph.def.GraphElement] event
'after-signal' on 'State(wait1)' for 'Token(/)'
| 2006-02-10 14:48:34,363 DEBUG
[com.gallium.jas.services.workflow.impl.SchedulerBean] deleting timer
'timer(wait1,14:48:34,000)'
| 2006-02-10 14:48:34,394 ERROR [org.hibernate.jdbc.AbstractBatcher]
Exception executing batch:
| org.hibernate.StaleStateException: Batch update returned unexpected row
count from update: 0 actual row count: 0 expected: 1
|
Can anyone offer any advice?
Ian
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3922999#3922999
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3922999
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user