In issue 12, we agreed to add a supertype “Contract”
for Service and Binding.
If we split out ComponentService and
ComponentBinding as you propose below,
we should make them inherit a common
supertype “ComponentContract”.
Or an alternative:
If we don’t want to keep
ComponentService and ComponentReference extending from Service and Reference,
we could add the following to ComponentService:
<attribute name="promote"
type="anyURI" use="prohibited" />
And to ComponentReference:
<attribute name="promote"
type="sca:listOfAnyURIs" use="required" />
From: Mike Edwards
[mailto:mike_edwards@uk.ibm.com]
Sent: Monday, February 04, 2008
8:39 AM
To: OASIS Assembly
Subject: [sca-assembly] ISSUE 18:
Proposal to resolve Issue 18
Folks,
Here
is my proposal for Issue 18, which is one of the workitems following from the
F2F meeting:
Issue
18 has the title "XSD definitions of Component Service and Component
Reference have unintended features"
-
in particular, ComponentService and ComponentReference pick up the
"promote" attribute from Service and
Reference.
The
principle of this proposal is to NOT derive ComponentService and
ComponentReference through restriction.
Instead,
they are simply declared in a standalone fashion, as follows:
Current
declarations:
<complexType name="ComponentService">
<complexContent>
<restriction base="sca:Service">
<sequence>
<element ref="sca:interface" minOccurs="0" maxOccurs="1"/>
<element name="operation" type="sca:Operation" minOccurs="0"
maxOccurs="unbounded" />
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="sca:binding"/>
<any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</choice>
<element ref="sca:callback" minOccurs="0" maxOccurs="1"/>
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="NCName" use="required"/>
<attribute name="requires" type="sca:listOfQNames"
use="optional"/>
<attribute name="policySets" type="sca:listOfQNames"
use="optional"/>
<anyAttribute namespace="##any" processContents="lax"/>
</restriction>
</complexContent>
</complexType>
<complexType name="ComponentReference">
<complexContent>
<restriction base="sca:Reference">
<sequence>
<element ref="sca:interface" minOccurs="0" maxOccurs="1" />
<element name="operation" type="sca:Operation" minOccurs="0"
maxOccurs="unbounded" />
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="sca:binding" />
<any namespace="##other" processContents="lax" />
</choice>
<element ref="sca:callback" minOccurs="0" maxOccurs="1" />
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="name" type="NCName" use="required" />
<attribute name="autowire" type="boolean" use="optional" default="false"/>
<attribute name="wiredByImpl" type="boolean" use="optional" default="false"/>
<attribute name="target" type="sca:listOfAnyURIs" use="optional"/>
<attribute name="multiplicity" type="sca:Multiplicity"
use="optional" default="1..1" />
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
<attribute name="policySets" type="sca:listOfQNames"
use="optional"/>
<anyAttribute namespace="##any" processContents="lax" />
</restriction>
</complexContent>
</complexType>
Proposed
declarations:
<complexType name="ComponentService">
<sequence>
<element ref="sca:interface" minOccurs="0" maxOccurs="1"/>
<element name="operation" type="sca:Operation" minOccurs="0"
maxOccurs="unbounded" />
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="sca:binding"/>
<any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</choice>
<element ref="sca:callback" minOccurs="0" maxOccurs="1"/>
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="NCName" use="required"/>
<attribute name="requires" type="sca:listOfQNames"
use="optional"/>
<attribute name="policySets" type="sca:listOfQNames"
use="optional"/>
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>
<complexType name="ComponentReference">
<sequence>
<element ref="sca:interface" minOccurs="0" maxOccurs="1" />
<element name="operation" type="sca:Operation" minOccurs="0"
maxOccurs="unbounded" />
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="sca:binding" />
<any namespace="##other" processContents="lax" />
</choice>
<element ref="sca:callback" minOccurs="0" maxOccurs="1" />
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="name" type="NCName" use="required" />
<attribute name="autowire" type="boolean" use="optional" default="false"/>
<attribute name="wiredByImpl" type="boolean" use="optional" default="false"/>
<attribute name="target" type="sca:listOfAnyURIs" use="optional"/>
<attribute name="multiplicity" type="sca:Multiplicity"
use="optional" default="1..1" />
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
<anyAttribute namespace="##any" processContents="lax" />
</complexType>
Yours, Mike.
Strategist - Emerging Technologies, SCA & SDO.
Co Chair OASIS SCA Assembly TC.
IBM Hursley
Park, Mail Point 146, Winchester, SO21
2JN, Great Britain.
Phone & FAX: +44-1962-818014 Mobile: +44-7802-467431
Email: mike_edwards@uk.ibm.com
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England
and Wales
with number 741598.
Registered office: PO Box 41,
North Harbour, Portsmouth, Hampshire PO6 3AU