יום שני, 11 באפריל 2011

SBL-EAI-09001: Cannot find global '%1' declaration for name: '%2'.


Applies to: Siebel CRM - Version: 7.8.2.13 [19250] - Release: V7
Information in this document applies to any platform.

SymptomsWhen attempt to import WSDL document generated by external application onto Siebel Tools, the following error occurs:

Port 'CommonPortType' can not be imported. PortType 'CommonPortType' can not be imported. The http://schemas.xmlsoap.org/wsdl/:operation 'GetRatedUsageRequest' was ignored. Error importing XML schema via method 'GetIntObjByElement' for 'element' 'GetRatedUsageRequest' in ' http://OOO'(SBL-EAI-08009)
Cannot find global 'type' declaration for name: 'http://OOO:nativeDate'.(SBL-EAI-09001)

1. WSDL document:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://OOO" targetNamespace="http://OOO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/">
<types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://OOO" xmlns=" http://OOO ">
<xs:include schemaLocation="common.xsd"/>
<xs:element name="BalanceTransferRequest">
<xs:complexType>
<xs:sequence>
…
<xs:element name="GetRatedUsageRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="DATE" minOccurs="0" type="nativeDate"/>
…

2. XSD document:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="nativeDate">
<xs:annotation>
…


CauseThe XSD included in the WSDL documentation did not have the target name space attribute also the WSDL document has a few of typo errors.

SolutionFor the benefit of other users:

After research, found that the schema defined in the XSD that the customer was trying to import did not have targetNamespace while they specified namespace in the import statement.

Please make sure that the namespace used in the import statement is the same as the targetNamespace of the schema is being imported.

<?xml version="1.0"?>
<xs:schema targetNamespace="http://OOO" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="nativeDate">
<xs:annotation>
…


















Applies to: Siebel CRM - Version: 8.0.0.6 SIA [20423] and later [Release: V8 and later ]
Information in this document applies to any platform.
***Checked for relevance on 12-JAN-2011***

Symptoms
The customer created an inbound web service in version 8.0.0.6 that invoked a custom business service. The WSDL generated by Siebel was not valid. For example, a WSDL compliance check in SOAPUI returned the following:

Failed Assertion BP2122.

Failure Message:

A wsdl:types element contained a data type definition that is not an XML schema definition.

Failure Detail Message:

Error: src-resolve: Cannot resolve the name 'xsdLocal1:DeleteWorkforce' to a(n) 'element declaration' component.
Error: src-resolve: Cannot resolve the name 'xsdLocal1:ModifyWorkforce' to a(n) 'element declaration' component.
Error: src-resolve: Cannot resolve the name 'xsdLocal1:WorkforceStatusChange' to a(n) 'element declaration' component.

Element Location:
lineNumber=3

Also, I consumed it using Tools and the following information was output:


“Integration object definitions to be generated:
ProcessModifiedWorkforce_Input for type/element:ProcessModifiedWorkforce_Input in namespace http://amgen.com/WorkforceClient

Following are warnings generated in the process:

The http://schemas.xmlsoap.org/wsdl/:operation 'ProcessNewWorkforce' was ignored. Error importing XML schema via method 'GetIntObjByElement' for 'element' 'ProcessNewWorkforce_Input' in 'http://amgen.com/WorkforceClient'(SBL-EAI-08009)
Cannot find global 'element' declaration for name: 'http://amgen.com/types:NewWorkforce'.(SBL-EAI-09001)

The http://schemas.xmlsoap.org/wsdl/:operation 'ProcessDeletedWorkforce' was ignored. Error importing XML schema via method 'GetIntObjByElement' for 'element' 'ProcessDeletedWorkforce_Input' in 'http://amgen.com/WorkforceClient'(SBL-EAI-08009)
Cannot find global 'element' declaration for name: 'http://amgen.com/types:DeleteWorkforce'.(SBL-EAI-09001)

The http://schemas.xmlsoap.org/wsdl/:operation 'ProcessWorkforceStatusChange' was ignored. Error importing XML schema via method 'GetIntObjByElement' for 'element' 'ProcessWorkforceStatusChange_Input' in 'http://amgen.com/WorkforceClient'(SBL-EAI-08009)
Cannot find global 'element' declaration for name: 'http://amgen.com/types:WorkforceStatusChange'.(SBL-EAI-09001)”

CauseThe business service included 4 methods; DeleteWorkforce, ModifyWorkforce, NewWorkforce and WorkforceStatusChange. It appears that the problem was related to the fact that each of the methods referenced a different IO and all 4 IOs included the following integration object user properties:








