Hi! I see that you have declared the prefix correctly. I cannot see a problem with the process.
You are referencing the fault variable as follows: $cisLogFault.logFaultException/xsd:faultString The cisLogFault is the variable, the logFaultException is the part, and the /xsd:faultString is the xpath query expression. "xsd:" is referred to as a Namespace prefix and must be declared in the process xml as xmlns:xsd="http://cis.de.ibm.com/simpleTypes" in your case. Frequently xsd is used as a prefix for "http://www.w3.org/2001/XMLSchema" like you did in your wsdl, so personally I would not use that for the simpleTypes namespace. -Doug. -----Original Message----- From: Jens Goldhammer [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 15, 2008 12:32 PM To: [email protected] Subject: RE: Access to variable ends in selection failure Hi Doug, I don´t really understand your question. What is meant by prefix? I can show you the definition of element faultCode: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://cis.de.ibm.com/simpleTypes" targetNamespace="http://cis.de.ibm.com/simpleTypes"> <xsd:element name="faultCode" type="xsd:string"> <xsd:annotation> <xsd:documentation> faultCode consists of a five letter identifier plus a three digit id (serial number). For example, "GENEX001" is a generic error and "AUTEX001" is a authenification error </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:schema> The element is referenced by another schema: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://cis.log.interface.de.ibm.com/types" xmlns:types="http://cis.de.ibm.com/simpleTypes" targetNamespace="http://cis.log.interface.de.ibm.com/types"> <xsd:element name="LogFault"> <xsd:complexType> <xsd:sequence> <xsd:element ref="types:faultCode"></xsd:element> <xsd:element ref="types:faultString"></xsd:element> <xsd:element ref="types:faultActor"></xsd:element> <xsd:element ref="types:faultDetail"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> I have defined a wsdl message element where the elemement logFault is referenced and the operation which uses the logFaultException-message. <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://cis.log.interface.de.ibm.com/service" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:types="http://cis.log.interface.de.ibm.com/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://cis.log.interface.de.ibm.com/service"> <!--...--> <wsdl:message name="logFaultException"> <wsdl:part name="logFaultException" element="types:LogFault"></wsdl:part> </wsdl:message> <!--...--> <wsdl:operation name="logRun"> <wsdl:input message="tns:logRunRequest" /> <wsdl:output message="tns:logRunResponse" /> <wsdl:fault name="fault" message="tns:logFaultException" /> </wsdl:operation> </wsdl:definitions> The variable and faulthandler in the bpel process definition looks like: <bpws:process exitOnStandardFault="yes" name="cisFaultHandlerTest" suppressJoinFailure="yes" targetNamespace="http://com.ibm.de.cis.faulthandler" xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:ns="http://com.ibm.de.cis.faulthandlerArtifacts" xmlns:ns0="http://cis.log.interface.de.ibm.com/service" xmlns:tns="http://com.ibm.de.cis.faulthandler" xmlns:xsd="http://cis.de.ibm.com/simpleTypes"> <bpws:import importType="http://schemas.xmlsoap.org/wsdl/" location="cisLogService.wsdl" namespace="http://cis.log.interface.de.ibm.com/service"/> <bpws:variable messageType="ns0:logFaultException" name="cisLogFault"/> <bpws:invoke inputVariable="cisLogRunRequestVO" name="Invoke" operation="logRun" outputVariable="cisLogRunResponseVO" partnerLink="cisLogPT" portType="ns0:cisLogInterface"> <bpws:catch faultMessageType="ns0:logFaultException" faultName="ns0:fault" faultVariable="cisLogFault"> <bpws:sequence> <bpws:assign name="Assign1" validate="no"> <bpws:copy> <bpws:from xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"><![CDATA[$cisLogFault.logFaultException/xsd:faultString]]></bpws:from> <bpws:to xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"><![CDATA[$output.payload/tns:result]]></bpws:to> </bpws:copy> </bpws:assign> <bpws:reply name="ReplyOutput" operation="process" partnerLink="client" portType="tns:cisFaultHandlerTest" variable="output"/> <bpws:exit name="TerminateProcess"/> </bpws:sequence> </bpws:catch> </bpws:invoke> For the complete test-process (import into eclipse) look at the attachment at https://issues.apache.org/jira/browse/ODE-194. In my eyes, it looks fine. Thanks for your help. Jens Jackson, Douglas wrote: > > Hi! > Does the declaration of the prefix for xsd:faultString from the xpath > match the declaration of the prefix types: from <xsd:element > ref="types:faultString"/>? > -Doug. > > > > > -----Original Message----- > From: Jens Goldhammer [mailto:[EMAIL PROTECTED] > Sent: Tuesday, January 15, 2008 7:09 AM > To: [email protected] > Subject: Access to variable ends in selection failure > > > > Hello, > > I try to get an access to a fault which is thrown by a service and catched > by a faulthandler inside a process. > > I tried to access the variable faultString inside the faulthandler > > <bpws:copy><bpws:from > xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"><![CDATA[$cisLogFault.logFaultException/xsd:faultString]]></bpws:from> > <bpws:to > xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"><![CDATA[$output.payload/tns:result]]></bpws:to> > </bpws:copy> > > and get this error message: > > 13:52:44,529 ERROR [ASSIGN] Assignment Fault: > {http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=66,faultExplanation=No > results for expression: {OXPath10Expression /xsd:faultString} > > > cisLogFault is specified as: > > <wsdl:message name="logFaultException"> > <wsdl:part name="logFaultException" element="types:LogFault"> > </wsdl:part> > </wsdl:message> > > <xsd:element name="LogFault"> > <xsd:complexType> > <xsd:sequence> > <xsd:element ref="types:faultCode"/> > <xsd:element ref="types:faultString"/> > <xsd:element ref="types:faultActor"/> > <xsd:element ref="types:faultDetail"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > > The elements faultCode etc. are specified as built-in Strings. > > log-file with the fault response of the service and the selection failure: > > DEBUG - GeronimoLog.debug(66) | Found a header in incoming message, > checking > if there are endpoints there. > 14:05:25,123 DEBUG [SessionInHandler] Found a header in incoming message, > checking if there are endpoints there. > DEBUG - GeronimoLog.debug(66) | Got service response: <?xml version='1.0' > encoding='utf-8'?><soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:wsa="http://www.w3.org/2005/08/addressing"><soapenv:Header><wsa:Action>urn:logRunlogFaultException</wsa:Action><wsa:RelatesTo>uuid:hqejbhcnphr2wmxnnd6h1s</wsa:RelatesTo></soapenv:Header><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>LogFaultException</faultstring><detail><ns2:LogFault > xmlns:ns2="http://cis.log.interface.de.ibm.com/types"><s19:faultCode > xmlns:s19="http://cis.de.ibm.com/simpleTypes">LOGEX002</s19:faultCode><s20:faultString > xmlns:s20="http://cis.de.ibm.com/simpleTypes">Database for LogService not > available.</s20:faultString><s21:faultActor > xmlns:s21="http://cis.de.ibm.com/simpleTypes">logRun</s21:faultActor><s22:faultDetail > xmlns:s22="http://cis.de.ibm.com/simpleTypes">no > stacktrace.</s22:faultDetail></ns2:LogFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> > 14:05:25,123 DEBUG [ExternalService] Got service response: <?xml > version='1.0' encoding='utf-8'?><soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:wsa="http://www.w3.org/2005/08/addressing"><soapenv:Header><wsa:Action>urn:logRunlogFaultException</wsa:Action><wsa:RelatesTo>uuid:hqejbhcnphr2wmxnnd6h1s</wsa:RelatesTo></soapenv:Header><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>LogFaultException</faultstring><detail><ns2:LogFault > xmlns:ns2="http://cis.log.interface.de.ibm.com/types"><s19:faultCode > xmlns:s19="http://cis.de.ibm.com/simpleTypes">LOGEX002</s19:faultCode><s20:faultString > xmlns:s20="http://cis.de.ibm.com/simpleTypes">Database for LogService not > available.</s20:faultString><s21:faultActor > xmlns:s21="http://cis.de.ibm.com/simpleTypes">logRun</s21:faultActor><s22:faultDetail > xmlns:s22="http://cis.de.ibm.com/simpleTypes">no > stacktrace.</s22:faultDetail></ns2:LogFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> > DEBUG - GeronimoLog.debug(66) | Reply is a fault, found type: > {http://cis.log.interface.de.ibm.com/service}fault > 14:05:25,173 DEBUG [ExternalService] Reply is a fault, found type: > {http://cis.log.interface.de.ibm.com/service}fault > DEBUG - GeronimoLog.trace(54) | Mex[hqejbhcnphr2wmxnnd6h1r].setPortOp(...) > 14:05:25,173 DEBUG [MessageExchangeImpl] > Mex[hqejbhcnphr2wmxnnd6h1r].setPortOp(...) > DEBUG - GeronimoLog.debug(66) | Received response for MEX > {PartnerRoleMex#hqejbhcnphr2wmxnnd6h1r [PID > {http://com.ibm.de.cis.faulthandler}cisFaultHandlerTest-4] calling > null.logRun(...)} > 14:05:25,173 DEBUG [ExternalService] Received response for MEX > {PartnerRoleMex#hqejbhcnphr2wmxnnd6h1r [PID > {http://com.ibm.de.cis.faulthandler}cisFaultHandlerTest-4] calling > null.logRun(...)} > DEBUG - GeronimoLog.debug(66) | FAULT > RESPONSE({http://cis.log.interface.de.ibm.com/service}fault): <?xml > version="1.0" encoding="UTF-8"?> > <message><logFaultException><detail > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:wsa="http://www.w3.org/2005/08/addressing"><LogFault > xmlns="http://cis.log.interface.de.ibm.com/types" > xmlns:ns2="http://cis.log.interface.de.ibm.com/types"><faultCode > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s19="http://cis.de.ibm.com/simpleTypes">LOGEX002</faultCode><faultString > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s20="http://cis.de.ibm.com/simpleTypes">Database for LogService not > available.</faultString><faultActor > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s21="http://cis.de.ibm.com/simpleTypes">logRun</faultActor><faultDetail > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s22="http://cis.de.ibm.com/simpleTypes">no > stacktrace.</faultDetail></LogFault></detail></logFaultException></message> > 14:05:25,173 DEBUG [ExternalService] FAULT > RESPONSE({http://cis.log.interface.de.ibm.com/service}fault): <?xml > version="1.0" encoding="UTF-8"?> > <message><logFaultException><detail > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:wsa="http://www.w3.org/2005/08/addressing"><LogFault > xmlns="http://cis.log.interface.de.ibm.com/types" > xmlns:ns2="http://cis.log.interface.de.ibm.com/types"><faultCode > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s19="http://cis.de.ibm.com/simpleTypes">LOGEX002</faultCode><faultString > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s20="http://cis.de.ibm.com/simpleTypes">Database for LogService not > available.</faultString><faultActor > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s21="http://cis.de.ibm.com/simpleTypes">logRun</faultActor><faultDetail > xmlns="http://cis.de.ibm.com/simpleTypes" > xmlns:s22="http://cis.de.ibm.com/simpleTypes">no > stacktrace.</faultDetail></LogFault></detail></logFaultException></message> > DEBUG - GeronimoLog.debug(66) | replyWithFault mex=hqejbhcnphr2wmxnnd6h1r > 14:05:25,173 DEBUG [PartnerRoleMessageExchangeImpl] replyWithFault > mex=hqejbhcnphr2wmxnnd6h1r > DEBUG - GeronimoLog.debug(66) | create work event for > mex=hqejbhcnphr2wmxnnd6h1r > 14:05:25,183 DEBUG [PartnerRoleMessageExchangeImpl] create work event for > mex=hqejbhcnphr2wmxnnd6h1r > DEBUG - GeronimoLog.debug(66) | Thread[pool-2-thread-6,5,main]: > lock(iid=204, time=1MICROSECONDS) > 14:05:25,203 DEBUG [InstanceLockManager] Thread[pool-2-thread-6,5,main]: > lock(iid=204, time=1MICROSECONDS) > DEBUG - GeronimoLog.debug(66) | Thread[pool-2-thread-6,5,main]: > lock(iid=204, time=1MICROSECONDS)-->GRANTED > 14:05:25,203 DEBUG [InstanceLockManager] Thread[pool-2-thread-6,5,main]: > lock(iid=204, time=1MICROSECONDS)-->GRANTED > DEBUG - GeronimoLog.debug(66) | >> > handleWorkEvent(jobData={type=INVOKE_RESPONSE, > mexid=hqejbhcnphr2wmxnnd6h1r, > channel=20, iid=204}) > 14:05:25,203 DEBUG [BpelProcess] >> > handleWorkEvent(jobData={type=INVOKE_RESPONSE, > mexid=hqejbhcnphr2wmxnnd6h1r, > channel=20, iid=204}) > DEBUG - GeronimoLog.debug(66) | BpelRuntimeContextImpl created for > instance > 204. INDEXED STATE={{OScope 'Invoke' id=41}::10=[ACTIVE(...)], > OSequence#26-main::1=[ACTIVITYGUARD(...)], {OScope 'Invoke' > id=41}::10=[SCOPE(...)], OInvoke#42-Invoke::12=[INVOKE(...)], {OScope > 'Invoke' id=41}::9=[ACTIVITYGUARD(...)], > OInvoke#42-Invoke::11=[ACTIVITYGUARD(...)], {OScope > '__PROCESS_SCOPE:cisFaultHandlerTest' id=3}::0=[ACTIVE(...)], > OSequence#26-main::2=[SEQUENCE(self=(OSequence#26-main,TerminationChannel#3,ParentScopeChannel#5), > [EMAIL PROTECTED], remaining=[{OScope > 'Invoke' id=41}, {OAssign : Assign1, joinCondition=null}, > OReply#73-replyOutput])], {OScope '__PROCESS_SCOPE:cisFaultHandlerTest' > id=3}::0=[SCOPE(...)]} > 14:05:25,293 DEBUG [BpelRuntimeContextImpl] BpelRuntimeContextImpl created > for instance 204. INDEXED STATE={{OScope 'Invoke' > id=41}::10=[ACTIVE(...)], > OSequence#26-main::1=[ACTIVITYGUARD(...)], {OScope 'Invoke' > id=41}::10=[SCOPE(...)], OInvoke#42-Invoke::12=[INVOKE(...)], {OScope > 'Invoke' id=41}::9=[ACTIVITYGUARD(...)], > OInvoke#42-Invoke::11=[ACTIVITYGUARD(...)], {OScope > '__PROCESS_SCOPE:cisFaultHandlerTest' id=3}::0=[ACTIVE(...)], > OSequence#26-main::2=[SEQUENCE(self=(OSequence#26-main,TerminationChannel#3,ParentScopeChannel#5), > [EMAIL PROTECTED], remaining=[{OScope > 'Invoke' id=41}, {OAssign : Assign1, joinCondition=null}, > OReply#73-replyOutput])], {OScope '__PROCESS_SCOPE:cisFaultHandlerTest' > id=3}::0=[SCOPE(...)]} > DEBUG - GeronimoLog.debug(66) | InvokeResponse event for iid 204 > 14:05:25,293 DEBUG [BpelProcess] InvokeResponse event for iid 204 > DEBUG - GeronimoLog.debug(66) | Invoking message response for mexid > hqejbhcnphr2wmxnnd6h1r and channel 20 > 14:05:25,293 DEBUG [BpelRuntimeContextImpl] Invoking message response for > mexid hqejbhcnphr2wmxnnd6h1r and channel 20 > DEBUG - GeronimoLog.debug(66) | Triggering response > 14:05:25,293 DEBUG [BpelRuntimeContextImpl] Triggering response > DEBUG - GeronimoLog.trace(54) | >> > createScopeInstance(parentScopeId=264,scope={OCatch > faultName={http://cis.log.interface.de.ibm.com/service}fault, > faultVariable={Variable __catch#0:Invoke.cisLogFault:OMessageVarType#22}}) > 14:05:25,303 DEBUG [BpelProcess] >> > createScopeInstance(parentScopeId=264,scope={OCatch > faultName={http://cis.log.interface.de.ibm.com/service}fault, > faultVariable={Variable __catch#0:Invoke.cisLogFault:OMessageVarType#22}}) > DEBUG - GeronimoLog.trace(54) | >> > initializeEndpointReferences(parentScopeId=265,partnerLinks=[]) > 14:05:25,313 DEBUG [BpelProcess] >> > initializeEndpointReferences(parentScopeId=265,partnerLinks=[]) > ERROR - GeronimoLog.error(104) | Assignment Fault: > {http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=66,faultExplanation=Unknown > variable cisLogFault.logFaultException > 14:05:25,333 ERROR [ASSIGN] Assignment Fault: > {http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=66,faultExplanation=Unknown > variable cisLogFault.logFaultException > > What´s the problem? Has anybody an idea? > > Regards, > Jens > > -- > View this message in context: > http://www.nabble.com/Access-to-variable-ends-in-selection-failure-tp14839374p14839374.html > Sent from the Apache Ode User mailing list archive at Nabble.com. > > > -- View this message in context: http://www.nabble.com/Access-to-variable-ends-in-selection-failure-tp14839374p14844216.html Sent from the Apache Ode User mailing list archive at Nabble.com.
