Scheduler problems jbpm.war(3.1.3) to jboss as 4.0.5GA
jesperb Jan 5, 2007 7:27 AMI have spent the last couple of days trying to get the scheduler to work on JBoss 4.0.5 GA but when a task with a timer is executed the 'scheduler' is not found.
I have downloaded the 3.1.3 jbpm starter kit and modded it to work (as in previous posts).
I have copied the jbpm.sar and the jbpm.war to the dir. I removed dom4j and jaxen jars from the war (hence it is already included in the jboss dist) and added the following in the web.xml to load the scheduler thread.
<!-- jBPM SchedulerServlet --> <servlet> <servlet-name>SchedulerServlet</servlet-name> <servlet-class>org.jbpm.scheduler.impl.SchedulerServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SchedulerServlet</servlet-name> <url-pattern>/scheduler</url-pattern> </servlet-mapping>
I have verified that the scheduler is running:
... DEBUG [Scheduler] starting the scheduler ... DEBUG [CommandExecutorThread] waiting for more messages DEBUG [JbpmContextInfo] creating jbpm context with service factories '[message, scheduler, authentication, persistence, logging]' DEBUG [JbpmContext] creating JbpmContext DEBUG [DbPersistenceServiceFactory] creating persistence service DEBUG [DbPersistenceService] creating hibernate session DEBUG [DbPersistenceService] beginning hibernate transaction DEBUG [SchedulerThread] checking for timers DEBUG [JbpmContext] closing JbpmContext DEBUG [Services] closing service 'persistence': org.jbpm.persistence.db.DbPersistenceService@1d427b1 DEBUG [DbPersistenceService] committing hibernate transaction DEBUG [DbPersistenceService] closing hibernate session
This is the code that creates and executes the process:
ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( "<process-definition>" + " <start-state>" + " <transition to='executeAction' />" + " </start-state>" + " <node name='executeAction'>" + " <transition to='timedAction' />" + " <action class='se.pertexo.test.workflow.TestAction' />" + " </node>" + " <node name='timedAction'>" + " <timer name='timer1' duedate='15 seconds'/>" + " <transition to='end' />" + " <action class='se.pertexo.test.workflow.TestAction' />" + " </node>" + " <end-state name='end' />" + "</process-definition>" ); ProcessInstance processInstance = new ProcessInstance( processDefinition ); Token token = processInstance.getRootToken(); logger.info( " Starting workflow" ); token.signal();
The TestAction code:
public class TestAction implements ActionHandler { private static Logger logger = Logger.getLogger( TestAction.class ); public void execute(ExecutionContext executionContext) throws Exception { logger.info( "Test action: execute"); executionContext.getToken().signal(); } }
The first nodes action is executed and signals the transition to the timer task, this is the log and exception I get:
11:35:33,058 INFO [TestBean] -----> Testing jBPM <----- 11:35:33,151 INFO [TestBean] Starting workflow 11:35:33,167 INFO [TestAction] Test action: execute 11:35:33,167 ERROR [GraphElement] action threw exception: service 'scheduler' unavailable org.jbpm.svc.JbpmServiceException: service 'scheduler' unavailable at org.jbpm.svc.Services.getCurrentService(Services.java:86) at org.jbpm.svc.Services.getCurrentService(Services.java:76) at org.jbpm.scheduler.def.CreateTimerAction.execute(CreateTimerAction.java:66) at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235) at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212) at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182) at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166) at org.jbpm.graph.def.Node.enter(Node.java:301) at org.jbpm.graph.def.Transition.take(Transition.java:119) at org.jbpm.graph.def.Node.leave(Node.java:383) at org.jbpm.graph.exe.Token.signal(Token.java:178) at org.jbpm.graph.exe.Token.signal(Token.java:123) at se.sqs.production.workflow.TestAction.execute(TestAction.java:22)
My question is:
Where does the scheduler get registered with the JbpmContext?
Is there anything else that I have missed?
Regards
Jesper