GFD 193
GFD 193
193 Authors:
GRAAP-WG Oliver Waeldrich (Editor), Fraunhofer SCAI
Dominic Battré, TU-Berlin
Frances Brazier, Delft University of Technology
Kassidy Clark, Delft University of Technology
Michel Oey, Delft University of Technology
Alexander Papaspyrou, TU Dortmund University
Philipp Wieder, TU Dortmund University
Wolfgang Ziegler, Fraunhofer SCAI
Copyright Notice
Copyright © Open Grid Forum (2011). All Rights Reserved.
Trademark
OGSA is a registered trademark and service mark of the Open Grid Forum.
Abstract
This document describes the Web Services Agreement Negotiation
Specification (WS-Agreement Negotiation), a Web Services protocol for
negotiating agreement offers between two parties, such as between a service
provider and a service consumer. An agreement offer negotiation may then
result in the creation of an agreement using the WS-Agreement specification
(published as GFD.192 [GFD192]). WS-Agreement Negotiation can also be
used to renegotiate an existing agreement.
Contents
1
Introduction................................................................................................. 4
1.1
Goals and Requirements ..................................................................... 6
1.2
Notational Conventions and Terminology ............................................ 7
1.3
Namespaces ........................................................................................ 9
2
Use Cases .................................................................................................. 9
2.1
Advance Reservation of Compute Resources ..................................... 9
3
WS-Agreement Negotiation Model ........................................................... 11
3.1
Negotiation Offer/Counter Offer model .............................................. 11
3.2
Layered architectural Model .............................................................. 14
4
Negotiation ............................................................................................... 15
4.1
Negotiation Context ........................................................................... 15
4.1.1
Negotiation Type ......................................................................... 17
5
Negotiation Offer ...................................................................................... 19
5.1
Negotiation Offer Structure ................................................................ 19
5.2
Negotiation Offer Context .................................................................. 22
5.3
Negotiation Offer States .................................................................... 23
5.4
Negotiation Offer State Transitions.................................................... 25
6
Creation of Negotiated and Renegotiated Agreements............................ 27
6.1
Negotiation Extension Document ...................................................... 28
6.2
Renegotiation Extension Document .................................................. 29
7
Negotiation Port Types and Operation ..................................................... 30
7.1
Simple Client-Server Negotiation....................................................... 31
7.2
Bilateral Negotiation with Asymmetric Agreement Layer ................... 32
7.3
Renegotiation of Existing Agreements............................................... 33
7.4
Negotiation Factory Port Type ........................................................... 35
7.4.1
Operation wsag-neg:InitiateNegotiation ...................................... 35
7.4.1.1
Input...................................................................................... 35
7.4.1.2
Result ................................................................................... 36
7.4.1.3
Faults .................................................................................... 36
7.5
Negotiation Port Type ........................................................................ 37
7.5.1
Operation wsag-neg:Negotiate ................................................... 37
7.5.1.1
Input...................................................................................... 37
7.5.1.2
Result ................................................................................... 37
7.5.1.3
Faults .................................................................................... 38
7.5.2
Operation wsag-neg:Terminate................................................... 38
graap-wg@ggf.org 2
GFD-R-P.193 October 10, 2011
GRAAP-WG
7.5.2.1
Input...................................................................................... 38
7.5.2.2
Result ................................................................................... 38
7.5.2.3
Faults .................................................................................... 38
7.5.3
Resource Property wsag-neg:NegotiationContext ...................... 38
7.5.4
Resource Property wsag-neg:NegotiableTemplate .................... 38
7.5.5
Resource Property wsag-neg:NegotiationOffer .......................... 38
7.6
Offer Advertisement Port Type .......................................................... 39
7.6.1
Operation wsag-neg:Advertise .................................................... 39
7.6.1.1
Input...................................................................................... 39
7.6.1.2
Result ................................................................................... 39
7.6.1.3
Faults .................................................................................... 39
8
Contributors .............................................................................................. 40
9
Acknowledgements .................................................................................. 41
10
Security Considerations ......................................................................... 42
11
Intellectual Property Statement .............................................................. 43
12
Disclaimer............................................................................................... 44
13
Full Copyright Notice .............................................................................. 45
14
References ............................................................................................. 46
15
Appendix 1: XML Schema and WSDL ................................................... 47
15.1
Negotiation Types Schema.............................................................. 47
15.2
Negotiation Factory WSDL .............................................................. 53
15.3
Negotiation WSDL ........................................................................... 56
15.4
Advertisement WSDL ...................................................................... 61
15.5
Example for specifying negotiation metadata .................................. 64
GFD-R-P.193 October 10, 2011
GRAAP-WG
1 Introduction
In distributed service-oriented systems different services are offered by
service providers and used by service consumers. Service consumers use
these services as they are or compose (mash) them in order to provide new
services with added functionality. Since services are often acquired on
demand, service consumers need to predict the behavior of these services
before they actually acquire them. This problem leads to a situation in which
service consumers do not only have functional requirements for a service, but
also have demands regarding the non-functional service properties, such as
the average response time of a service, the service availability, or the average
recovery time in case of failure. They need standardized ways of defining the
required service properties, and guarantees of the service provider to deliver
a service with the defined quality, capabilities to monitor the service properties
at provisioning time, and enforcement mechanisms in case a service was not
provided with the agreed service quality. Service level agreements are one
approach to solve this problem. They are bilateral contracts between a service
provider and a service consumer that describe the service to be provided and
define guarantees regarding the quality this service is provided with.
graap-wg@ogf.org 4
GFD-R-P.193 October 10, 2011
GRAAP-WG
relationship between a service consumer and a service provider in order to
dynamically exchange information with the goal of creating a valid agreement
offer that subsequently leads to an agreement. As such, differentiating
between negotiation and renegotiation, negotiation and the subsequent
agreement creation in general takes place prior to service execution, while
renegotiation most likely is a reaction of one of the parties on the actual
performance of the service execution. Process-wise, (re)negotiation
processes are created by a Negotiation Factory, which implements the
Negotiation Factory Port Type. A negotiation process is represented by a
Negotiation Instance, which implements the Negotiation Port Type and
optionally the Advertisement Port Type. The negotiation port type defines the
basic properties of a negotiation instance, a method for exchanging offers and
counter offers, and a method to terminate the negotiation process. The
advertisement port type additionally specifies a method to notify a negotiation
participant of a specific offer. The basic components involved in a negotiation
process are depicted in Figure 1.
graap-wg@ogf.org 5
GFD-R-P.193 October 10, 2011
GRAAP-WG
1.1 Goals and Requirements
The WS-Agreement Negotiation defines a set of requirements that are
covered by the specification as well as a set of non-goals that are out of
scope. The requirements and non-goals are described below:
Requirements
graap-wg@ogf.org 6
GFD-R-P.193 October 10, 2011
GRAAP-WG
Out of Scope
Negotiation
Negotiation is a process between an agreement initiator and an agreement
responder to reach an acceptable agreement offer from an initial agreement
template. Agreement offer negotiation is a non-binding, bi-lateral process that
comprises exchange of information in order to find a consensus for
acceptable agreement offers.
Renegotiation
Renegotiation is a process between an agreement initiator and an agreement
responder to reach an acceptable agreement offer in order to alter an existing
agreement. Altering an existing agreement is achieved by creating a
renegotiated agreement, which supersedes the original agreement. Hence, an
existing agreement can only be renegotiated once, but the process can be
repeated with the new (superseding) agreement. The number of such
renegotiations is not limited. Renegotiation of an existing agreement may
have direct impact on the provisioning of active services.
Negotiation Offer
A negotiation offer is a non-binding proposal for an agreement offer made by
one negotiation party to another. Negotiation offers are used to dynamically
exchange information in order to reach an acceptable agreement offer. Zero
or more negotiation offers may precede a binding agreement offer as defined
in the WS-Agreement specification. Negotiation offers describe the services of
a SLA, the quality of service properties, and the associated guarantees.
Negotiation offers may also contain negotiation constraints that restrict the
negotiable terms and their value spaces.
Negotiable Template
Negotiable templates are provided by a negotiation participant in the context
of a particular (re)negotiation process. They define which types of agreement
offers can be negotiated, the basic structure of these offers, and the basic
graap-wg@ogf.org 7
GFD-R-P.193 October 10, 2011
GRAAP-WG
constraints that each offer must adhere to.
Negotiated Offer
The term negotiated offer describes an offer that has reached the acceptable
state. Negotiated offers can be used as valid agreement offers in order to
create new agreements or to replace existing agreements.
Agreement Initiator
The agreement initiator is the entity in a negotiation process that creates an
agreement based on a negotiated offer. This role corresponds to the
agreement initiator role as defined in the WS-Agreement specification.
Agreement Responder
The agreement responder is the entity in a negotiation process that responds
to an agreement creation request based on a negotiated offer. This role
corresponds to the agreement responder role as defined in the WS-
Agreement specification.
Negotiation Initiator
The negotiation initiator is the party that initiates the negotiation process. It
acts on behalf of the agreement initiator or the agreement responder. The
negotiation initiator invokes the negotiation responder’s initiateNegotiation
method, which is defined in this specification.
Negotiation Responder
The negotiation responder is the party in a negotiation process that responds
to an initiateNegotiation request. It acts on behalf of the agreement initiator or
the agreement responder. The negotiation responder implements the
NegotiationFactory and Negotiation port types defined in this specification.
Negotiation Participant
The negotiation participant is an entity that takes part in the negotiation
process. The negotiation participant is either the negotiation initiator or the
negotiation responder.
Negotiation Context
The negotiation context defines the type of the negotiation, identifies the
negotiation participants, their roles and responsibilities, and optionally
specifies additional domain specific negotiation parameters, such as
maximum of negotiation rounds or expiration time.
graap-wg@ogf.org 8
GFD-R-P.193 October 10, 2011
GRAAP-WG
Negotiation Constraints
The negotiation constraints provide a method to control the negotiation
process. A negotiation participant uses negotiation constraints in order to
define structure and value spaces for compliant negotiation counter offers.
Negotiation constraints are therefore used to express the requirements of a
negotiation participant.
1.3 Namespaces
The following is an example for XML or other code:
http://schemas.ogf.org/graap/2009/11/ws-agreement-negotiation (code)
2 Use Cases
WS-Agreement Negotiation supports a large set of use cases. A typical
negotiation example is the reservation of computational resources, which is
described below.
graap-wg@ogf.org 9
GFD-R-P.193 October 10, 2011
GRAAP-WG
Description Language (WSDL). The portal application provides additional
methods to manage the job submission service, such as updating the profiles
of registered users, querying the current resource availability, querying usage
data for the provided resources, deploying a new application, or managing the
storage on the resources.
graap-wg@ogf.org 10
GFD-R-P.193 October 10, 2011
GRAAP-WG
purchase the remaining capacity somewhere else. The process of filling in all
required fields of a negotiation offer may take multiple rounds.
At a later point in time, the customer may recognize that it requires more or
less resources to efficiently complete its computation. In that case it may start
a renegotiation of the agreement in order to scale the resources up or down,
according to its requirements.
Each negotiation offer has an associated state, which reflects the view of the
party that created that particular offer with respect to its acceptability. The
possible state transitions that may occur when a counter offer is created for a
particular offer are described in section 5.3.
graap-wg@ogf.org 11
GFD-R-P.193 October 10, 2011
GRAAP-WG
A negotiation process may include the exchange of negotiation offers that are
based on different templates. A negotiation process can therefore comprise
multiple negotiation trees. In the following example illustrates the concept of a
negotiation tree in detail.
graap-wg@ogf.org 12
GFD-R-P.193 October 10, 2011
GRAAP-WG
The terms negotiation offer and negotiation counter offer both describe
specific negotiation offers that are exchanged in a negotiation process. The
distinction between a negotiation offer and a counter offer depends on the
particular view of a negotiation participant. A negotiable template (the root
node of a negotiation tree) is always considered as initial negotiation offer. All
negotiation offers that are created based on this template are therefore
counter offers to this template.
If a negotiation offer with OID-1 was created based on a template T1, then
OID-1 is a counter offer to T1. If subsequently a negotiation offer OID-2 is
created based on offer OID-1, then OID-2 is a counter offer to OID-1. In case
the negotiation responder provides the negotiable template T1, it provides an
initial negotiation offer to the negotiation initiator. The initiator receives the
template T1 and creates a counter offer with OID-1 based on this template.
This counter offer is sent to the negotiation responder. From the negotiation
responder’s point of view, OID-1 is a new negotiation offer from the
negotiation initiator. The responder therefore creates a counter offer with OID-
2. This process of creating counter offers based on previously received
negotiation offers with the different viewpoints is depicted in Figure 3.
graap-wg@ogf.org 13
GFD-R-P.193 October 10, 2011
GRAAP-WG
3.2 Layered architectural Model
The WS-Agreement Negotiation layered model consists of three layers, the
negotiation layer, the agreement layer and the service layer. These layers are
depicted in Figure 4. There is a clear separation between these layers. The
negotiation layer sits on top of the agreement layer. It is therefore decoupled
from the agreement layer and the service layer. By that, the negotiation layer
may change independently of the agreement layer and can be replaced by
another negotiation layer that might be better suited for a specific negotiation
scenario.
Negotiation layer
The negotiation layer provides a protocol and a language to negotiate
negotiation offers and counter offers and to create agreements based on
negotiated offers. The negotiation process comprises the exchange of
negotiation offers and counter offers. Negotiation offers, as defined in this
specification, are non-binding by nature. They do not comprise any promise of
the agreement responder to create an agreement based on a negotiated
offer. They only indicate the willingness of the two negotiating parties to
subsequently create an agreement. However, it is possible to define
languages that can be used in conjunction with this specification in order to
realize binding negotiation processes.
Agreements based on negotiated offers are either created by calling the
createAgreement or createPendingAgreement operation on the agreement
responder’s Agreement Factory port type, which is part of the responder’s
agreement layer.
graap-wg@ogf.org 14
GFD-R-P.193 October 10, 2011
GRAAP-WG
Agreement layer
The Agreement layer provides the basic functionality to create and monitor
agreements. It comprises the port types defined in the WS-Agreement
specification. For details refer to the WS-Agreement specification [GDF192].
Service layer
At the service layer the actual service defined by an agreement is provided.
This service may or may not be a web service. Moreover, it may consist of
multiple services. A resource provisioning service may for example comprise
the provisioning of the specified resources and a monitoring service for the
provided resources. The services on the service layer are governed by the
agreement layer.
4 Negotiation
The negotiation service defines a service instance that is used by the
negotiation participants to dynamically exchange information in order to reach
a common understanding of a valid agreement offer. During the negotiation
process the participants exchange negotiation offers in order to indicate their
negotiation goals and requirements. A negotiation instance may be limited in
its lifetime or the maximum negotiation rounds. These limitations are defined
in the negotiation context.
<wsag-neg:NegotiationContext>
<wsag-neg:NegotiationType>
wsag-neg:NegotiationType
</wsag-neg:NegotiationType>
<wsag-neg:ExpirationTime>
xsd:dateTime
</wsag-neg:ExpirationTime> ?
<wsag-neg:NegotiationInitiator>
xsd:anyType
</wsag-neg:NegotiationInitiator> ?
<wsag-neg:NegotiationResponder>
xsd:anyType
</wsag-neg:NegotiationResponder> ?
graap-wg@ogf.org 15
GFD-R-P.193 October 10, 2011
GRAAP-WG
<wsag-neg:AgreementResponder>
wsag-neg:NegotiationRoleType
</wsag-neg:AgreementResponder>
<wsag-neg:AgreementFactoryEPR>
wsa:EndpointReferenceType
</wsag-neg:AgreementFactoryEPR>
<xsd:any /> *
</wsag-neg:NegotiationContext>
/wsag-neg:NegotiationContext
This is the outermost document tag that defines the context of a negotiation.
The negotiation context defines the type of the negotiation and the roles of the
negotiation participants.
/wsag-neg:NegotiationContext/wsag-neg:NegotiationType
This REQUIRED element specifies the type of the negotiation process and
may contain optional, domain-specific parameters. The negotiation type can
either be Negotiation or Renegotiation.
/wsag-neg:NegotiationContext/wsag-neg:ExpirationTime
This OPTIONAL element specifies the lifetime of the negotiation instance. If
specified, the negotiation instance is accessible until the specified time. After
the negotiation lifetime has expired, this instance is no longer accessible.
/wsag-neg:NegotiationContext/wsag-neg:NegotiationInitiator
This OPTIONAL element identifies the initiator of the negotiation process. The
negotiation initiator element can be an URI or an Endpoint Reference that can
be used to contact the initiator. It can also be a distinguished name identifying
the initiator in a security context.
/wsag-neg:NegotiationContext/wsag-neg:NegotiationResponder
This OPTIONAL element identifies the party that responds to the
initiateNegotiation request. The negotiation responder implements the
NegotiationFactory port type defined in this specification. This element can be
an URI or an Endpoint Reference that can be used to contact the negotiation
responder. It can also be a distinguished name identifying the negotiation
graap-wg@ogf.org 16
GFD-R-P.193 October 10, 2011
GRAAP-WG
responder in a security context.
/wsag-neg:NegotiationContext/wsag-neg:AgreementResponder
This REQUIRED element identifies the party in the negotiation process that
acts on behalf of the agreement responder. It can either take the value
NegotiationInitiator or NegotiationResponder. The default value is
NegotiationResponder. The party identified as agreement responder MUST
provide a reference to the AgreementFactory (PendingAgreementFactory) in
the negotiation context within the AgreementFactoryEPR element.
/wsag-neg:NegotiationContext/wsag-neg:AgreementFactoryEPR
This REQUIRED element identifies the endpoint reference of the agreement
factory that is used to create agreements based on the negotiated agreement
offers. After an agreement offer was successfully negotiated, the party
identified as agreement initiator MAY create a new agreement with the
referenced agreement factory.
/wsag-neg:NegotiationContext/{any}
Additional child elements MAY be specified to provide additional information
but MUST NOT contradict the semantics of the parent element; if an element
is not recognized, it SHOULD be ignored.
<wsag-neg:NegotiationType>
<wsag-neg:Negotiation>
<xsd:any /> *
</wsag-neg:Negotiation> |
<wsag-neg:Renegotiation>
<wsag-neg:ResponderAgreementEPR>
wsa:EndpointReferenceType
</wsag-neg:ResponderAgreementEPR>
<wsag-neg:InitiatorAgreementEPR>
wsa:EndpointReferenceType
</wsag-neg:InitiatorAgreementEPR> ?
<xsd:any /> *
graap-wg@ogf.org 17
GFD-R-P.193 October 10, 2011
GRAAP-WG
</wsag-neg:Renegotiation>
</wsag-neg:NegotiationType>
/wsag-neg:NegotiationType
This is the outermost element that encapsulates the negotiation type. It MUST
either contain a Negotiation or Renegotiation element.
/wsag-neg:NegotiationType/wsag-neg:Negotiation
The existence of this element indicates that the negotiation process
comprises the negotiation of agreement offers.
/wsag-neg:NegotiationType/wsag-neg:Negotiation/{any}
Additional elements MAY be used to carry critical extensions which control
additional negotiation mechanisms. All extensions are considered mandatory,
i.e. the responder MUST return a fault if any extension is not understood or
the responder is unwilling to support the extension. The meaning of
extensions and how to obey them is domain-specific and MUST be
understood from the extension content itself.
/wsag-neg:NegotiationType/wsag-neg:Renegotiation
The existence of this element indicates that the negotiation process
comprises the renegotiation of an existing agreement. Renegotiation of
existing agreements is again a bilateral process between an agreement
initiator and an agreement responder. In both symmetric and asymmetric
layout the wsag-neg:Renegotiation element MUST include an endpoint
reference to the responder agreement that is renegotiated. In a symmetric
layout of the agreement port types the wsag-neg:Renegotiation element MAY
also contain an endpoint reference to the initiator agreement. Additionally, the
wsag-neg:Renegotiation element MAY contain domain specific data that can
be used to control the negotiation process in a domain-specific way.
/wsag-neg:NegotiationType/wsag-neg:Renegotiation/wsag-
neg:ResponderAgreementEPR
This REQUIRED element identifies the agreement responder’s copy of the
agreement that is renegotiated. The service identified by this endpoint
reference MUST implement the Agreement port type. Once a renegotiated
agreement is created, this agreement instance must change its state to
Completed.
/wsag-neg:NegotiationType/wsag-neg:Renegotiation/wsag-
neg:InitiatorAgreementEPR
This OPTIONAL element identifies the agreement initiator’s copy of the
agreement that is renegotiated. In a symmetrical deployment of the
agreement layer, the agreement initiator and responder host an instance of
the agreement. If a renegotiated agreement is created, both agreement
instances must change their state to Completed. The service identified by this
graap-wg@ogf.org 18
GFD-R-P.193 October 10, 2011
GRAAP-WG
endpoint reference MUST implement the Agreement port type.
/wsag-neg:NegotiationType/wsag-neg:Renegotiation/{any}
Additional elements MAY be used to carry critical extensions, which control
augmented renegotiation mechanisms or creation mechanisms for
renegotiated agreements. All extensions are considered mandatory, i.e. the
agreement responder MUST return a fault if any extension is not understood
or the responder is unwilling to support this extension. The meaning of the
extensions and how to obey them is domain-specific and MUST be
understood from the extension content itself.
5 Negotiation Offer
As mentioned before, negotiation comprises the dynamic exchange of
information in form of negotiation offers and counter offers. An initial
negotiation offer is created on the basis of an agreement template, while
counter offers are created on the basis of negotiation offers received by a
negotiation participant. The structure of a negotiation offer is basically the
same as the structure of an agreement. Agreements are defined in the section
Agreement Structure of the WS-Agreement specification. However,
negotiation offers contain additional elements, namely the Negotiation Offer
Context and Negotiation Constraints.
graap-wg@ogf.org 19
GFD-R-P.193 October 10, 2011
GRAAP-WG
inherits the agreement name, agreement context, and the agreement terms.
Negotiation Constraints define restrictions for structure and values of
negotiation counter offers. They must hold true for every counter offer. If this
is not the case, the counter offer is rejected. Negotiation Constraints MAY
change during the advance of a negotiation process. If, for example, the
negotiation initiator chooses one specific service term out of a predefined set
(e.g. in an ExactlyOne tag), the negotiation responder may adopt this choice
by changing the negotiation constrains in a counter offer.
<wsag-neg:NegotiationOffer wsag-neg:OfferId="xs:string">
<wsag-neg:NegotiationOfferContext>
wsag-neg:NegotiationOfferContextType
</wsag-neg:NegotiationOfferContext>
<wsag:Name>
xs:string
</wsag:Name> ?
<wsag:Context>
wsag:AgreementContextType
</wsag:Context>
<wsag:Terms>
wsag:TermCompositorType
</wsag:Terms>
<wsag-neg:NegotiationConstraints>
wsag:ConstraintSectionType
</wsag-neg:NegotiationConstraints>
</wsag-neg:NegotiationOffer>
graap-wg@ogf.org 20
GFD-R-P.193 October 10, 2011
GRAAP-WG
The following section describes the attributes and tags of a Negotiation Offer:
/wsag-neg:NegotiationOffer
This is the outermost document tag which encapsulates the entire negotiation
offer.
/wsag-neg:NegotiationOffer/@wsag-neg:OfferId
The MANDATORY OfferId is the identifier of a specific Negotiation Offer. It
MUST be unique for both parties in the context of a negotiation.
/wsag-neg:NegotiationOffer/wsag-neg:NegotiationOfferContext
The REQUIRED element Negotiation Offer Context contains the metadata
associated with a negotiation offer. The negotiation offer context contains the
id of the originating negotiation offer, its expiration time, and its state.
Moreover, the negotiation offer context MAY include domain specific
extensions.
/wsag-neg:NegotiationOffer/wsag:Name
This OPTIONAL element is the name of the agreement to negotiate. It is
described in the section “Agreement Structure” of the WS-Agreement
specification.
/wsag-neg:NegotiationOffer/wsag:Context
This REQUIRED element of a negotiation offer specifies the context of the
agreement to negotiate. The agreement context SHOULD include parties to
an agreement. Additionally, it contains various metadata about the agreement
such as the duration of the agreement, and optionally, the template name
from which the agreement is created. The structure of the agreement context
is described in the section Agreement Context of the WS-Agreement
specification.
/wsag-neg:NegotiationOffer/wsag:Terms
This REQUIRED element specifies the terms of the agreement that is
negotiated. Both the structure of and the values of the agreement terms can
be subject of the negotiation process. The agreement terms are described in
the WS-Agreement specification in the section Agreement Structure.
/wsag-neg:NegotiationOffer/wsag-neg:NegotiationConstraints
This REQUIRED element defines constraints on the structure and values that
the agreement terms may take in subsequent negotiation offers. The
Negotiation Constraints MUST hold true in any counter offer. Negotiation
constraints are of the type wsag-neg:NegotiationConstraintSectionType. A
negotiation constraint section MAY contain zero or more negotiation item
constraints and zero or more free form constraints.
/wsag-neg:NegotiationConstraints/wsag-neg:Item
This OPTIONAL element defines a negotiation item constraint. It extends the
wsag:OfferItemType which is specified in the section Creation Constraints of
the WS-Agreement specification. A negotiation item constraint additionally
defines two attributes, Type and Importance.
graap-wg@ogf.org 21
GFD-R-P.193 October 10, 2011
GRAAP-WG
/wsag-neg:NegotiationConstraints/wsag-neg:Item/wsag-neg:Type
This REQUIRED attribute defines the type of the negotiation item constraint.
Valid values are Required and Optional. If a required negotiation item
constraint is violated by a counter offer, this counter offer MUST be rejected. If
an optional negotiation item constraint is violated by a counter offer, this item
constraint MAY be ignored, depending on the domain specific negotiation
strategy. The default value of this attribute is Required.
/wsag-neg:NegotiationConstraints/wsag-neg:Item/wsag-neg:Importance
This OPTIONAL attribute defines the importance of a negotiation item
constraint. It is intended to be used in conjunction with optional negotiation
item constraints. Implementation MAY use this attribute in order to specify the
importance of different optional negotiation item constraints. It is therefore
possible to implement negotiation strategies that minimize the overall utility of
violated optional constraints.
/wsag-neg:NegotiationConstraints/wsag-neg:Constraint
This OPTIONAL element defines a free-form negotiation constraint analog to
free-form constrains as specified in the WS-Agreement specification.
<wsag-neg:NegotiationOfferContext>
<wsag-neg:CounterOfferTo>
xs:string
</wsag-neg:CounterOfferTo>
<wsag:ExpirationTime>
xs:dateTime
</wsag:ExpirationTime> ?
<wsag:Creator>
wsag-neg:NegotiationRoleType
</wsag:Creator>
<wsag-neg:State>
wsag-neg:NegotiationOfferStateType
</wsag-neg:State>
graap-wg@ogf.org 22
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xsd:any /> *
</wsag-neg:NegotiationOfferContext>
/wsag-neg:NegotiationOfferContext
This is the outermost tag that encapsulates the entire
NegotiationOfferContext.
/wsag-neg:NegotiationOfferContext/wsag-neg:CounterOfferTo
The MANDATORY CounterOfferTo identifies the negotiation offer which was
used to create this counter offer. When a negotiation offer was used to create
this offer, the CounterOfferTo specifies the OfferId of the originating
negotiation offer. When an agreement template was used to create this offer,
the CounterOfferTo refers to the TemplateId of the originating template.
/wsag-neg:NegotiationOfferContext/wsag-neg:ExpirationTime
This REQUIRED element defines the lifetime of a negotiation offer. A
negotiation participant MAY reference a negotiation offer during its lifetime
and create counter offers for it.
/wsag-neg:NegotiationOfferContext/wsag-neg:Creator
This REQUIRED element identifies the party that created this negotiation
offer. Valid values for this element are NegotiationInitiator and
NegotiationResponder.
/wsag-neg:NegotiationOfferContext/wsag-neg:State
This REQUIRED element contains the state of a negotiation offer. The
negotiation offer state indicates whether further negotiation is required.
Negotiation offers must be in the ACCEPTABLE state in order to create an
agreement based on it. Each negotiation offer state MAY contain domain
specific extensions. E.g. if an offer was rejected for some reason, the
REJECTED state may contain information on why this offer was rejected. This
information can be used to optimize the negotiation process.
/wsag-neg:NegotiationOfferContext/{any}
Additional child elements MAY be specified to provide additional information,
but the semantic of these elements MUST NOT contradict the semantics of
the parent element; if an element is not recognized, it SHOULD be ignored.
graap-wg@ogf.org 23
GFD-R-P.193 October 10, 2011
GRAAP-WG
Advisory State
The ADVISORY state identifies negotiation offers which have no further
obligations associated. Offers in the ADVISORY state usually contain
elements that are currently not specified. Therefore, these offers require
further negotiation.
Solicited State
Solicited offers indicate that a negotiation participant wants to converge the
negotiation process. The SOLICITED state bears no obligations for an offer,
but it requires that counter offers be either in the ACCEPTABLE or the
REJECTED state.
Acceptable State
The ACCEPTABLE state indicates that a negotiation participant is willing to
accept a negotiation offer as is. All details of a negotiation offer are specified
and no further negotiation is required. However, since the negotiated offers
are non-binding, there is no guarantee that a subsequent agreement is
created. Augmented negotiation protocols may be created based on this
specification to address binding negotiations.
Rejected State
If a negotiation offer is rejected, a counter offer is sent back to the inquiring
party with the REJECTED state. All terms SHOULD be the same as in the
original offer the counter offer refers to. The counter offer MAY contain a
domain specific reason why it was rejected. Negotiation offers that are
marked as rejected MUST NOT be used to create an agreement. However,
they MAY be used to continue the negotiation process by taking into account
the reason for rejecting the offer.
graap-wg@ogf.org 24
GFD-R-P.193 October 10, 2011
GRAAP-WG
Extension of Negotiation Offer States
Each state element MAY contain additional child elements to provide domain
specific information. This information can be used to optimize the negotiation
process. If this information is not understood, it SHOULD be ignored.
graap-wg@ogf.org 25
GFD-R-P.193 October 10, 2011
GRAAP-WG
graap-wg@ogf.org 26
GFD-R-P.193 October 10, 2011
GRAAP-WG
graap-wg@ogf.org 27
GFD-R-P.193 October 10, 2011
GRAAP-WG
original agreement(s) MUST change to Completed.
<wsag-neg:NegotiationExtension>
<wsag-neg:ResponderNegotiationEPR>
wsa:EndpointReferenceType
</wsag-neg:ResponderNegotiationEPR> ?
<wsag-neg:InitiatorNegotiationEPR>
wsa:EndpointReferenceType
</wsag-neg:InitiatorNegotiationEPR> ?
<wsag-neg:NegotiationOfferContext>
wsag-neg:NegotiationOfferContextType
</wsag-neg:NegotiationOfferContext>
<xsd:any /> *
</wsag-neg:NegotiationExtension>
/wsag-neg:NegotiationExtension
This is the outermost element of a negotiation extension document. This
document SHOULD be passed to an agreement factory (pending agreement
factory) as a critical extension in the createAgreement
(createPendingAgreement) method.
/wsag-neg:NegotiationExtension/wsag-neg:ResponderNegotiationEPR
This OPTIONAL element specifies the endpoint reference to the negotiation
responder’s negotiation instance. Implementations MAY use this reference to
identify the negotiation process in which an agreement offer was negotiated.
/wsag-neg:NegotiationExtension/wsag-neg:InitiatorNegotiationEPR
This OPTIONAL element specifies the endpoint reference to the negotiation
initiator’s negotiation instance. Implementations MAY use this reference to
identify the negotiation process in which an agreement offer was negotiated.
graap-wg@ogf.org 28
GFD-R-P.193 October 10, 2011
GRAAP-WG
/wsag-neg:NegotiationExtension/wsag-neg:NegotiationOfferContext
This REQUIRED element specifies the negotiation offer context for this
agreement offer. It MUST refer to a valid negotiation offer where this
agreement offer is a counter offer to.
/wsag-neg:NegotiationExtension/{any}
This OPTIONAL element contains domain specific extensions that can be
used to realize augmented negotiation mechanisms.
<wsag-neg:RenegotiationExtension>
<wsag-neg:ResponderAgreementEPR>
wsa:EndpointReferenceType
</wsag-neg:ResponderAgreementEPR>
<wsag-neg:InitiatorAgreementEPR>
wsa:EndpointReferenceType
</wsag-neg:InitiatorAgreementEPR> ?
<wsag-neg:ResponderNegotiationEPR>
wsa:EndpointReferenceType
</wsag-neg:ResponderNegotiationEPR>
<wsag-neg:InitiatorNegotiationEPR>
wsa:EndpointReferenceType
</wsag-neg:InitiatorNegotiationEPR> ?
<wsag-neg:NegotiationOfferContext>
wsag-neg:NegotiationOfferContextType
</wsag-neg:NegotiationOfferContext>
<xsd:any /> *
</wsag-neg:RenegotiationExtension>
graap-wg@ogf.org 29
GFD-R-P.193 October 10, 2011
GRAAP-WG
/wsag-neg:RenegotiationExtension
This is the outermost element of a Renegotiation Extension document. This
document is passed to an agreement factory (pending agreement factory) as
a critical extension in a createAgreement call (createPendingAgreement call).
An agreement factory (pending agreement factory) MUST be able to
understand all critical extensions that are contained in a createAgreement call
(createPendingAgreement call). If this is not the case, the factory MUST
return an error.
/wsag-neg:RenegotiationExtension/wsag-neg:ResponderAgreementEPR
This REQUIRED element specifies the endpoint reference to the original
instance of the responder agreement. If an Agreement Responder decides to
accept an offer for a renegotiated agreement, the state of this agreement
MUST change to Completed.
/wsag-neg:RenegotiationExtension/wsag-neg:InitiatorAgreementEPR
This OPTIONAL element specifies the endpoint reference to the original
instance of the initiator agreement. This element is used in symmetric layouts
of the agreement port type. If an Agreement Responder decides to accept an
offer for a renegotiated agreement, the state of this agreement instance
MUST change to Completed.
/wsag-neg:RenegotiationExtension/wsag-neg:ResponderNegotiationEPR
This REQUIRED element specifies the endpoint reference to the negotiation
responder’s negotiation instance. Implementations use this reference to
identify the negotiation process in which the agreement offer was negotiated.
/wsag-neg:RenegotiationExtension/wsag-neg:InitiatorNegotiationEPR
This OPTIONAL element specifies the endpoint reference to the negotiation
initiator’s negotiation instance. Implementations use this reference to identify
the negotiation process in which an agreement offer was negotiated.
/wsag-neg:NegotiationExtension/wsag-neg:NegotiationOfferContext
This REQUIRED element specifies the negotiation offer context for this
agreement offer. It MUST refer to a valid negotiation offer which corresponds
to this agreement offer.
/wsag-neg:RenegotiationExtension/{any}
This OPTIONAL element contains domain specific extensions that can be
used to realize augmented renegotiation mechanisms.
graap-wg@ogf.org 30
GFD-R-P.193 October 10, 2011
GRAAP-WG
In this scenario, the server has a passive role. It is not in control of the
negotiation process, i.e. it only reacts to negotiation requests. The negotiation
process is depicted in Figure 9.
graap-wg@ogf.org 31
GFD-R-P.193 October 10, 2011
GRAAP-WG
7.2 Bilateral Negotiation with Asymmetric Agreement Layer
In a bilateral negotiation both parties actively participate in the negotiation
process. For that reason both parties implement the WS-Agreement
NegotiationFactory and Negotiation port types. A bilateral negotiation process
is initiated as follows. The negotiation initiator creates a new negotiation
instance. This instance is a web service resource that implements the WS-
Agreement Negotiation port type. The negotiation initiator then invokes the
initiateNegotiation method of the negotiation responder. The
initiateNegotiation request includes an endpoint reference to the negotiation
instance created beforehand. Moreover, it contains the negotiation context
that defines the roles of each party participating in the negotiation process.
The negotiation context defines for example which party acts as agreement
initiator and which party acts as agreement responder. Once the negotiation
instance is created, the negotiation context is fixed and the roles and
responsibilities of the negotiation participants do not change anymore.
graap-wg@ogf.org 32
GFD-R-P.193 October 10, 2011
GRAAP-WG
graap-wg@ogf.org 33
GFD-R-P.193 October 10, 2011
GRAAP-WG
The layout of the agreement layer may either be symmetric or asymmetric. A
detailed description of symmetric deployments of the agreement port type is
given in the section Port Types and Operations of the WS-Agreement
specification [GDF192]. Figure 11 shows a symmetric deployment of the
negotiation and agreement port types. In this scenario, the initiator of the
original agreement becomes the agreement responder for the renegotiated
agreement. The roles of the agreement initiator and responder therefore
change in the renegotiated agreement and must be adopted accordingly.
graap-wg@ogf.org 34
GFD-R-P.193 October 10, 2011
GRAAP-WG
7.4 Negotiation Factory Port Type
7.4.1.1 Input
<wsag-neg:InitiateNegotiationInput>
<wsag-neg:NegotiationContext>
</wsag-neg:NegotiationContext>
<wsag-neg:InitiatorNegotiationEPR>
<wsa:EndpointReference>
wsa:EndpointReferenceType
</wsa:EndpointReference>
</wsag-neg:InitiatorNegotiationEPR> ?
<wsag-neg:NoncriticalExtension>
<xs:any> … </xs:any>
</wsag-neg:NoncriticalExtension> *
<xs:any> … </xs:any> *
</wsag-neg:InitiateNegotiationInput>
/wsag-neg:InitiateNegotiationInput
This is the outermost tag that encapsulates the input of an initiateNegotiation
request.
/wsag-neg:InitiateNegotiationInput/wsag-neg:NegotiationContext
This REQUIRED element defines the context of the negotiation that is
initiated. The negotiation context applies to the whole lifetime of the
negotiation process.
/wsag-neg:InitiateNegotiationInput/wsag-neg:InitiatorNegotiationEPR
This OPTIONAL element identifies the endpoint of a Negotiation instance
provided by the initiator of the negotiation. This endpoint is used in symmetric
deployment scenarios of the Negotiation port type in order to initiate a bilateral
negotiation.
graap-wg@ogf.org 35
GFD-R-P.193 October 10, 2011
GRAAP-WG
/wsag-neg:InitiateNegotiationInput/wsag-neg:NoncriticalExtensions
Additional elements MAY carry non-critical extensions which control
augmented negotiation and agreement creation mechanisms. The responder
MAY ignore non-critical extensions and behave as if they were not present. A
responder SHOULD obey non-critical extensions if it is able and willing. The
meaning of extensions and how to obey them is domain-specific and MUST
be understood from the extension content itself.
/wsag-neg:InitiateNegotiationInput/xs:any##other
These optional elements MAY be used to carry critical extensions which
control additional (re)negotiation and agreement creation mechanisms. All
extensions are considered mandatory, i.e. the responder MUST return a fault
if any extension is not understood or the responder is unwilling to support the
extension. The meaning of extensions and how to obey them is domain-
specific and MUST be understood from the extension content itself.
7.4.1.2 Result
<wsag-neg:InitiateNegotiationOutput>
<wsag-neg:CreatedNegotiationEPR>
wsa:EndpointReferenceType
</wsag-neg:CreatedNegotiationEPR>
<xs:any> … </xs:any> *
</wsag-neg:InitiateNegotiationOutput>
/wsag-neg:InitiateNegotiationInput/wsag-neg:CreatedNegotiationEPR
This element is the EPR of the newly created negotiation. The created
negotiation instance MUST bear the same context as provided in the input.
This element MUST appear in an initiate negotiation response.
/wsag-neg:InitiateNegotiationInput/{any}
The response MAY carry additional domain specific elements that are
associated with the corresponding extensions of the input message.
7.4.1.3 Faults
A fault response indicates that the request for creating a negotiation was
rejected and may also include domain specific reasons.
graap-wg@ogf.org 36
GFD-R-P.193 October 10, 2011
GRAAP-WG
7.5 Negotiation Port Type
7.5.1.1 Input
<wsag-neg:NegotiateInput>
<wsag-neg:NegotiationOffer>
wsag-neg:NegotiationOfferType
</wsag-neg:NegotiationOffer> +
<xs:any> … </xs:any> *
</wsag-neg:NegotiateInput>
/wsag-neg:NegotiateInput/wsag-neg:NegotiationOffer
The input of the negotiation operation MUST contain at least one negotiation
offer. A negotiation offer must reference one template provided by the
agreement factory specified in the negotiation context.
/wsag-neg:NegotiateInput/{any}
The Negotiate input message MAY contain optional elements to control the
negotiation process in a domain specific way. A responder MAY choose to
ignore this content if it does not understand it or it is not willing to support the
extensions. If responder is willing and able to understand these extensions it
SHOULD support them.
7.5.1.2 Result
<wsag-neg:NegotiateOutput>
<wsag-neg:NegotiationCounterOffer>
wsag-neg:NegotiationOfferType
</wsag-neg:NegotiationCounterOffer> *
<xs:any> … </xs:any> *
</wsag-neg:NegotiateOutput>
/wsag-neg:NegotiateOutput/wsag-neg:NegotiationCounterOffer
This element contains the created counter offers. Each counter offer SHOULD
refer to an offer provided in the input message. For each provided offer zero
or more counter offer SHOULD be created. The responder MUST NOT create
any counter offer for offers that are in rejected state.
graap-wg@ogf.org 37
GFD-R-P.193 October 10, 2011
GRAAP-WG
/wsag-neg:NegotiateOutput/{any}
The Negotiate output message MAY contain optional elements in order to
include domain specific content to control the negotiation process. These
extensions are in control of the extension provided in the input message.
7.5.1.3 Faults
A fault indicates that negotiation is not possible, the provided input is not valid,
or another failure prevents negotiation. The fault may also include some
domain specific reasons.
7.5.2.1 Input
<wsag-neg:TerminateInput>
<xs:any> … </xs:any> *
</wsag-neg:TerminateInput>
/wsag-neg:TerminateInput/{any}
These OPTIONAL elements contain domain specific content that may be
used to decide whether or not a termination is permissible.
7.5.2.2 Result
<wsag-neg:TerminateOutput>
</wsag-neg:TerminateOutput>
The result of the terminate operation does not contain any data.
7.5.2.3 Faults
This operation does not throw any faults.
graap-wg@ogf.org 38
GFD-R-P.193 October 10, 2011
GRAAP-WG
history. If an implementation is not capable or willing to support this feature,
this list SHOULD be empty.
7.6.1.1 Input
<wsag-neg:AdvertiseInput>
<wsag-neg:NegotiationOffer>
wsag-neg:NegotiationOfferType
</wsag-neg:NegotiationOffer> +
<xs:any> … </xs:any> *
</wsag-neg:AdvetiseInput>
/wsag-neg:AdvertiseInput/wsag-neg:NegotiationOffer
This element MUST appear in the input of the Advertise operation. The input
may contain one or more negotiation offers of which a responder is notified.
/wsag-neg:AdvertiseInput/{any}
The Advertise input message MAY contain optional elements to control the
negotiation process in a domain specific way. A responder MAY choose to
ignore this content if it does not understand it or it is not willing to support the
extensions. If responder is willing and able to understand these extensions it
SHOULD support them.
7.6.1.2 Result
<wsag-neg:AdvertiseOutput>
</wsag-neg:AdvertiseOutput>
7.6.1.3 Faults
A fault indicates that advertisement of offers for this specific negotiation
resource is not possible and may also include some domain specific reasons.
graap-wg@ogf.org 39
GFD-R-P.193 October 10, 2011
GRAAP-WG
8 Contributors
Dominic Battré
TU Berlin
Email: dominic.battre@tu-berlin.de
Frances Brazier
Delft University of Technology
Email: F.M.Brazier@tudelft.nl
Kassidy Clark
Delft University of Technology
Email: K.P.Clark@tudelft.nl
Michel Oey
Delft University of Technology
Email: M.A.Oey@tudelft.nl
Alexander Papaspyrou
TU Dortmund University
Email: alexander.papaspyrou@tu-dortmund.de
Oliver Wäldrich
Fraunhofer SCAI
Email: oliver.waeldrich@scai.fraunhofer.de
Philipp Wieder
TU Dortmund University / SLA@SOI
Email: philipp.wieder@udo.edu
Wolfgang Ziegler
Fraunhofer SCAI
Email: Wolfgang.Ziegler@scai.fraunhofer.de
graap-wg@ogf.org 40
GFD-R-P.193 October 10, 2011
GRAAP-WG
9 Acknowledgements
This document is the work of the GRAAP Working Group GRAAP Working
Group (Grid Resource Allocation and Agreement Protocol WG) of the
Compute Area of the OGF.
Members of the Working Group, and other contributors to this specification in
different periods of its evolvement include Bastian Koller, Michael Parkin,
Toshiyuki Nakata, Sebastian Hudert, Karl Czajkowski, Heiko Ludwig, Alain
Andrieux , Alan Weissberger, Kate Keahey.
Furthermore the work on the specification was supported by the European
projects SLA@SOI, CoreGRID, SmartLM and OPTIMIS, as well as through
the German projects DGSI and SLA4D-Grid.
graap-wg@ogf.org 41
GFD-R-P.193 October 10, 2011
GRAAP-WG
10 Security Considerations
The WS-Agreement Negotiation specification does not explicitly address any
security considerations. We expect that security issues will be addressed by
blending with other security implementations in the web services domain. In
particular, agreement negotiation participants SHOULD be authenticated to
insure their identity of the initiator during negotiation and later creation and
management of an agreement. Further, one MAY wish to provide a method
for signing or otherwise authenticating the WS- Agreement Negotiation
documents (offers/counter offers) to detect potential modifications of the
documents when sent using unsecure internet connections.
graap-wg@ogf.org 42
GFD-R-P.193 October 10, 2011
GRAAP-WG
graap-wg@ogf.org 43
GFD-R-P.193 October 10, 2011
GRAAP-WG
12 Disclaimer
This document and the information contained herein is provided on an “As Is”
basis and the OGF disclaims all warranties, express or implied, including but
not limited to any warranty that the use of the information herein will not
infringe any rights or any implied warranties of merchantability or fitness for a
particular purpose.
graap-wg@ogf.org 44
GFD-R-P.193 October 10, 2011
GRAAP-WG
graap-wg@ogf.org 45
GFD-R-P.193 October 10, 2011
GRAAP-WG
14 References
[BRADNER1] Bradner, S. Key Words for Use in RFCs to Indicate
Requirement Levels, RFC 2119. March 1997.
[GFD192] Andrieux, A. and Czajkowski, K. and Dan, A. and Keahey, K. and
Ludwig, H. and Nakata, T. and Pruyne, J. and Rofrano, J. and Tuecke, S.
and Xu, M. WS-Agreement specification, GFD.192. September 21, 2011
graap-wg@ogf.org 46
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xsd:schema
elementFormDefault="qualified" attributeFormDefault="qualified"
targetNamespace="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-agreement"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsd:import namespace="http://schemas.ggf.org/graap/2007/03/ws-
agreement"
schemaLocation="agreement_types.xsd" />
<xsd:import namespace="http://www.w3.org/2001/XMLSchema"
schemaLocation="http://www.w3.org/2001/XMLSchema.xsd" />
<xsd:import namespace="http://www.w3.org/2005/08/addressing"
schemaLocation="http://www.w3.org/2005/08/addressing/ws-
addr.xsd"/>
<xsd:element name="NegotiationContext"
type="wsag-neg:NegotiationContextType" />
<xsd:element name="NegotiableTemplate"
type="wsag:AgreementTemplateType" />
<xsd:element name="NegotiationOffer"
type="wsag-neg:NegotiationOfferType" />
<xsd:element name="NegotiationCounterOffer"
type="wsag-neg:NegotiationOfferType" />
graap-wg@ogf.org 47
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xsd:element name="NegotiationOfferContext"
type="wsag-neg:NegotiationOfferContextType" />
<xsd:element name="NegotiationExtension"
type="wsag-neg:NegotiationExtensionType" />
<xsd:element name="RenegotiationExtension"
type="wsag-neg:RenegotiationExtensionType" />
<xsd:complexType name="NegotiationContextType">
<xsd:sequence>
<xsd:element name="NegotiationType"
type="wsag-neg:NegotiationType" />
<xsd:element name="ExpirationTime"
<xsd:element name="NegotiationInitiator"
<xsd:element name="NegotiationResponder"
<xsd:element name="AgreementResponder"
type="wsag-neg:NegotiationRoleType"/>
<xsd:element name="AgreementFactoryEPR"
type="wsa:EndpointReferenceType" />
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="NegotiationRoleType">
<xsd:restriction base="xsd:string">
graap-wg@ogf.org 48
GFD-R-P.193 October 10, 2011
GRAAP-WG
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="NegotiationType">
<xsd:choice>
<xsd:element name="Negotiation">
<xsd:complexType>
<xsd:sequence>
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Renegotiation">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ResponderAgreementEPR"
type="wsa:EndpointReferenceType" />
<xsd:element name="InitiatorAgreementEPR"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="NegotiationOfferType">
<xsd:complexContent>
graap-wg@ogf.org 49
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xsd:extension base="wsag:AgreementType">
<xsd:sequence>
<xsd:element name="NegotiationOfferContext"
type="wsag-neg:NegotiationOfferContextType"/>
<xsd:element name="NegotiationConstraints"
type="wsag-
neg:NegotiationConstraintSectionType" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="NegotiationConstraintSectionType">
<xsd:sequence>
type="wsag-neg:NegotiationOfferItemType" />
ref="wsag:Constraint" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NegotiationOfferItemType">
<xsd:complexContent>
<xsd:extension base="wsag:OfferItemType">
<xsd:attribute name="Type"
type="wsag-
neg:NegotiationConstraintType"
use="required" />
default="0" use="optional"/>
graap-wg@ogf.org 50
GFD-R-P.193 October 10, 2011
GRAAP-WG
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:simpleType name="NegotiationConstraintType">
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="NegotiationOfferContextType">
<xsd:sequence>
<xsd:element name="CounterOfferTo"
type="xsd:string"/>
<xsd:element name="ExpirationTime"
<xsd:element name="Creator"
type="wsag-neg:NegotiationRoleType"/>
<xsd:element name="State"
type="wsag-neg:NegotiationOfferStateType" />
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NegotiationOfferStateType">
<xsd:choice>
<xsd:element name="Advisory"
type="wsag-neg:InnerNegotiationStateType"/>
graap-wg@ogf.org 51
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xsd:element name="Solicited"
type="wsag-neg:InnerNegotiationStateType"/>
<xsd:element name="Acceptable"
type="wsag-neg:InnerNegotiationStateType"/>
<xsd:element name="Rejected"
type="wsag-neg:InnerNegotiationStateType"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="InnerNegotiationStateType">
<xsd:sequence>
minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NegotiationExtensionType">
<xsd:sequence>
<xsd:element name="ResponderNegotiationEPR"
<xsd:element name="InitiatorNegotiationEPR"
<xsd:element name="NegotiationOfferContext"
type="wsag-neg:NegotiationOfferContextType"
minOccurs="1" />
processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RenegotiationExtensionType">
graap-wg@ogf.org 52
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xsd:sequence>
<xsd:element name="ResponderNegotiationEPR"
<xsd:element name="InitiatorNegotiationEPR"
<xsd:element name="ResponderAgreementEPR"
<xsd:element name="NegotiationOfferContext"
type="wsag-neg:NegotiationOfferContextType"
minOccurs="1" />
minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-agreement"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2"
targetNamespace="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation">
<wsdl:import namespace="http://docs.oasis-open.org/wsrf/rw-2"
location="http://docs.oasis-open.org/wsrf/rw-2.wsdl"/>
graap-wg@ogf.org 53
GFD-R-P.193 October 10, 2011
GRAAP-WG
<wsdl:types>
<xs:schema
targetNamespace="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-
agreement"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
elementFormDefault="qualified"
attributeFormDefault="qualified">
<xs:import
namespace="http://www.w3.org/2005/08/addressing"
schemaLocation="http://www.w3.org/2006/03/addressing/ws-addr.xsd"/>
<xs:import
namespace="http://schemas.ggf.org/graap/2007/03/ws-agreement"
schemaLocation="agreement_types.xsd" />
<xs:include
schemaLocation="agreement_negotiation_types.xsd" />
<xs:element name="InitiateNegotiationInput"
type="wsag-neg:InitiateNegotiationInputType"/>
<xs:complexType name="InitiateNegotiationInputType">
<xs:sequence>
<xs:element name="InitiatorNegotiationEPR"
type="wsa:EndpointReferenceType"
minOccurs="0" />
<xs:element name="NoncriticalExtension"
graap-wg@ogf.org 54
GFD-R-P.193 October 10, 2011
GRAAP-WG
type="wsag:NoncriticalExtensionType"
</xs:sequence>
</xs:complexType>
<xs:element name="InitiateNegotiationOutput"
type="wsag-neg:InitiateNegotiationOutputType"/>
<xs:complexType name="InitiateNegotiationOutputType">
<xs:sequence>
<xs:element name="CreatedNegotiationEPR"
type="wsa:EndpointReferenceType"
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="InitiateNegotiationInputMessage">
<wsdl:part name="parameters"
element="wsag-neg:InitiateNegotiationInput" />
</wsdl:message>
<wsdl:message name="InitiateNegotiationOuputMessage">
<wsdl:part name="parameters"
element="wsag-neg:InitiateNegotiationOutput" />
</wsdl:message>
graap-wg@ogf.org 55
GFD-R-P.193 October 10, 2011
GRAAP-WG
<wsdl:message name="InitiateNegotiationFaultMessage">
</wsdl:message>
<wsdl:portType name="NegotiationFactory">
<wsdl:operation name="InitiateNegotiation">
<wsdl:input
message="wsag-
neg:InitiateNegotiationInputMessage"/>
<wsdl:output
message="wsag-
neg:InitiateNegotiationOuputMessage"/>
<wsdl:fault name="ResourceUnknownFault"
message="wsrf-rw:ResourceUnknownFault" />
<wsdl:fault name="ResourceUnavailableFault"
message="wsrf-rw:ResourceUnavailableFault" />
<wsdl:fault name="NegotiationInitiationFault"
message="wsag-neg:InitiateNegotiationFaultMessage"
/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-agreement"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
graap-wg@ogf.org 56
GFD-R-P.193 October 10, 2011
GRAAP-WG
xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2"
targetNamespace="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation">
<wsdl:import namespace="http://docs.oasis-open.org/wsrf/rw-2"
location="http://docs.oasis-open.org/wsrf/rw-2.wsdl"/>
<wsdl:import namespace="http://docs.oasis-open.org/wsrf/rpw-2"
location="http://docs.oasis-open.org/wsrf/rpw-2.wsdl" />
<wsdl:types>
<xs:schema
targetNamespace="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-
agreement"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
elementFormDefault="qualified"
attributeFormDefault="qualified">
<xs:import
namespace="http://schemas.ggf.org/graap/2007/03/ws-agreement"
schemaLocation="agreement_types.xsd" />
<xs:include
schemaLocation="agreement_negotiation_types.xsd" />
<xs:element name="NegotiationProperties"
type="wsag-neg:NegotiationPropertiesType" />
<xs:complexType name="NegotiationPropertiesType">
graap-wg@ogf.org 57
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xs:sequence>
<xs:element ref="wsag-neg:NegotiableTemplate"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="wsag-neg:NegotiationOffer"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="NegotiateInput"
type="wsag-neg:NegotiateInputType"/>
<xs:complexType name="NegotiateInputType">
<xs:sequence>
<xs:element ref="wsag-neg:NegotiationOffer"
</xs:sequence>
</xs:complexType>
<xs:element name="NegotiateOutput"
type="wsag-neg:NegotiateOutputType"/>
<xs:complexType name="NegotiateOutputType">
<xs:sequence>
<xs:element ref="wsag-
neg:NegotiationCounterOffer"
</xs:sequence>
</xs:complexType>
graap-wg@ogf.org 58
GFD-R-P.193 October 10, 2011
GRAAP-WG
<xs:element name="TerminateInput"
type="wsag-neg:TerminateInputType" />
<xs:complexType name="TerminateInputType">
<xs:sequence>
</xs:sequence>
</xs:complexType>
<xs:element name="TerminateResponse"
type="wsag-neg:TerminateOutputType" />
</xs:schema>
</wsdl:types>
<wsdl:message name="NegotiateInputMessage">
<wsdl:part name="parameters"
element="wsag-neg:NegotiateInput" />
</wsdl:message>
<wsdl:message name="NegotiateOuputMessage">
<wsdl:part name="parameters"
element="wsag-neg:NegotiateOutput" />
</wsdl:message>
<wsdl:message name="NegotiationFaultMessage">
<wsdl:part name="fault"
element="wsag:ContinuingFault"/>
</wsdl:message>
graap-wg@ogf.org 59
GFD-R-P.193 October 10, 2011
GRAAP-WG
<wsdl:message name="TerminateNegotiationInputMessage">
<wsdl:part name="parameters"
element="wsag-neg:TerminateInput" />
</wsdl:message>
<wsdl:message name="TerminateNegotiationOuputMessage">
<wsdl:part name="parameters"
element="wsag-neg:TerminateResponse" />
</wsdl:message>
<wsdl:portType name="Negotiation"
wsrf-rp:ResourceProperties="wsag-
neg:NegotiationProperties">
<wsdl:operation name="Negotiate">
<wsdl:input
message="wsag-neg:NegotiateInputMessage" />
<wsdl:output
message="wsag-neg:NegotiateOuputMessage" />
<wsdl:fault name="ResourceUnknownFault"
message="wsrf-rw:ResourceUnknownFault" />
<wsdl:fault name="ResourceUnavailableFault"
message="wsrf-rw:ResourceUnavailableFault" />
<wsdl:fault name="NegotiationFault"
message="wsag-neg:NegotiationFaultMessage" />
</wsdl:operation>
<wsdl:operation name="Terminate">
<wsdl:input
message="wsag-neg:TerminateNegotiationInputMessage"
/>
graap-wg@ogf.org 60
GFD-R-P.193 October 10, 2011
GRAAP-WG
<wsdl:output
message="wsag-neg:TerminateNegotiationOuputMessage"
/>
<wsdl:fault name="ResourceUnknownFault"
message="wsrf-rw:ResourceUnknownFault" />
<wsdl:fault name="ResourceUnavailableFault"
message="wsrf-rw:ResourceUnavailableFault" />
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-agreement"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2"
targetNamespace="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation">
<wsdl:import namespace="http://docs.oasis-open.org/wsrf/rw-2"
location="http://docs.oasis-open.org/wsrf/rw-2.wsdl"/>
<wsdl:import namespace="http://docs.oasis-open.org/wsrf/rpw-2"
location="http://docs.oasis-open.org/wsrf/rpw-2.wsdl" />
<wsdl:types>
<xs:schema
graap-wg@ogf.org 61
GFD-R-P.193 October 10, 2011
GRAAP-WG
targetNamespace="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11/ws-
agreement-negotiation"
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-
agreement"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
elementFormDefault="qualified"
attributeFormDefault="qualified">
<xs:import
namespace="http://schemas.ggf.org/graap/2007/03/ws-agreement"
schemaLocation="agreement_types.xsd" />
<xs:include
schemaLocation="agreement_negotiation_types.xsd" />
<xs:element name="AdvertiseInput"
type="wsag-neg:AdvertiseInputType"/>
<xs:complexType name="AdvertiseInputType">
<xs:sequence>
<xs:element ref="wsag-neg:NegotiationOffer"
</xs:sequence>
</xs:complexType>
<xs:element name="AdvertiseOutput"
type="wsag-neg:AdvertiseOutputType"/>
</xs:schema>
graap-wg@ogf.org 62
GFD-R-P.193 October 10, 2011
GRAAP-WG
</wsdl:types>
<wsdl:message name="AdvertiseInputMessage">
<wsdl:part name="parameters"
element="wsag-neg:AdvertiseInput" />
</wsdl:message>
<wsdl:message name="AdvertiseOuputMessage">
<wsdl:part name="parameters"
element="wsag-neg:AdvertiseOutput" />
</wsdl:message>
<wsdl:message name="AdvertiseFaultMessage">
<wsdl:part name="fault"
element="wsag:ContinuingFault"/>
</wsdl:message>
<wsdl:portType name="Advertise">
<wsdl:operation name="Advertise">
<wsdl:input
message="wsag-neg:AdvertiseInputMessage" />
<wsdl:output
message="wsag-neg:AdvertiseOuputMessage" />
<wsdl:fault name="ResourceUnknownFault"
message="wsrf-rw:ResourceUnknownFault" />
<wsdl:fault name="ResourceUnavailableFault"
message="wsrf-rw:ResourceUnavailableFault" />
<wsdl:fault name="Advertise"
message="wsag-neg:AdvertiseFaultMessage" />
</wsdl:operation>
</wsdl:portType>
graap-wg@ogf.org 63
GFD-R-P.193 October 10, 2011
GRAAP-WG
</wsdl:definitions>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:foo="http://www.foo.org/bar"
targetNamespace="http://www.foo.org/bar">
<xs:element name="NegotiationProperties"
type="foo:NegotiationPropertiesType" />
<xs:complexType name="NegotiationPropertiesType">
<xs:sequence>
<xs:element name="MaxCounterOffers"
type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Given the schema above a valid negotiation context would look as follows:
<wsag-neg:NegotiationContext
xmlns:wsag="http://schemas.ggf.org/graap/2007/03/ws-agreement"
xmlns:wsag-neg="http://schemas.ogf.org/graap/2009/11
/ws-agreement-negotiation">
<wsag-neg:NegotiationType>
graap-wg@ogf.org 64
GFD-R-P.193 October 10, 2011
GRAAP-WG
<wsag-neg:Negotiation/>
</wsag-neg:NegotiationType>
<wsag-neg:ExpirationTime>
2011-07-15T20:00:00+02:00
</wsag-neg:ExpirationTime>
<wsag-neg:AgreementResponder>
NegotiationInitiator
</wsag-neg:AgreementResponder>
<foo:NegotiationProperties xmlns:foo="http://www.foo.org/bar">
<MaxRounds>10</MaxRounds>
<MaxCounterOffers>4</MaxCounterOffers>
<NegotiationStrategy>WIN-WIN</NegotiationStrategy>
</foo:NegotiationProperties>
</wsag-neg:NegotiationContext>
graap-wg@ogf.org 65