WS-Agreement Overview

The objective of the Webservice-Agreement specification is to define a language and a protocol for advertising the capabilities of service providers and creating agreements based on templates, and for monitoring agreement compliance at runtime. An agreement between a service consumer and a service provider specifies one or more service level objectives both as expressions of requirements of the service consumer and assurances by the service provider on the availability of resources and/or on service qualities. The WS-Agreement specification relies on a set of well established standards like XML, SOAP, WSDL and WSRF. For a complete reference of the WS-Agreement, refer to the WS-Agreement specification.

WS-Agreement extends the classical service discovery and usage model since it allows service consumers not only to discover and use services, but also to dynamically negotiate the quality with which the service is provided. Once the service consumer and the service provider achieved a common understanding of the service provisioning, an agreement or SLA is created that serves as a formal contract between the two parties and describes the rights and obligations of each party in the context of the service provisioning process. An agreement life cycle includes the creation, termination and monitoring of agreement states.

WS-Agreement protocol

The WS-Agreement protocol defines the required services and operations to create and monitor service level agreements. The WS-Agreement model therefore defines two types of services, the agreement factory service and the agreement service. The agreement factory service is responsible for creating agreements between a service consumer and provider and for instantiating the associated service with the agreed QoS. The agreement service is responsible for monitoring the compliance of agreements and of the associated services. WS-Agreement specification specifies a set of interfaces in order to interact with the agreement factory service and the agreement service. These interface descriptions are provided in the form of WSDL and one specific interface is defined by one WSDL port type. WS-Agreement protocol supports the symmetric deployment of its port types. Both services are modeled as web service resources conforming to the WSRF specification. A web service resource is a web service instance that is uniquely identified by an endpoint reference (EPR). Endpoint references are defined in the WS-Addressing specification.

Agreement Factory Service

This service is used by the agreement initiator or service consumer to create SLAs with the agreement responder or service provider. The agreement factory service publishes the agreement templates it supports as WSRF resource properties. In order to create a new agreement, the service consumer first queries the available templates from the service provider's agreement factory service using the WSRF GetResourceProperty method. The consumer chooses the template that fulfills its requirements best and creates a new agreement offer from it. An offer describes the service to provide, guarantees that are associated with the service, compensation methods for fulfilling or violating the guarantees, and the rights and obligations of each party. It then sends the offer to the service provider in order to create a new agreement. As soon as the agreement offer is sent to the agreement responder, the initiator is bound to it. WS-Agreement defines two methods for creating agreements with the agreement factory service, the synchronous createAgreement method that is specified by the AgreementFactory port type and the asynchronous createPendingAgreement method that is specified by the PendingAgreementFactory port type. In the synchronous case the agreement responder must immediately decide whether to accept or reject an incoming agreement offer. If it accepts the offer it returns a reference to a new agreement instance, otherwise it returns an error. This process is shown in Figure below.

Agreement Creation

In the asynchronous case the decision of accepting the agreement offer is deferred to a later time. The createPendingAgreement method therefore returns a reference to a new agreement instance which is in the pending state. Once the acceptance decision is made, the agreement state is changed either to observed in case of acceptance, or to rejected.

Agreement Service

The agreement service implements the required mechanisms to access the content of an existing agreement, to monitor the agreement at runtime and to manage its life cycle. For each agreement that is created by the agreement factory service a new agreement service instance is instantiated. The agreement service is modeled as WSRF resource and the properties of an agreement service instance are modeled as WSRF resource properties. The WSRF resource properties can be accessed via the methods specified in the WSRF Resource Properties specification. WS-Agreement defines two port types for the agreement service; the Agreement port type and the AgreementState port type.

The Agreement port type defines a method to terminate an agreement if permissible and a set of agreement resource properties, such as the agreement context, terms and id. The agreement attributes are in general specified by the agreement offer.

The AgreementState port type defines an additional set of agreement resource properties in order to support the monitoring of an agreement. These additional properties comprise the agreement state, the state of the distinct service terms, and the state of the guarantee terms defined in an agreement.