[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