Removing inline elements
March 5, 2007 Leave a comment
Web Service Definition Language (WSDL) documents can potentially contain lots of information:
- The service interface (port type)
- The binding information
- Data type definitions
resulting in this information being tightly coupled (if you only use this information for this single service this is fine). However, if you use WebSphere Integration Developer to build modules or mediation modules then you may well want this information to be loosely coupled in order that you can use a subset of this information, or use the same piece of information more than once, for example:
- Multiple components share the same interface but have no need for the binding information
- Exports and imports share the same interface but have different binding information
- Data types are used in multiple service interfaces
and so it makes sense to separate these pieces of information rather than have them all grouped together, so that they can be modified independently and shared.
If you wish to take an existing WSDL which has all these elements inline and separate the various pieces of information (the WSDL document will still import the relevant pieces) you can do this easily using WebSphere Integration Developer in 2 ways:
- When you import your WSDL (File>Import>WSDL/Interface) you can check the Extract Inline Elements checkbox
- After importing your WSDL refactor it to extract inline elements (read more)
Once you have done this you will see (if you right click on your module/mediation module and choose the Show Files option) that your WSDL document is split into 2 WSDL documents (one containing the interface definition, one containing the binding information) and a number of XSD schemas (one for each of the data types defined in your WSDL). If you chose the refactor option you may also notice a subtle change in the icon used in the Business Integration view for interfaces and business objects (there is the corner of a square on the top right of the icons if the element is inline – the corner is not there if the element is not inline).