6 Replies Latest reply on Jun 6, 2006 7:30 AM by Mark Little

    Service contract definition

    Mark Little Master

      On the premise that something is better than nothing, here's a proposal for an initial Service Contract Definition schema.

      Contract definition information will be peculiar to the type of service. However, there will always be some commonality. Therefore, the basic contract information we need to maintain is:

      - the type of the service
      - the sub-type of the service
      - the version of the service
      - the protocols accepted by the service (essentially a list of EPRs, which can themselves contain additional information)
      - protocol specific data (e.g., WSDL for Web Services EPRs)
      - service specific contract information
      - policies (e.g., is the service transactional, is it secure, etc. Some of this information may be duplicated elsewhere in the contract)
      - meta-data (basically a catch-all bag for anything we may want to stick here for now, such as availability, performance, etc.)

      Here's the proposed schema ...

      <?xml version="1.0" encoding="UTF-8"?>
      <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/NewXMLSchema" xmlns:tns="http://www.example.org/NewXMLSchema">
      <xs:complexType name="ContractDefinition">
      <xs:sequence>
      <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
      <xs:element name="serviceType" type="xs:anyURI"/>
      <xs:element minOccurs="0" name="serviceSubType" type="xs:anyURI"/>
      <xs:element minOccurs="0" name="version" type="xs:anyURI"/>
      <xs:element minOccurs="0" name="protocols" type="ProtocolData"/>
      <xs:element minOccurs="0" name="policies" type="wsp:Policy"/>
      </xs:sequence>
      <xs:attribute ref="wsu:Id" use="optional"/>
      </xs:complexType>

      <xs:complexType name="ProtocolData">
      <xs:sequence>
      <xs:element name="epr" type="EPR"/>
      <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
      </xs:sequence>
      </xs:complexType>