search cancel

CA Gen 8.6 Call External does not expose wsdl file nested elements defined with "ref" attributes ("xsd:element ref..")

book

Article ID: 203262

calendar_today

Updated On:

Products

Gen Gen - Workstation Toolset

Issue/Introduction

The toolset Call External feature exposes only the four elements from a WSDL file which are defined with "attribute name" i.e. from this section COMMINFO and LEGACYINFO are ignored:

            <xsd:element name="COMMUNICATION">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="COMMINFO" />
                        <xsd:element ref="LEGACYINFO" minOccurs="0" />
                    </xsd:sequence>
                    <xsd:attribute name="PACKAGEID" use="required">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="TYPE">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="COMPENG">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="DOCDEF">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                </xsd:complexType>
            </xsd:element>

The file contains many nested elements which are defined with "ref" attributes and they all seem to be ignored.

Environment

Release : 8.6
Component : CA Gen Workstation Toolset

Cause

Gen Engineering advised that the Call External wsdl parser uses a Microsoft .NET library to handle the xsd processing and it appears it is not able to understand nested "ref" attributes of xsd elements.

Resolution

A possible workaround will involve replacing:
ref="character_string"
with
name="character_string" type="xs:element_type"

Engineering provided a partially modified wsdl file which demonstrated the type of changes required to enable Call External to expose the elements. Examples below:

Original file contains elements like this:

    <wsdl:types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

            <xsd:element name="OMEGA">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="HEADER" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="COMMONDATA">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="EL1" minOccurs="0" />
                        <xsd:element ref="EL2" minOccurs="0" />
                        <xsd:element ref="EL3" minOccurs="0" />
                        <xsd:element ref="EL4" minOccurs="0" />
                        <xsd:element ref="EL5" minOccurs="0" />
                        <xsd:element ref="EL6" minOccurs="0" />
                        <xsd:element ref="EL7" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="HEADER">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="COMMBATCHTYPE" minOccurs="0" />
                        <xsd:element ref="COMMBATCHNUM" minOccurs="0" />
                        <xsd:element ref="COMMBATCHTOTAL" minOccurs="0" />
                        <xsd:element ref="COMMTEMPORALMODE" />
                        <xsd:element ref="PRINTDATETIME" />
                        <xsd:element ref="SYSTEMID" minOccurs="0" />
                        <xsd:element ref="CLIENTID" minOccurs="0" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="COMMUNICATION">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="COMMINFO" />
                        <xsd:element ref="LEGACYINFO" minOccurs="0" />
                    </xsd:sequence>
                    <xsd:attribute name="PACKAGEID" use="required">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="TYPE">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="COMPENG">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="DOCDEF">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="COMMINFO">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="COMMONDATA" />
                        <xsd:element ref="PACKAGESPECIFICDATA" />
                        <xsd:element ref="BINARYDATA" minOccurs="0" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:schema>

    </wsdl:types>

After workaround changes:     
  
    <wsdl:types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

            <xsd:element name="OMEGA">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="HEADER" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="HEADER">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="COMMBATCHTYPE" type="xsd:string" minOccurs="0" />
                        <xsd:element name="COMMBATCHNUM" type="xsd:string" minOccurs="0" />
                        <xsd:element name="COMMBATCHTOTAL" type="xsd:string" minOccurs="0" />
                        <xsd:element name="COMMTEMPORALMODE" type="xsd:string" />
                        <xsd:element name="PRINTDATETIME" type="xsd:string" />
                        <xsd:element name="SYSTEMID" type="xsd:string" minOccurs="0" />
                        <xsd:element name="CLIENTID" type="xsd:string" minOccurs="0" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="COMMUNICATION">
                <xsd:complexType>
                    <xsd:sequence>
                      <xsd:element name="COMMINFO">
                          <xsd:complexType>
                            <xsd:sequence>
                                 <xsd:element name="COMMONDATA">
                                    <xsd:complexType>
                                        <xsd:sequence>
                                           <xsd:element ref="EL1" minOccurs="0" />
                                           <xsd:element ref="EL2" minOccurs="0" />
                                           <xsd:element ref="EL3" minOccurs="0" />
                                           <xsd:element ref="EL4" minOccurs="0" />
                                           <xsd:element ref="EL5" minOccurs="0" />
                                           <xsd:element ref="EL6" minOccurs="0" />
                                           <xsd:element ref="EL7" />
                                        </xsd:sequence>
                                    </xsd:complexType>
                                </xsd:element>
                                <xsd:element ref="PACKAGESPECIFICDATA" />
                                <xsd:element ref="BINARYDATA" minOccurs="0" />
                            </xsd:sequence>
                        </xsd:complexType>
                      </xsd:element>
                        <xsd:element ref="LEGACYINFO" minOccurs="0" />
                    </xsd:sequence>
                    <xsd:attribute name="PACKAGEID" use="required">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="TYPE">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="COMPENG">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="DOCDEF">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string" />
                        </xsd:simpleType>
                    </xsd:attribute>
                </xsd:complexType>
            </xsd:element>

            THIS SECTION REMOVED COMPLETELY:
            <xsd:element name="COMMINFO">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element ref="COMMONDATA" />
                        <xsd:element ref="PACKAGESPECIFICDATA" />
                        <xsd:element ref="BINARYDATA" minOccurs="0" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


        </xsd:schema>
    </wsdl:types>

Additional Information

The behaviour of the Microsoft .NET library failing to handle the processing of nested xsd element "ref" attributes will be investigated in more detail by Engineering to see if any change to Call External will be possible to handle this scenario automatically without needing to manually modify the file.