[jboss-user] [JBoss jBPM] - Scheduler problems jbpm.war(3.1.3) to jboss as 4.0.5GA

JesperB do-not-reply at jboss.com
Fri Jan 5 07:27:48 EST 2007


I 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 at 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

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

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



More information about the jboss-user mailing list