Agreement Negotiation

The WS-Negotiation specification defines two port types as Negotiation Factory and the Negotiation. These port types can be used in different combinations in order to support a wide range of signaling scenarios. One scenario is presented below to illustrate possible negotiation signaling and how such a scenario is mapped to specific deployments of WS-Agreement Negotiation port types.

WSAG4J framework implements the default negotiation behavior. It validates incoming offers with respect to adherence to creation constraints defined in the originating templates, with respect to negotiation constraints defined in the parent offers, and invokes the appropriate negotiation strategies for incoming offers. The negotiation strategy is identified by the template an incoming offer is based on. For each SLA where a negotiation strategy is implemented, the corresponding template is returned by the negotiation instance. It keeps track of the negotiation offers exchanged in the negotiation process as long as they are still valid (e.g. not expired).

Simple Client-Server Negotiation

The simple client-server negotiation is an asymmetric signaling scenario, where a server implements the Negotiation Factory, Negotiation, and Agreement Factory port types. The negotiation process is driven by the client. The client first queries the available agreement templates from the server and selects the templates it is interested to negotiate SLAs. Then the client initiates the negotiation by calling the server initiateNegotiation operation. The server returns a reference to a new negotiation instance. The client uses the selected templates to create new negotiation offers. These offers are sent to the negotiation instance by calling its negotiate method. The server creates one or more counter offers for each received offer. It has a passive role in the negotiation process since it does not actively influence the course of a negotiation, i.e. it can only react to negotiation requests. The negotiation process is depicted in Figure below.

Client-Server Negotiation Scenario

Example

For a full guide on how to implement agreement negotiation go to the Agreement Negotiation Example.