170 likes | 272 Views
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
E N D
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
Formation method is XML document transformation One agreement document to be formed Parameter SoapAddress is used to set the value of the location attribute on the soap:address element One parameter to be supplied One partner in role Server to supply parameters 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>
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