Using web services for inter-process application communication

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-03-13 12:15
If you want to call a web service that is exposed by a process application on the same Business Automation Workflow server from your process application, and you want to use business objects in a toolkit that is referenced by both process applications then you must enable web services interoperability. If you do not reference the same business objects from both process applications, no special considerations are required.

When you need to enable web services interoperability

By default, type definitions in the WSDL of an exposed web service use array wrappers for business objects with list-type properties, however the XSD schema representation of the business object provided by Process Designer, does not use array wrappers. This affects the runtime behavior of the process application calling the web service.

The following example shows the XSD schema of a business object, with default advanced parameter properties, provided by Process Designer, which does not use array wrappers:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://AFWSTK1" 
           targetNamespace="http://AFWSTK1" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:complexType name="MyBO_3">
    <xs:sequence>
      <xs:element name="listOfMyBO_2" nillable="false" type="tns:MyBO_2" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="item" nillable="false" type="tns:MyBO_2" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MyBO_2">
    <xs:sequence>
      <xs:element name="myString" nillable="false" type="xs:string" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="MyBO_3" type="tns:MyBO_3" />
</xs:schema>
The following example shows the XSD Schema of the same business object in WSDL:
<schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
        targetNamespace="http://AFWSTK1" xmlns="http://www.w3.org/2001/XMLSchema" 
        xmlns:impl="http://AFWSPTK/MyWebService_2.tws" xmlns:impl1="http://AFWSTK1" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
...
  <complexType name="MyBO_3">
    <sequence>
      <element maxOccurs="1" minOccurs="0" name="listOfMyBO_2" nillable="false" type="impl1:ArrayOf_MyBO_2"/>
      <element maxOccurs="1" minOccurs="0" name="item" nillable="false" type="impl1:MyBO_2"/>
    </sequence>
  </complexType>
  <complexType name="MyBO_2">
    <sequence>
      <element maxOccurs="1" minOccurs="0" name="myString" nillable="false" type="xsd:string"/>
    </sequence>
  </complexType>
  <complexType name="ArrayOf_MyBO_2">
    <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="item" nillable="true" type="impl1:MyBO_2"/>
    </sequence>
  </complexType>
...

Enabling web services interoperability and reuse of the same business objects of a common toolkit

To enable web services interoperability and reuse of the same business objects of a common toolkit, perform one of the following procedures:
  • Changing the way how WSDLs are generated
  • Using advanced parameter properties for your business objects
Changing the way that WSDLs are generated
Consider using this approach if you start to develop web services, for example in a new installation. You can change a global setting in your 100Custom.xml file, which will affect the WSDL generation of all exposed web services.
To make the WSDL generator use the advanced parameter properties to generate the WSDL, even in the default case when no advanced parameter properties are explicitly set, add the following entry:
<enable-advanced-parameter-properties-for-wsdl merge="replace">true
</enable-advanced-parameter-properties-for-wsdl>
to the webservices section:
<common merge="mergeChildren">
  ...
    <webservices merge="mergeChildren">
    ...
    </webservices>
  ...
</common>
For more information, see The 100Custom.xml file and configuration.
Using advanced parameter properties for your business objects
Set the advanced parameter properties so that the XSD schema representation in Process Designer matches the WSDL types. Of specific interest for list-type properties is the advanced parameter property Wrap list.
Tip: To easily determine the required advanced parameter properties, create an external service in a process application that does not reference the common toolkit. While creating the external service, new business objects are created with all necessary advanced parameter properties.
For more information, see Business object advanced properties.