Well thanks. I followed the example of code in CreateTimerAction and CancelTimerAction (and switched from jbpm 3.0.2 to 3.1.2) and now I can see my timers in the DB. But when I try to set an Action to be called when the timer fires, I got an error.
Here is my related code: anonymous wrote : Action timerAction = new Action(); | Delegation delegation = new Delegation(); | delegation.setClassName("logique.alerte.TimerHandler"); | timerAction.setActionDelegation(delegation); | String sDueDate = "5 minutes"; | String sTimerName = "bob"; | Date dDueDate = businessCalendar.add( new Date(), duration ); | | Timer timer = new Timer(executionContext.getToken()); | timer.setName(sTimerName); | timer.setDueDate(dDueDate); | timer.setAction(timerAction); | timer.setGraphElement(executionContext.getEventSource()); | | SchedulerService schedulerService = (SchedulerService) Services.getCurrentService(Services.SERVICENAME_SCHEDULER); | schedulerService.createTimer(timer); And here is the error: anonymous wrote : org.jbpm.persistence.JbpmPersistenceException: couldn't commit hibernate session | at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:172) | at org.jbpm.svc.Services.close(Services.java:211) | at org.jbpm.JbpmContext.close(JbpmContext.java:139) | at logique.JbpmManager.closeSession(JbpmManager.java:36) | at servlet.NouveauDossier.postRequest(NouveauDossier.java:94) | at logique.servlet.ServletContenu.traiterRequete(ServletContenu.java:132) | at logique.servlet.ServletContenu.doPost(ServletContenu.java:163) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at logique.ihm.XsltFilter.doFilter(XsltFilter.java:81) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) | at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825) | at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738) | at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526) | at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) | at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) | at java.lang.Thread.run(Thread.java:595) | Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.graph.def.Action | at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216) | at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108) | at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:221) | at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476) | at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2785) | at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:457) | at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:180) | at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:104) | at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195) | at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) | at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) | at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:877) | at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:344) | at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) | at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:162) | ... 28 more So how can I save the Action before closing the session ? View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3962234#3962234 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3962234 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user