Dear community,

I want to use jBPM inside of a servlet and i must serialize some variables to 
process instances. Currently i am using MySQL/Hinernate, JBoss-4.0.2 and JVM 
1.5 and jbpm-3.0.2.

Well, as you know the web archive has an web/classes directory structure that 
must be used. My actions class do not have a classes.package name and that is 
confusing jbpm. ProcessClassLoader cannot find the actions classes inside the 
classes dir, but they are there. (???)

A work arround (still some problems...) is to deploy another jar file with the 
action classes. That way, jbpm can find the classes and it works fine if i dont 
use the serialization.


When i introduce some serializable variable to a process instance the process 
works fine until a new deployment. If a new redeploy is made i get a 
ClassCastException, complaining about the action classes. JBoss needs to 
shutdown fot the things to work again. This is a UnClassLoading issue i guess.


STATUS OK [When not using serialization]
The servlet retrieves the processdefinition from DB [OK]
I can signal the instance and i can see the process go through
nodes [OK]

When i serialize a simple object (3 String fields class) to a process instance 
it only works until a new redeploy and then i get a ClassCastException. If i 
start jboss again it gets OK again, until a new redeploy.

FILES:
file.war (containing the servlet)
file.jar (containing the actions classes (nodes))


Processdefinitoin.xml

  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <process-definition xmlns="http://jbpm.org/3/jpdl";
  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  |     xsi:schemaLocation="http://jbpm.org/3/jpdl 
http://jbpm.org/xsd/jpdl-3.0.xsd";
  |     name="ChangeNumber">
  | 
  |     <start-state name="start">
  |             <transition to="INIT" />
  |     </start-state>
  | 
  |     <node name="INIT">
  |             <action
  |                     
class='pt.ptinovacao.ngin.scp.smpsat.jbpm.classes.CN_Init_State' />
  |             <transition to="SLRI" />
  |     </node>
  | 
  |     <node name="SLRI">
  |             <action
  |                     
class='pt.ptinovacao.ngin.scp.smpsat.jbpm.classes.CN_SLRi' />
  |             <transition to="SLRE" />
  |     </node>
  | 
  |     <node name="SLRE">
  |             <action
  |                     
class='pt.ptinovacao.ngin.scp.smpsat.jbpm.classes.CN_SLRe' />
  |             <transition to="SDPI" />
  | 
  | 
  |     </node>
  | 
  |     <node name="SDPI">
  |             <action
  |                     
class='pt.ptinovacao.ngin.scp.smpsat.jbpm.classes.CN_SDPi' />
  |             <transition to="SDPE" />
  | 
  |     </node>
  | 
  |     <node name="SDPE">
  |             <action
  |                     
class='pt.ptinovacao.ngin.scp.smpsat.jbpm.classes.CN_SDPe' />
  |             <transition to="end1" />
  | 
  |     </node>
  | 
  |     <end-state name="end1"></end-state>
  | 
  | 
  | 
  | </process-definition>
  | 
  | 


Serialization code

  | JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
  |             // ... and begin a transaction on the persistence session
  |             jbpmSession.beginTransaction();
  | 
  |             // Now we can query the database for the process definition 
that we 
  |             // deployed above. 
  |             ProcessDefinition processDefinition = 
jbpmSession.getGraphSession().findLatestProcessDefinition("ChangeNumber");
  | 
  |             ProcessInstance pi = new ProcessInstance(processDefinition);
  | 
  |             System.out.println("[States]: " + 
pi.getProcessDefinition().getNodes());
  | 
  |             ProcessWrapper pw = new ProcessWrapper();
  |             pw.setOne("Smint1");
  |             pw.setTwo("Smint2");
  |             pw.setThree("Smint3");
  | 
  |             pi.getContextInstance().setVariable("pw", pw);
  | 
  |             pi.signal();
  |             System.out.println("[Process]: " + 
pi.getRootToken().getNode().getName());
  | 
  | 

Exception

  | 02:09:49,939 ERROR [[SAPAdaptor]] Servlet.service() for servlet SAPAdaptor 
threw exception
  | org.jbpm.graph.def.DelegationException
  |         at 
org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:299)
  |         at 
org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:293)
  |         at org.jbpm.graph.def.Node.execute(Node.java:299)
  |         at org.jbpm.graph.def.Node.enter(Node.java:284)
  |         at org.jbpm.graph.def.Transition.take(Transition.java:92)
  |         at org.jbpm.graph.def.Node.leave(Node.java:349)
  |         at org.jbpm.graph.node.StartState.leave(StartState.java:73)
  |         at org.jbpm.graph.exe.Token.signal(Token.java:127)
  |         at org.jbpm.graph.exe.Token.signal(Token.java:92)
  |         at 
org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:201)
  |         at 
pt.ptinovacao.ftp.sapa.adaptor.SAPAServlet.doPost(SAPAServlet.java:145)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
  |         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:213)
  |         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |         at 
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
  |         at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
  |         at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
  |         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:856)
  |         at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
  |         at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at 
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:595)
  | Caused by: java.lang.ClassCastException: 
pt.ptinovacao.ngin.scp.smpsat.jbpm.classes.ProcessWrapper
  |         at 
pt.ptinovacao.ngin.scp.smpsat.jbpm.classes.CN_Init_State.execute(CN_Init_State.java:37)
  |         at org.jbpm.graph.def.Action.execute(Action.java:79)
  |         at org.jbpm.graph.def.Node.execute(Node.java:295)
  | 
  | 


Thanks Joshua


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

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


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to