The problem with the key bag is that it is exactly that: a bag of keys.
Adding the assertionStatusReport to this is really horrible (especially given
that the key bag is used in other places, too). The assertionStatusReport is
already returned in the subscriptionResultsList, and it makes sense to modify
this slightly rather than mess up the key bag.
Moreover, bear in mind that "deleting" an assertion may only delete one end
of the assertion, which is a status update - so it seems not unnatural to say
that all assertion deletions can be reported by way of status updates. If you
are relying on the subscription results to keep your data up to date, this is
not a particularly unnatural way to do it.
Luc/Tom will have to confirm, but I think it makes sense to make these TWO
CRs, one for dealing with the return of the assertionStatusReports, and one
dealing with the "broken" filters.
Tony
-----Original Message----- From: Zhe (Alan) Wu
[mailto:Alan.Wu@oracle.com] Sent: Wed 29-Oct-03 7:58 To:
Tom Bellwood Cc: Rogers, Tony; Luc Clement; UDDI Spec TC;
alan.wu@oracle.com Subject: Re: [uddi-spec] Question regarding to
tracking removed publisher assertion for UDDI v3
subscription.
Hi Tom/Tony/Luc/TC,
I've no problem
with writing up a formal CR. (Please tell me the deadline though:)
For
your proposed solution, I think it is certainly doable. However, how about
relatedBusinessInfo (from request of find_relatedBusiness)? To extend your
idea, shall we do something similar to uddi:direction?
Would it be
simpler to just add an additional attribute 'removed' to both
<relatedBusinessInfo> and <assertionStatusItem>?
One thing
I don't like this solution (even the change I just suggested above) is that
it will mix new/updated entities with deleted entities in
subscriptionResultList. For example, now assertionStatusReport will
contain both updated/new assertionStatusItem's, as well as removed ones. In
contrast, the original spec has a cleaner separation: new/updated entities
are at the top of subscriptionResultList, removed ones are in the keyBag at
the bottom (with the exception for the 'brief' mode).
Conceptually,
would it be easier for end-users to have something like:
<subscriptionResultList>...
<new_or_updated> ...
</new_or_updated>
<removed> ...
</removed> </subscriptionResultList>
As
to your first clarification point, I totally agree.
For the second one,
could you elaborate a bit further, maybe with an example? BTW, do I need to
include these two clarifications into the CR?
Thanks,
Zhe (Alan)
Wu Oracle UDDI Server Team
Tom Bellwood wrote:
Zhe,,
This will be in the minutes from the FTF, but we discussed this item today
and came up with a somewhat cleaner solution:
· Update completionStatus in base schema to include a
“status:both_incomplete” (or similarly worded) option
· Annotate spec where this is discussed outside of subscription to
indicate that use of status:both_incomplete only applies to subscription
· Add explanation in subscription text in spec describing how
assertionStatusReport in subscriptionResults supports deletion by examining
the completionStatus for presence of “status:both_incomplete”.
We also need to clarify what is reported in the keyBag when the key
which is part of the filter citeria itself is deleted. For example, if
a businessKey is deleted and the filter criteria is a find_service for
one of the services in that business, do we report back the deleted
serviceKey, all of the deleted serviceKeys from that business, or the
businessKey, or all of the above? We agreed that the serviceKey in
question is the one that should be returned.
We also need to add an attribute to the subscriptionResultsList which
indicates when a subscriptionFilter criteria is now broken. This can
occur if the filter was searching for specific keys which have been
deleted. Subsequent use of the filter would no longer be applicable and
the subscriber needs to be informed that this has occurred.
You got the TODO for writing up a formal CR to this effect. You ok with
that?
Thanks,
Tom Bellwood Phone: (512) 838-9957 (external); TL: 678/9957
(internal)
Co-Chair, OASIS UDDI Specification TC
STSM - Emerging Technologies
IBM Corporation
"Zhe (Alan) Wu" <Alan.Wu@oracle.com> on 10/28/2003 10:15:35 AM
To: Tom Bellwood/Austin/IBM@IBMUS
cc: "Rogers, Tony" <Tony.Rogers@ca.com>, Luc Clement
<lclement@windows.microsoft.com>, UDDI Spec TC
<uddi-spec@lists.oasis-open.org>
Subject: Re: [uddi-spec] Question regarding to tracking removed
publisher assertion for UDDI v3 subscription.
Hi Tom/Luc,
I've read the comments from both of you. I tend to agree more
with Tom on that adding assertion or
relatedBusinessInfo (for the case of find_relatedBusiness) into
keyBag sounds a little bit confusing, even keyBag is renamed.
How about removing the <deleted> subelement from keyBag and adding
a <removed> element into subscriptionResultsList? That way, keyBag
means just a bag of keys, nothing more than that. Whether it specifies
a bag of deleted entities or briefed entities depends on its context.
If it's a subelement of <removed>, then it specifies a bag of deleted
entities.
Specifically, in the language of schema (changes are highlighted in
colors):
<xsd:element name="keyBag" type="uddi_sub:keyBag" final="restriction"/>
<xsd:complexType name="keyBag" final="restriction">
<xsd:sequence>
<!-- <xsd:element ref="uddi_sub:deleted"/> -->
<xsd:choice>
<xsd:element ref="uddi:tModelKey" maxOccurs="unbounded"/>
<xsd:element ref="uddi:businessKey" maxOccurs="unbounded"/>
<xsd:element ref="uddi:serviceKey" maxOccurs="unbounded"/>
<xsd:element ref="uddi:bindingKey" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="subscriptionResultsList"
type="uddi_sub:subscriptionResultsList" final="restriction"/>
<xsd:complexType name="subscriptionResultsList" final="restriction">
<xsd:sequence>
<xsd:element ref="uddi_sub:chunkToken" minOccurs="0"/>
<xsd:element ref="uddi_sub:coveragePeriod"/>
<xsd:element ref="uddi_sub:subscription"/>
<xsd:choice minOccurs="0">
<xsd:element ref="uddi:bindingDetail"/>
<xsd:element ref="uddi:businessDetail"/>
<xsd:element ref="uddi:serviceDetail"/>
<xsd:element ref="uddi:tModelDetail"/>
<xsd:element ref="uddi:businessList"/>
<xsd:element ref="uddi:relatedBusinessesList"/>
<xsd:element ref="uddi:serviceList"/>
<xsd:element ref="uddi:tModelList"/>
<xsd:element ref="uddi:assertionStatusReport"/>
</xsd:choice>
<xsd:element ref="uddi_sub:keyBag" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element ref="uddi_sub:removed" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="someResultsUnavailable" type="xsd:boolean"
use="optional"/>
</xsd:complexType>
<xsd:element name="removed" type="uddi_sub:removed"/>
<xsd:complexType name="removed">
<xsd:sequence>
<xsd:element ref="uddi_sub:keyBag" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:choice>
<xsd:element ref="uddi:relatedBusinessInfo" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element ref="uddi:assertionStatusItem" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
Zhe (Alan) Wu
Oracle UDDI Server
|