[jBPM Users] - Re: Process Step Exception
by guancio
I got the same exception using jbpm 3.2 on JBoss 5. After 4 hours of investigation I've found that my development approach was not correct.
The main cause of the problem was that I was trying to use the JBPM enterprise installation from a Web Application deployed on the same JBoss container. My first attempt was to add the jbpm-identity and jbpm-jpdl jars as J2EE module dependencies and deploy them inside WEB-INF/lib of my War.
Initially, this step was required to avoid class not found exception while accessing to the jbpm structures.
I think that the java.lang.ClassCastException occurred because the interface of org.jbpm.msg.jms.JmsMessageServiceFactory is not present inside jbpm-identity and jbpm-jpdl jars. Instead the interface is located inside the jbpm-enterprise.jar directory.
Namely, I think that Java run-time raises the exception because jbpm-enterprise.jar is loaded by a different Java class loader.
I solved my problem as follows:
| I removed jbpm-* jars from my WEB-INF/lib deployment
| I deployed the war of my application inside deploy/jbpm directory of JBoss, instead of deploy. This avoid the class not found exceptions
| I added the web.xml and jboss-web.xml deployment descriptors inside my WEB-INF directory, using the contents described in http://docs.jboss.com/jbpm/v3.2/userguide/html_single/#clientcomponents. This avoid jms name not bound exceptions.
|
|
| I think that JBoss documentation on how to use jbpm from Web and enterprise applications really lacks details and a good tutorial.
|
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4270272#4270272
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4270272
16 years, 4 months
[jBPM Users] - Re: task & timers
by MohReece
Unfortunately your stack trace doesn't show the real (original) exception, maybe there is a 'caused by' trace underneath it? But from this one, more particular the line
at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:276)
we are able to see that the exception originates in the executeAction(...) method, indicating there's either an exception is thrown in the execution of the Action (and thus most likely in the ActionHandler), or something went wrong in the locking of the Token (and that would be my first guess here).
When you signal a Token from within an ActionHandler, chances are that the call executing the ActionHandler already locked the Token (for the duration of the Action's execution, see GraphElement.java lines 241-264). The signal call causes the node-leave event, which in turn causes your DefaultEnd handler to be called... but before it gets there it tries to lock the Token - again.
A signal should be used 'from the outside' to trigger a process instance to move on, from the inside it's possibly safe (depends on the node type really) to directly use the leave(...) method. You can try replacing the line
token.signal(isOK ? "OK" : "KO");
with
executionContext.getNode().leave(executionContext, isOK ? "OK" : "KO");
to see whether this works for you.
Hope this helps a bit more!
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4270261#4270261
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4270261
16 years, 4 months