Agreement Formation Descriptor Documents
Pim van der Eijk
Agenda Background CPA formation CPA template instantiation Generalization to other agreement
documents and formation methods Overview of AFDD Status Plans
Background CPP/A mentions two methods of forming
a CPA CPP intersection Template instantiation
CPP/A Negotiation SC distinguishes two stages Composing a draft CPA Negotiating a final CPA using an
offer/counter offer process
CPA formation CPP intersection
Is defined informally in appendix E of CPA 2.0 Few tools available, and only limited functionality ?
Template instantiation Commonly used in ebXML deployments Fits the common practice of profiling ebMS, profiles
result in predictable CPA content High degree of automation possible for “take it or
leave it” proposals Some support in products, but not in a standardized
way
Initial goals Formalize a simple (candidate standard)
notation to define CPA formation based on templates plus supplied parameters
Semantics defined by compilation to XSLT Stylesheet that transform the template using
supplied parameters Each partner supplies a specific set of
parameters, passed as parameters to XSLT engine
Extension: multiple agreement document types Business document schemas
XML schema, RELAX NG Code lists Service agreements
WSDL, CPA Versions
Combinations E.g. XSD and Schematron for business rules Two CPAs in a three-party collaboration
Extension: multiple agreement methods Instantiating a template with variables Intersecting two CPPs into a CPA WS-Policy intersection algorithm CAM templates plus context parameters SCA Policy …
Generalized goals Simple language to define
Agreement documents to be created Participating partners (roles) Parameters each supplies Method used to establish agreements
Template instantiation as one such method
Special case: XML template instantiation Links document to a set of <Parameter,
XPath> bindings
Sample syntax<?xml version="1.0" encoding="UTF-8"?><afdd:AgreementFormationDescriptorDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:afdd="http://www.oasis-open.org/committees/ebxml-cppa/schema/afdd.xsd" xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-cppa/schema/afdd.xsd afdd.xsd“ version="0.2“name="wsdl">
<afdd:NamespaceSets> <afdd:NamespaceSet name="wsdl11"> <afdd:ns prefix="soap" uri="http://schemas.xmlsoap.org/wsdl/soap/"/> <afdd:ns prefix="wsdl" uri="http://schemas.xmlsoap.org/wsdl/"/> </afdd:NamespaceSet> </afdd:NamespaceSets> <afdd:Documents> <afdd:XMLDocument id="weather" type="wsdl11"> <afdd:DocumentTransformation patternConflictsAllowed="false"> <afdd:Binding pattern="soap:address" param="SoapAddress" method="attribute"
attribute="location"/> <afdd:Template href="weather.wsdl" /> </afdd:DocumentTransformation> </afdd:XMLDocument> </afdd:Documents> <afdd:PartnerRoles> <afdd:Partner role="Server"> <afdd:Parameter name="SoapAddress" required="true"/> </afdd:Partner> </afdd:PartnerRoles> </afdd:AgreementFormationDescriptorDocument>
One agreement document to be formed
Parameter SoapAddress is used to set the value of the location attribute on the soap:address element
One partner in role Server to supply parameters
One parameter to be supplied
Formation method is XMLdocument transformation
Expected input<?xml version="1.0" encoding="UTF-8"?><Parameters><Parameter
name="SoapAddress“>http://myserver.com/Helloweather</Parameter> </Parameters>
Compiled output<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" version="2.0"> <xsl:param name="Partner_Server">file:///d:/CPA/parameters/wsdl.Server.parameters.xml</xsl:param> <xsl:variable name="SoapAddress"> <xsl:copy-of select="document($Partner_Server)//Parameter[@name='SoapAddress']/child::node()"/> </xsl:variable> <xsl:template match="soap:address/@location"> <xsl:variable name="value" select="current()"/> <xsl:attribute name="location"> <xsl:choose> <xsl:when test="$SoapAddress !=''"> <xsl:value-of select="$SoapAddress"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$value"/> </xsl:otherwise> </xsl:choose> </xsl:attribute> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template></xsl:stylesheet>
Extension: CPP intersection<afdd:CollaborationProtocolAgreement version="2.0" id="cpaab"> <afdd:ColloborationProtocolProfileIntersection> <afdd:Start param="DeploymentStart"/> <afdd:End param="DeploymentEnd"/> <afdd:CPAId param="CpaId_AB"/> <afdd:CollaborationProtocolProfile version="2.0"
param="CPP_A"> <afdd:ProcessSpecification uuid="Procurement"/> <afdd:Role name="Seller"/> </afdd:CollaborationProtocolProfile> <afdd:CollaborationProtocolProfile version="2.0"
param="CPP_B"> <afdd:ProcessSpecification uuid="Procurement"/> <afdd:Role name="Buyer"/> </afdd:CollaborationProtocolProfile> </afdd:ColloborationProtocolProfileIntersection></afdd:CollaborationProtocolAgreement>
Package Package available at
http://www.oasis-open.org/apps/org/workgroup/ebxml-cppa/download.php/27623/CPAdist.zip
AFDD XML schema Compiler from AFDD to XSLT, in XSLT Python driver scripts Seven sample AFDD documents
Sample documents bias.afdd:
simple CPA template, where one partner acts as server (setting start, end and CPA id) and the other provides communication details for use as client.
cppintersection.afdd: CPA formed on the basis of two supplied CPPs
multidoc.afdd: two partners agree on a specialized business document schema (a UBL invoice where
the optional "OrderReference" element has been made required) and a CPA that references this schema.
multiparty.afdd: three business partners form two CPAs based on three CPPs.
secured.afdd: real-life, complex CPA using XML digital signatures, XML encryption and TLS
authentication, reliable messaging. Two partner need to supply four certificates each, their party identification parameters.
Optionally, reliable messaging parameters can be adjusted. ubl.afdd:
the XSD specialization also used in multidoc.afdd wsdl.afdd:
an organization requires a business partner to implement a particular web service, where only the SOAP address is variable.
Status A predecessor of AFDD is used in Netherlands
government projects Web user interface Reuse of uploaded parameters
Next steps / plans Discuss with TC (18-04-2008) Document schema as TC WD spec Formation as a networked service CPP intersection ebBP to CPA template CPA lifecycle messages (issue, revoke)
Formation as a service Bilateral request / response protocol
Two partners, one to supply parameters Request contains parameters Response is formed agreement document (or
rejection) Hub / spoke model:
One partner requests coordinator to start formation process
Coordinator contacts each participant, retrieves parameters
Coordinator creates and distributes agreement documents
Transport Bindings ebMS, Web Services; Portal interface
Top Related