En este tema se describe cómo los usuarios de Enterprise Service Tools pueden incluir y hacer referencia a elementos de interfaz utilizados comúnmente (que se obtienen de libros de copia COBOL) utilizando mecanismos de inclusión XSD y WSDL estándar.
Es normal en el desarrollo de aplicaciones COBOL crear secuencias reutilizables de código colocándolas en archivos “COPY” (libros COPY) y reutilizarlas incluyendo el mismo libro COPY en múltiples archivos origen (mediante la sentencia COBOL COPY).
La Figura 1 es un ejemplo de una secuencia de código típica para reutilizar su definición de datos que se repite en múltiples estructuras de datos. En este ejemplo, las dos definiciones de datos reutilizan el mismo libro COPY denominado COMMHDR.
01 departmentUpdateRequest.
COPY COMMHDR.
COPY DEPTBDY.
01 departmentUpdateReply.
COPY COMMHDR.
02 updStatus pic xxx.
La Figura 2 y la Figura 3 muestran el contenido el libro de copia COMMHDR y el libro de copia DEPTBDY.
Antes de IBM® Rational Developer for System z Versión 7.5, las interfaces de servicio generadas a partir de estructuras de datos que hacían referencia a libros COPY necesitaban que se generasen esquemas XML completos (XSD) para cada estructura de datos.
<schema ...
targetNamespace="http://www.TST01I.com/schemas/TST01IInterface"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:cbl="http://www.TST01I.com/schemas/TST01IInterface">
<complexType name="departmentUpdateRequest">
<sequence>
<element name="commHeader"
type="cbl:departmentupdaterequest_commheader"/>
<element form="qualified" name="member_count">
<simpleType>
...
</simpleType>
</element>
<element name="dept_details"
type="cbl:departmentupdaterequest_dept__details"/>
</sequence>
</complexType>
<complexType name="departmentupdaterequest_commheader">
<sequence>
<element form="qualified" name="commId">
<simpleType>
...
</simpleType>
</element>
<element form="qualified" name="commRevDate">
<simpleType>
...
</simpleType>
</element>
<element form="qualified" name="commDigest">
<simpleType>
...
</simpleType>
</element>
</sequence>
</complexType>
<complexType name="departmentupdaterequest_dept__details">
<sequence>
...
</sequence>
</complexType>
<element name="departmentUpdateRequest" type="cbl:departmentUpdateRequest">
</schema>
<schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://www.TST01O.com/schemas/TST01OInterface"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:cbl="http://www.TST01O.com/schemas/TST01OInterface">
<complexType name="departmentUpdateReply">
<sequence>
<element name="commHeader" type="cbl:departmentupdatereply_commheader"/>
<element form="qualified" name="updStatus">
...
</element>
</sequence>
</complexType>
<complexType name="departmentupdatereply_commheader">
<sequence>
<element form="qualified" name="commId">
...
</element>
<element form="qualified" name="commRevDate">
...
</element>
<element form="qualified" name="commDigest">
...
</element>
</sequence>
</complexType>
<element name=" departmentUpdateReply" type="cbl:departmentUpdateReply">
...
</element>
</schema>
(departmentupdaterequest_commheader. versus departmentupdatereply_commheader)
y
(xmlns:cbl="http://www.TST01I.com/schemas/TST01IInterface. versus xmlns:cbl="http://www.TST01O.com/schemas/TST01OInterface) .
Como se puede utilizar un solo libro COPY para múltiples servicios, la multiplicidad de elementos con tipo similar puede llevar a la duplicación innecesaria de código generado para los clientes a partir de estos archivos WSDL o XSD.
Esta característica permite a los usuarios especificar un libro COPY común y tipos y elementos XSD comunes que múltiples interfaces pueden utilizar sin tener contenido de esquema duplicado.