I came acros a document on my laptop which I got from BusinessObjects when I had trouble connecting a webservice to Xcelsius (project in 2009, so must have been Xcelsius 2008 SP1 or so). I thought I will post it here, but please note that I do not create websrvices myself and do not know if in the current verions (2008 SP4 and 2011) all 10 items are still valid. If 1 is obsolete please let me know.
Top 10 Guidelines for Creating Web Services for Xcelsius
Creating web services for third party applications to consume can often be difficult, if not daunting for the developer if appropriate documentation is not available. Web Services in general support many protocols including SOAP, BPEL, WSCL, WSDL and more. As well as messaging formats, there’s always the issue of how the WSDL should be defined in order to be appropriately consumed by the application.
Without the proper guidelines or assistance, one can spend endless hours troubleshooting their web services to work with third party applications. Let’s take a look at some guidelines around creating Web Services for Xcelsius:
1. Elements and folders can be tied to the component as Return Values. Meaning you can return elements both as single values or a collection of values, which can then be tied to components with in Xcelsius such as charts and selectors.
2. The schema portion of the Web Service Defintion Language (WSDL) is loaded into a validating parser when creating a connection within Xcelsius. The WSDL is validated immediately and if the schema is not completely conformed to the requirements, then an error will occur. Before you can continue to use the WSDL in your Xcelsius model, the WSDL will need to be fixed to conform to the expectations of the parser.
An example of a public WSDL that does pass validity and is used internally by our product group to perform testing can be found below to compare to your own WSDL for error checking:
http://services.aonaware.com/DictService/DictService.asmx?WSDL
3. If the schema portion of your WSDL has choice elements, only the first choice will be available to be used in the Web Service Connector Component within Xcelsius.
4. If the schema for your WSDL has dependencies on other schema files, make sure you use an import tag with a “schemaLocation” attribute that the application can get to.
Example: <xsd:import namespace=”http://www.sap.com/XML/namespace” schemaLocation=”xml.xsd”>
5. DIME, WS-Attachments and other binary formats are not supported. These binary formats are generally used to carry binary attachments such as images, sound files and videos which are not supported in Xcelsius.
6. Overloaded method names and methods with the same name but different return types, are not supported in Xcelsius.
7. SOAP headers are not supported. The SOAP header is an optional part of a SOAP message and almost all SOAP messages are placed in the body. Routing information, details from the creator of the message, and other information can be placed in the header but is not supported by Xcelsius.
8. Representational Style Transfer (REST) is not supported. REST is a model that allows for XML to be interpreted by reading a webpage that contained XML. Although this is not supported directly in Xcelsius, you can use REST via the Excel 2008 XML Maps instead.
9. Multiple schema blocks with a reference between them are not supported (look for more than one schema and/or an import line in either schema without a location).
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:tns=”MySchemaONE” targetNamespace=”MySchemaONE” elementFormDefault=”unqualified” attributeFormDefault=”qualified”>
i. …
</xsd:schema>
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:tns=”MySchemaTWO” targetNamespace=”MySchemaTWO” elementFormDefault=”unqualified” attributeFormDefault=”qualified” xmlns:n0=”MySchemaONE”>
i. <xsd:import namespace=”MySchemaONE”/>
ii. …</xsd:schema>
10. Types that reference another type in a recursive way will not load.
<complexType name=”ParentType”>
<sequence>
<element name=”child” nillable=”true” type=”ChildType”/>
</sequence>
</complexType>
<complexType name=”ChildType”>
<complexContent>
<extension base=”ParentType”>
<sequence/>
</extension>
</xs:complexContent>
</complexType>
The points mentioned are a few of the things to take into consideration when creating or troubleshooting your web services for compatibility with Xcelsius.