Hello,
while I am currently working on an implementation of WS-Agreement on
Globus Toolkit 4, I found some potential problems with the current
specification.
Many of them are minor
issues, but some can be important. I have documented those I have found
up to now and sending it to the mail list so that we have a chance to
improve it in the next draft.
best regards,
1. non
symmetric names
TerminateRequest
<->
TerminateResponse (operation
input/output)
TerminateInputMessage
<->
TerminateOuputMessage (input/output
message)
TerminateInput
<-> TerminateResponse (input/output
element)
recommendation:
(1) A
simple choice:
TerminateResponse
should be modified to TerminateOutput to be consistent with the other
definitions.
This will
force the input and output type of the service method to be
TerminateInput and
Terminate output, which is a little bit strange to me.
(2) A
better choice:
TerminateInput
<-> TerminateOutput (operation
input/output)
TerminateInputMessage
<->
TerminateOuputMessage (input/output
message)
TerminateRequest
<-> TerminateResponse (input/output
element)
2. Agreement
Template Property of Agreement Factory and Pending Agreement Factory
Service
The
agreement factory has a property of agreement template. However, the
agreement
template retrieval should be regarded as a part of the resource
negotiation
process to accommodate the different modes of negotiation. For
example, the service provider might post their agreement template in a
category (index) service as advertisement.
This
might also cause security problems. For example, the service provider
might
want to provide different templates for different clients, or restrict
certain
clients to access template at all.
recommendation:
do not
define the agreement template property in agreement factory and pending
agreement factory service.
Instead,
move the derivation of agreement template to the layer of agreement
negotiation.
3. Separation
of Agreement port type and agreement status port type
The
agreement port type and status port type is separated in the current
specification.
I understand that this is mainly to separate the resource properties
that are
related with agreement definition and agreement status.
However,
the current specification does not define the link between the
agreement
resource property and agreement status resource property explicitly.
The
AgreementFactory and PendingAgreementFactory service only creates
agreement and
how the agreement status is created is not specified.
recommendation:
We have different choices:
(1) merge
agreement and agreement status port type
(2) modify
AgreementFactory and PendingAgreementFactory portType
(3) specify the relation
more explicitly in the documentation
4.
Inconsistent name conventions
Resource
parameters and message names are sometimes big camel case and some
times lower
camel case. For example: agreementProperties is used with first
character in
lower case.
recommendation:
make
them consistent.
5.
rejectAgreementInput/Ouput with type AgreementAcceptanceInputType and AgreementAcceptanceOutputType . This is a littlble bit
confusing
name, as in the Java program, object with type
AgreementAcceptanceInputType and
AgreementAcceptanceOutputType will be used for rejectAgreement.
Recommendation:
Improve
the schema definition by using type extensions.