Wenfeng is right. AFAIK OpenESB's BPEL engine implicitly initialize the variables. So that Netbeans BPEL editor don't validate this. You have to initialize the variables before modifying them. I think the problem occurs if there are any XPath filtering before changing the destination variable. If the copy is directly message part to part it won't be a problem.
Thanks Milinda On Wed, Sep 16, 2009 at 6:49 AM, Wenfeng ZHAO <[email protected]> wrote: > Hello Keith, > > I believe the reason is: both of the two destination variables in the two > copy activities has not > been initialized. See the WS-BPEL standard 2.0(April 11,2007) at page 48 > (Section 8.1): > "A global variable is in an uninitialized state at the beginning of a > process. A local variable is in > an uninitialized state at the start of the scope it belongs to." > and > "An attempt during process execution to read a variable or, in the case of > a message type variable, a > part of a variable before it is initialized MUST result in the standard > bpel:uninitializedVariable > fault." > > I guess other BPEL engines might implicitly intialize the destination > variable of copy. > > > To locate where in the process the fault takes place, the console output of > ODE is a good choice, > which by default contains some verbose DEBUG/ERROR information. Haven't you > read them? > > > Wenfeng > =======On 2009-09-16 at 02:38:09 Barlow, Keith wrote: ======= > > > Hiyas, > > > > > > > > I am trying to use a BPEL created in NetBeans 6.5.1 on ODE and am > > getting a selectionFailure when the process runs. The BPEL seems to > > work fine in OpenESB. I would like to use ODE though because OpenESB is > > tied to the Glassfish Application Server; however, I have not been able > > to find a suitable (relatively bug free) designer for Eclipse yet. I am > > hoping to write BPELs with the NetBeans designer and import them to > > Eclipse to port to ODE. The BPEL is supposed to be the same as long as > > it is not vendor specific. > > > > > > > > Anyway... here is the BPEL which is throwing the selectionFailure. It's > > a simple sample service that just invokes a service to convert an id > > number to a name: > > > > > > > > < process > > > > name="CustomerProcess" > > > > targetNamespace="http://soa.com/bpel/CustomerProcess" > > > > xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > > > > > xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension > > /Trace" > > > > > > xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtensio > > n/Editor" > > > > xmlns:tns="http://soa.com/bpel/CustomerProcess" > > xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"> > > > > < import namespace="urn:com:soa" > > location="localhost_8080/CustomerLookupService/CustomerLookupService.wsd > > l" importType="http://schemas.xmlsoap.org/wsdl/"/> > > > > < import namespace="http://soa.com/wsdl/CustomerProcessEsb" > > location="CustomerProcessEsb.wsdl" > > importType="http://schemas.xmlsoap.org/wsdl/"/> > > > > < partnerLinks> > > > > < partnerLink name="NameServicePartnerLink" > > xmlns:tns="urn:com:soa" partnerLinkType="tns:CustomerLookupService" > > partnerRole="lookupRole"/> > > > > < partnerLink name="CustomerProcessPartnerLink" > > xmlns:tns="http://soa.com/wsdl/CustomerProcessEsb" > > partnerLinkType="tns:CustomerProcessEsb" > > myRole="CustomerProcessEsbPortTypeRole"/> > > > > < /partnerLinks> > > > > < variables> > > > > < variable name="CustomerProcessEsbOperationOut" > > xmlns:tns="http://soa.com/wsdl/CustomerProcessEsb" > > messageType="tns:CustomerProcessEsbOperationResponse"/> > > > > < variable name="GetCustomerFullNameOut" xmlns:tns="urn:com:soa" > > messageType="tns:getCustomerFullNameResponse"/> > > > > < variable name="GetCustomerFullNameIn" xmlns:tns="urn:com:soa" > > messageType="tns:getCustomerFullName"/> > > > > < variable name="CustomerProcessEsbOperationIn" > > xmlns:tns="http://soa.com/wsdl/CustomerProcessEsb" > > messageType="tns:CustomerProcessEsbOperationRequest"/> > > > > < /variables> > > > > < sequence> > > > > < receive name="ReceiveLookupRequest" createInstance="yes" > > partnerLink="CustomerProcessPartnerLink" > > operation="CustomerProcessEsbOperation" > > xmlns:tns="http://soa.com/wsdl/CustomerProcessEsb" > > portType="tns:CustomerProcessEsbPortType" > > variable="CustomerProcessEsbOperationIn"/> > > > > < assign name="Assign1"> > > > > < copy> > > > > > > < from> $CustomerProcessEsbOperationIn.getCustomerFullNameEsb/customerID< > / > > from> > > > > < to> $GetCustomerFullNameIn.parameters/customerID< /to> > > > > < /copy> > > > > < /assign> > > > > < invoke name="InvokeCustomerLookup" > > partnerLink="NameServicePartnerLink" operation="getCustomerFullName" > > xmlns:tns="urn:com:soa" portType="tns:CustomerLookupService" > > inputVariable="GetCustomerFullNameIn" > > outputVariable="GetCustomerFullNameOut"/> > > > > < assign name="Assign2"> > > > > < copy> > > > > > > < from> $GetCustomerFullNameOut.parameters/customerFullName< /from> > > > > > > < to> > $CustomerProcessEsbOperationOut.getCustomerFullNameResponseEsb/custo > > merFullName< /to> > > > > < /copy> > > > > < /assign> > > > > < reply name="ReplyToClient" > > partnerLink="CustomerProcessPartnerLink" > > operation="CustomerProcessEsbOperation" > > xmlns:tns="http://soa.com/wsdl/CustomerProcessEsb" > > portType="tns:CustomerProcessEsbPortType" > > variable="CustomerProcessEsbOperationOut"/> > > > > < /sequence> > > > > < /process> > > > > > > > > Is there anything obvious here that stands out which might cause the > > selectionFailure fault? What are some of the recommended ways to narrow > > down which bpel activity is generating the fault? Does ODE have more > > verbose logging settings? > > > > > > > > Thanks. > > > > > > > > Keith > > = = = = = = = = = = = = = = = = = = = = > ZHAO Wenfeng (赵文峰) > Ph.D. Candidate > http://www.bupt.edu.cn > -- Milinda Pathirage Senior Software Engineer & Product Manager WSO2 BPS; http://wso2.org/bps WSO2 Inc.; http://wso2.com E-mail: [email protected], [email protected] Web: http://mpathirage.com Blog: http://blog.mpathirage.com
