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,

Tianchao Li

LRR, Technische Universitaet Muenchen, Germany

==========================================================

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.