Hi,
We have a JBPM process with multiple subprocesses, out of the subprocesses one process
can run for number of days. Requirement is that we should persist the process state before
leaving each and every node so that if JBoss server goes down in between the process can
be re-triggered from the last executed state on server startup.
I have read that JBPM persist the process state on wait nodes and when jbpmContext.close()
is called.
Now the problem is we have processes where there is no wait state and the requirement is
state should get persisted even before jbpmContext.close(), so as to address recovery from
fail-over on server shutdown.
I have tried with following configuration file and managing transactions manually -
<jbpm-configuration>
| <jbpm-context>
| <service name="persistence">
| <factory>
| <bean
class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
| <field
name="isTransactionEnabled"><false/></field>
| </bean>
| </factory>
| </service>
| <service name="message"
factory="org.jbpm.msg.db.DbMessageServiceFactory" />
| <service name="scheduler"
factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
| <service name="logging"
factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
| <service name="authentication"
factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"
/>
| <service name="tx" factory="org.jbpm.tx.TxServiceFactory"
/>
| </jbpm-context>
| </jbpm-configuration>
|
Code for managing transaction is written in each ActionHandler as -
public class MyActionHandler implements ActionHandler{
|
| public void execute(ExecutionContext context) {
| Transaction tx = null;
| try {
| tx = context.getJbpmContext().getSession().beginTransaction();
| //business logic in the action
| if(tx!=null)
| tx.commit();
| context.leaveNode();
| }
| catch(Exception e) {
| logger.error("Error: ",e);
| }
| }
I can see an entry in jbpm_processInstance table after tx.commit() but when process fails
in next node and I try to re-trigger the workflow from this last executed state - it says
-
| org.jbpm.JbpmException: this token is locked by token[1063]
| at org.jbpm.graph.exe.Token.signal(Token.java:185)
| at org.jbpm.graph.exe.Token.signal(Token.java:140)
Can anyone please help me in this?
-Archana
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4150584#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...