ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jackson, Douglas" <djack...@ugs.com>
Subject RE: Access to variable ends in selection failure
Date Tue, 15 Jan 2008 23:19:51 GMT
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:Goldhammer.Jens@gmx.net] 
Sent: Tuesday, January 15, 2008 12:32 PM
To: user@ode.apache.org
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:Goldhammer.Jens@gmx.net] 
> Sent: Tuesday, January 15, 2008 7:09 AM
> To: user@ode.apache.org
> 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),
> linkframe=org.apache.ode.bpel.runtime.LinkFrame@55a6ce, 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),
> linkframe=org.apache.ode.bpel.runtime.LinkFrame@55a6ce, 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.


Mime
View raw message