Cross-Enterprise Document Sharing Implementation
<Most of the contents of this page shamelessly copied and misarranged from Bill's excellent Wiki at NIST>
Example Transactions
Provide and Register Document Set
The following is an example of a Provide and Register Document Set transaction. The process for capturing it and a discussion of what has been remvoved is available here.
Request
POST /axis2/services/repositoryAonedoc HTTP/1.1 Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936; type="text/xml"; start="0.urn:uuid:181AA8ECA16E16E2D61198809912937@apache.org" SOAPAction: "SubmitObjectsRequest" User-Agent: Axis2 Host: localhost:9087 --MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936 Content-Type: text/xml; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-ID: <0.urn:uuid:181AA8ECA16E16E2D61198809912937@apache.org> <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <rs:SubmitObjectsRequest xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"> <rim:LeafRegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"> <ExtrinsicObject xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" id="Document01" mimeType="text/plain" objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1"> </ExtrinsicObject> <RegistryPackage xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" id="SubmissionSet01"> </RegistryPackage> <Association xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" associationType="HasMember" sourceObject="SubmissionSet01" targetObject="Document01" id="ID_12928619_2"> <Slot name="SubmissionSetStatus"> <ValueList> <Value>Original</Value> </ValueList> </Slot> </Association> </rim:LeafRegistryObjectList> </rs:SubmitObjectsRequest> </soapenv:Body> </soapenv:Envelope> --MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936 Content-Type: text/plain Content-Transfer-Encoding: binary Content-ID: <Document01> This is my document. It is great! --MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936--
Response
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=UTF-8 Date: Fri, 28 Dec 2007 02:45:17 GMT <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <rs:RegistryResponse xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1" status="Success"/> </soapenv:Body> </soapenv:Envelope>
Register Document Set
The following is an example of a Register Document Set transaction. The process for capturing it and a discussion of what has been remvoved is available here. The example is show twice, once initiated with the SAAJ package (the old xdstest tool used through the 2007 Connectathon) and once with Axis2 (the newer xdstest2 tool used starting with the 2008 Connectathon). SAAJ represents an older interpretation of SOAP coding and Axis2 the newer. They are sometimes different enough to cause problems for implementer.
Request (Axis2/xdstest2) This originally had a Transfer-Encoding: chunked and chunk delimeters
POST /axis2/services/xdsregistrya HTTP/1.1 Content-Type: text/xml; charset=UTF-8 SOAPAction: "urn:anonOutInOp" User-Agent: Axis2 Host: localhost:9087 <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <rs:SubmitObjectsRequest xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"> <rim:LeafRegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"> <ExtrinsicObject xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" id="Document01" mimeType="text/xml" objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1"> </ExtrinsicObject> <RegistryPackage xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" id="SubmissionSet01"> </RegistryPackage> <Association xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" associationType="HasMember" sourceObject="SubmissionSet01" targetObject="Document01" id="ID_2732257_1"> <Slot name="SubmissionSetStatus"> <ValueList> <Value>Original</Value> </ValueList> </Slot> </Association> </rim:LeafRegistryObjectList> </rs:SubmitObjectsRequest> </soapenv:Body> </soapenv:Envelope>
Request (SAAJ/xdstest) This originally had a Content-Length header.
POST /axis2/services/xdsregistrya HTTP/1.1 Content-Type: text/xml; charset="utf-8" SOAPAction: "" Cache-Control: no-cache Pragma: no-cache User-Agent: Java/1.5.0_07 Host: localhost:9087 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body> <rs:SubmitObjectsRequest xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <LeafRegistryObjectList> <ExtrinsicObject id="Document01" mimeType="text/xml" objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1"> </ExtrinsicObject> <RegistryPackage id="SubmissionSet01"> </RegistryPackage> <Association associationType="HasMember" sourceObject="SubmissionSet01" targetObject="Document01"> <Slot name="SubmissionSetStatus"> <ValueList> <Value>Original</Value> </ValueList> </Slot> </Association> </LeafRegistryObjectList> </rs:SubmitObjectsRequest> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Response (Axis2) Originally Chunked encoding
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=UTF-8 Date: Fri, 28 Dec 2007 17:30:05 GMT <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <rs:RegistryResponse xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1" status="Failure"> <rs:RegistryErrorList> <rs:RegistryError codeContext="Document Document01 does not have the required slot URI" errorCode="XDSRegistryMetadataError" location="Attribute.java" severity="Error" /> </rs:RegistryErrorList> </rs:RegistryResponse> </soapenv:Body> </soapenv:Envelope>
How this example was produced
This was created using the package capture program TCPMon. The traces are of the Public Registry. The original was chunk encoded, as signaled by the HTTP header Transfer-Encoding: chunked. This header and the related changes to the body have been removed for readability. This encoding header or a Content-Length header is needed to make it valid HTTP again. The bulk of the metadata has been removed to make the structure of the submission more visible. Unless otherwise noted, the transaction was initiated using the XDS testing utility xdstest2.
Toolkits
<List public domain toolkits for this profile>
Reference Implementations
freebXML open source implementation on Source Forge.
Wiki devoted to Open Source implementation of standard
Test Tools
Discussion and documentation of the testing of XDS.a, XDS.b, XDM, XDR, XCA (together known as XD*) can be found [here].
Implementation FAQ
The XDS-FAQ contains Frequently Asked Questions about the XDS Profile
Testing Methods
Sample Data
XDS Schema version 0.4 (http://hcxw2k1.nist.gov:9080/XdsDocs/Schema/version_0_4/) - The Schema for XDS is new this year. It will be updated as problems are found and fixed. (Last updated 8 Oct 05)
Registry Initialization metadata (http://hcxw2k1.nist.gov:9080/XdsDocs/Initialize/) - This file contains a registry SubmitObjectsRequest that loads into a registry the datatypes and coding schemes necessary to support XDS. To view the contents of this initialization in table form, see XDS UUIDs. This download and table have been updated for the January 2007 Connectathon
Example XDS Metadata (http://hcxw2k1.nist.gov:9080/XdsDocs/Example_Metadata/) - This is an example of a submission which includes:
- A Submission Set (XDSSubmissionSet)
- A Document (XDSDocumentEntry) contained in the Submission Set
- A Folder (XDSFolder) contained in the Submission Set
Related Standards
OASIS committee that develops ebXML Registry standard
ebXML Registry Links points to a page maintained by the folks who work on the ebXML Registry standard
See Also
The IT Infrastructure Domain manages this profile.
The ITI Technical Framework is the official master document for this Profile.
The Cross Enterprise Document Sharing page is an overview of the Profile.
The Profile FAQ Template answers typical questions about what the Profile does.
The Profile Purchasing Template describes considerations when purchasing equipment to deploy this Profile.
This page is based on the Profile Implementation Template