[jboss-user] [JBoss Seam] - Re: jbpm timer transaction issues

pbrewer_uk do-not-reply at jboss.com
Tue Nov 13 11:39:46 EST 2007


Thanks for the speedy reply.

I have set that property - heres my config in full:
jbpm.cfg.xml

  | <?xml version="1.0" encoding="utf-8"?>
  | 
  | <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="tx" factory="org.jbpm.tx.TxServiceFactory" />
  |     <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" />
  | 
  | 	  <bean name="jbpm.job.executor" class="org.jbpm.job.executor.JobExecutor">
  |       <field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field>
  |       <field name="name"><string value="JbpmJobExecutor" /></field>
  |       <field name="nbrOfThreads"><int value="1" /></field>
  |       <field name="idleInterval"><int value="5000" /></field>
  |       <field name="maxIdleInterval"><int value="3600000" /></field> <!-- 1 hour -->
  |       <field name="historyMaxSize"><int value="20" /></field>
  |       <field name="maxLockTime"><int value="20000" /></field> <!-- 20 sec -->
  |       <field name="lockMonitorInterval"><int value="10000" /></field> <!-- 10 sec -->
  |       <field name="lockBufferTime"><int value="5000" /></field> <!-- 5 seconds -->
  |     </bean>
  | 
  |   </jbpm-context>
  | 
  | </jbpm-configuration>
  | 

hibernate.cfg.xml

  | <?xml version="1.0" encoding="utf-8"?>
  | 
  | <!DOCTYPE hibernate-configuration PUBLIC
  |           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  |           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  | 
  | <hibernate-configuration>
  |   <session-factory>
  | 
  |     <property name="show_sql">false</property>
  |     <property name="connection.datasource">java:/myDatasource</property>
  |     <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
  |     <property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
  |     <property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
  |     <property name="hbm2ddl.auto">validate</property>
  | 
  |     <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
  | 
  |     <!-- hql queries and type defs -->
  |     <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
  |         
  |     <!-- graph.action mapping files -->
  |     <mapping resource="org/jbpm/graph/action/MailAction.hbm.xml" />
  |             
  |     <!-- graph.def mapping files -->
  |     <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
  |     <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
  | 
  |     <!-- graph.node mapping files -->
  |     <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/node/MailNode.hbm.xml" />
  |     <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
  | 
  |     <!-- context.def mapping files -->
  |     <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
  | 
  |     <!-- taskmgmt.def mapping files -->
  |     <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
  | 
  |     <!-- module.def mapping files -->
  |     <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
  | 
  |     <!-- bytes mapping files -->
  |     <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
  | 
  |     <!-- file.def mapping files -->
  |     <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
  | 
  |     <!-- scheduler.def mapping files -->
  |     <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
  |     <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
  | 
  |     <!-- graph.exe mapping files -->
  |     <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
  | 
  |     <!-- module.exe mapping files -->
  |     <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
  |         
  |     <!-- context.exe mapping files -->
  |     <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
  | 
  |     <!-- job mapping files -->
  |     <mapping resource="org/jbpm/job/Job.hbm.xml" />
  |     <mapping resource="org/jbpm/job/Timer.hbm.xml" />
  |     <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml" />
  |     <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml" />
  |     
  |     <!-- taskmgmt.exe mapping files -->
  |     <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
  | 
  |     <!-- logging mapping files -->
  |     <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>    
  |     <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
  |     <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
  | 
  |   </session-factory>
  | </hibernate-configuration>
  | 
  | 
Then I start the job executor like so:

  | @Name("jbpmScheduler")
  | @Scope(ScopeType.APPLICATION)
  | @Startup(depends={"org.jboss.seam.bpm.jbpm"})
  | @Install(dependencies="org.jboss.seam.bpm.jbpm")
  | public class JbpmScheduler {
  |   
  |   @Logger
  |   private Log log ;
  |   
  |   @Create
  |   public void startup() {
  |     log.info("Starting the jBPM scheduler");
  |     start() ;
  |     if (isRunning()) {
  |       log.info("jBPM scheduler has started.");
  |     } else {
  |       log.error("jBPM scheduler was not started.") ;
  |     }
  |   }
  |   
  |   public JobExecutor getJobExecutor() {
  |     
  |     Jbpm jbpm = (Jbpm) Component.getInstance("org.jboss.seam.bpm.jbpm") ;
  |     if (jbpm != null) {
  |       return jbpm.getJbpmConfiguration().getJobExecutor() ;
  |     } else {
  |       return null ;
  |     }
  |   }
  |   
  |   private void start() {
  |     JobExecutor jobExecutor = getJobExecutor() ;
  |     if (jobExecutor != null) {
  |       jobExecutor.start() ;
  |     }
  |   }
  |   
  |   private void stop() {
  |     JobExecutor jobExecutor = getJobExecutor() ;
  |     if (jobExecutor != null) {
  |       try {
  |         jobExecutor.stopAndJoin() ;
  |       } catch (InterruptedException e) {
  |         log.warn( "Could not wait for job executor.", e ) ;
  |       }
  |     }
  |   }  
  |   
  |   
  |   private boolean isRunning() {
  |     return getJobExecutor() != null && getJobExecutor().isStarted() ;
  |   }
  |   
  |   @Destroy
  |   public void shutdown() {
  | 
  |     if (isRunning()) {
  |       log.info("Stopping the jBPM scheduler.");
  |       stop() ;
  |     } else {
  |       log.debug("jBPM Scheduler can't be stopped because it was not running.");
  |     }
  |   }
  |     
  | }
  | 

Any further help or comments would be greatly appreciated.

Many thanks, Pete

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4104225#4104225

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4104225



More information about the jboss-user mailing list