Name


Value


XMLTagNamespace


http://amgen.com/types


XSDTypeNamespace


http://amgen.com/types




Solution
Namespaces are used to provide uniqueness. The WSDL generated by Siebel passed a SOAPUI compliance check and could be consumed in Tools after the IO user properties were modified as follows to make each one unique:

DeleteWorkforce

XMLTagNamespace, http://amgen.com/types1
XSDTypeNamespace, http://amgen.com/types1
ModifyWorkforce

XMLTagNamespace, http://amgen.com/types2
XSDTypeNamespace, http://amgen.com/types2

NewWorkforce

XMLTagNamespace, http://amgen.com/types3
XSDTypeNamespace, http://amgen.com/types3
WorkforceStatusChange

XMLTagNamespace, http://amgen.com/types4
XSDTypeNamespace, http://amgen.com/types4














Applies to: Siebel System Software - Version: 7.8.2.2 [19219] and later [Release: V7 and later ]
z*OBSOLETE: Microsoft Windows Server 2003
Product Release: V7 (Enterprise)
Version: 7.8.2.2 [19219]
Database: Oracle 9.2
Application Server OS: Microsoft Windows 2003 Server
Database Server OS: IBM AIX 4.1.4 RS/6000

This document was previously published as Siebel SR 38-3054195451.
***Checked for relevance on 20-DEC-2010***

SymptomsA WSDL file contains 3 tags for schema definitions.
When we import the WSDL Siebel returns an error that it was not able to find the definition of the 'ClauseTextReply' message which is located in the 3rd schema tag.

Port 'GetClausePort' can not be imported. PortType 'GetClausePortType' can not be imported. The http://schemas.xmlsoap.org/wsdl/:operation 'GetClause' was ignored. Error importing XML schema via method 'GetIntObjByElement' for 'element' 'ClauseTextReply' in 'http://<hostname>/siebel-get-clause/'(SBL-EAI-08009)
Cannot find global 'element' declaration for name: 'http://<hostname>/siebel-get-clause/:ClauseTextReply'.(SBL-EAI-09001)

WSDL Example:

<wsdl:types>
<xs:schema targetNamespace="http://<webserver1>/bebop/weaheader_1_1" elementFormDefault="qualified">
<xs:element name="MessageHeader">
...
</xs:schema>
<xs:schema xmlns:wea="http://<webserver1>/bebop/weaheader_1_1" targetNamespace="http://<webserver2>/siebel-get-clause/">
<xs:element name="ClauseTextRequest">
...
</xs:schema>
<xs:schema xmlns:wea="http://<webserver1>/bebop/weaheader_1_1" targetNamespace="http://<webserver2>/siebel-get-clause/">
<xs:element name="ClauseTextReply">
...
</xs:schema>
</wsdl:types>



CauseThere were two schema definitions with the same namespaces and Siebel was not reading the definitions of the last one.

WSDL with problems:

<wsdl:types>
...
<xs:schema xmlns:wea="http://www.server.com/weaheader_1_1" targetNamespace="http://test.server.com/siebel-get-clause/">
<xs:element name="ClauseTextRequest">
...
</xs:schema>
<xs:schema xmlns:wea="http://www.server.com/weaheader_1_1" targetNamespace="http://test.server.com.com/siebel-get-clause/">
<xs:element name="ClauseTextReply">
...
</xs:schema>
</wsdl:types>



As per the WS-I BP 1.0 definition to which Siebel conforms, having two schemas with the same namespace is accepted as shown below:

"R2114: The target namespace for WSDL definitions and the target namespace for schema definitions in a DESCRIPTION MAY be the same."

Defect 12-1EKVEBJ has been raised to address this issue to a future version

SolutionIn this particular case, the issue was solved by removing the second schema definition from the WSDL.
It was possible because both schemas were the same.
Below is the working WSDL:


<wsdl:types>
...
<xs:schema xmlns:wea="http://www.server.com/weaheader_1_1" targetNamespace="http://test.server.com/siebel-get-clause/">
<xs:element name="ClauseTextRequest">
...
<xs:element name="ClauseTextReply">
...
</xs:schema>
</wsdl:types>


ReferencesBUG:10509505 - ERROR WHEN IMPORTING WSDL WITH 2 EQUAL SCHEMAS










Related







Products








Siebel > Customer Relationship Management > CRM - Enterprise Edition > Siebel System Software


Keywords






 

IMPORT WSDL; RETURNED AN ERROR

 

Errors





 

SBL-EAI-08009; SBL-EAI-09001





אין תגובות:

הוסף רשומת תגובה