[jboss-user] [JBoss jBPM] - Re: How to use faultVariable in fault handler?
jiehuan_li
do-not-reply at jboss.com
Mon Jul 17 10:15:56 EDT 2006
Alex,
Thanks for the reply. I tried defining the variable in the enclosing scope and then referencing it in the faultHandler by faultVariable, but I ran into a dilemma. If I try to deploy the definition with the faultVariable specified in the faultHandler, I am getting the following exception:
| 10:05:41,967 ERROR [[DeployServlet]] Servlet.service() for servlet DeployServlet threw exception
| org.jbpm.jpdl.JpdlException: [[ERROR] jbpmbpel.bpel catch must specify either a faultMessageType or a faultElement [/process/faultHandlers/catch]]
| at org.jbpm.jpdl.par.ProcessArchive.parseProcessDefinition(ProcessArchive.java:84)
| at org.jbpm.bpel.web.deploy.DeployServlet.doGet(DeployServlet.java:49)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
| 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:96)
| 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.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
| 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:869)
| at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
| 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)
|
Then I added 'faultElement' in the 'catch', I am getting the following exception:
| 09:28:51,999 ERROR [[DeployServlet]] Servlet.service() for servlet DeployServlet threw exception
| org.jbpm.jpdl.JpdlException: [[ERROR] jbpmbpel.bpel(36) cvc-complex-type.3.2.2: Attribute 'faultElement' is not allowed to appear in element 'catch'.]
| at org.jbpm.jpdl.par.ProcessArchive.parseProcessDefinition(ProcessArchive.java:84)
| at org.jbpm.bpel.web.deploy.DeployServlet.doGet(DeployServlet.java:49)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
| 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:96)
| 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.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
| 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:869)
| at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
| 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)
|
Below is my code:
| <?xml version="1.0" encoding="UTF-8"?>
| <process name="jbpmbpelFrontEnd" targetNamespace="com:vizuri:bpel:jbpmbpel"
| xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
| xmlns:tns="com:vizuri:bpel:jbpmbpel" xmlns:jbpmbpel="com:vizuri:bpel:jbpmbpel" xmlns:typ="com:vizuri:bpel:types"
| xmlns:svc="http://webservice.vizuri.com/jaws" xmlns:svc2="http://webservice.vizuri.com/jaws"
| xmlns:bpel="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
| xmlns:xsd="http://www.w3.org/2001/XMLSchema"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xsi:schemaLocation="http://schemas.xmlsoap.org/ws/2003/03/business-process/
| http://schemas.xmlsoap.org/ws/2003/03/business-process/">
|
| <variables>
| <variable name="operationFlt" messageType="jbpmbpel:operationFault" />
| <variable name="svcFlt" element="svc:JSR181WebServiceException" />
| </variables>
| <faultHandlers>
| <catch faultName="svc:JSR181WebServiceException" faultVariable="svcFlt">
| <sequence>
| <assign name="copyStep2Fault">
| <copy>
| <from variable="svcFlt" query="/JSR181WebServiceException/svc:code"/>
| <to variable="operationFlt" part="detail"/>
| </copy>
| </assign>
| <reply operation="connect2" partnerLink="jbpmbpelRelation" portType="jbpmbpel:jbpmbpelFrontEnd"
| variable="operationFlt" faultName="jbpmbpel:step2Fault" />
| </sequence>
| </catch>
| </faultHandlers>
| </process>
|
I understand that adding 'faultElement' in catch causes problem because bpel 1.1 schema doesn't allow it, but why do I get the first exception when I don't have faultElement or faultMessageType in catch?
Jiehuan
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3958474#3958474
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3958474
More information about the jboss-user
mailing list