• Save
RESTFul IDEAS
Upcoming SlideShare
Loading in...5
×
 

RESTFul IDEAS

on

  • 2,613 views

 

Statistics

Views

Total Views
2,613
Views on SlideShare
2,611
Embed Views
2

Actions

Likes
3
Downloads
0
Comments
0

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

RESTFul IDEAS RESTFul IDEAS Presentation Transcript

  • RESTful IDEAS: Integrated Documentation Environment for Aircraft Support‏ Originally presented at the XML 2007 Conference by: Joel Amoussou, Founder & CEO, Efasoft [email_address]
  • Agenda Security 5 IDEAS Use Cases 1 S1000D 2 AtomPub and OpenSearch 3 Getting Started 4
  • How Information is Distributed Today?
    • Shipping of Physical Products
    • Paper, CD-ROM, DVD
    • Four revisions a year
    • Temporary Revisions
    • Online Access
    • Hosted by manufacturers
    • Boeing MPT
    • Airbus|World
  • Current Digital File Formats S1000D Military Specifications (CALS)‏ ATA iSpec 2200 PDF and Proprietary Formats S1000D
  • Beyond S1000D: IDEAS IDEAS AtomPub OpenSearch Syndication Federated Search Ex- change Library Services
  • Maintenance and Flight Operations Airframe Manufacturer Engine Manufacturer Component Manufacturer FAA/Transport Canada Airline Policies & Procedures Feeds Reader Aggregator OpenSearch Client
  • Distributed Aircraft Manufacturing AtomPub Server Airframer (Systems Integrator)‏ AtomPub Client Partner/Supplier Create content with HTTP POST Get content with HTTP GET Update content with HTTP PUT Delete content with HTTP DELETE
  • Airline Originated Changes AtomPub Server Airframer/FAA/Suppliers AtomPub Client Airline's Content Repository Create content with HTTP POST Get content with HTTP GET Update content with HTTP PUT Delete content with HTTP DELETE
  • Syndication-Oriented Architecture (SynOA)‏
    • ROA and SynOA
    • REST
    • Atom
    • AtomPub
    • OpenSearch
    • SOA
    • XML Schema
    • SOAP
    • WSDL
    • UDDI
    • WS-*
    Web Services
  • What is S1000D? ASD, AIA, and ATA Military and Civil Aviation Open standards (RDF, Dublin Core, XLink, WebCGM, XML Schema)‏ Common Source DataBase (CSDB) and Reuse Metadata Data Module S1000D
  • S1000D Data Module Identification and Status (data module code, applicability, issue number, etc.)‏ Content (actual maintenance or operation procedure)‏
  • Sample S1000D Data Module Metadata <dmodule xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:dc=&quot;http://www.purl.org/dc/elements/1.1/&quot;> <rdf:Description> <dc:title>Hydraulic Tank - Clean by ultrasonic</dc:title> <dc:creator>U8234</dc:creator> <dc:subject>Hydraulic Tank - Clean by ultrasonic </dc:subject> <dc:publisher>U8234</dc:publisher> <dc:contributor>U8234</dc:contributor> <dc:date>2007-07-31</dc:date> <dc:type>text</dc:type> <dc:format>text/xml</dc:format> <dc:identifier>8H-A-29-10-05-01A-253B-C</dc:identifier> <dc:language>en-GB</dc:language> <dc:rights>01</dc:rights> </rdf:Description> ... </dmodule>
  • Sample S1000D Data Module Content <mainfunc> <step1> <para>Clean by ultrasonic.</para> <step2> <para>Press ON to start.</para> </step2> <step2> <para>Monitor the cleaner during operation.<para> </step2> <step2> <para> The cleaner will stop automatically after running for the specified time. <para> </step2> </step1> <mainfunc>
  • Data Module Code
    • 8H: Model Identification Code
    • A: System Difference Code
    • 29: System (Hydraulic Power)‏
    • 10: Subsystem (Main Hydraulic Power)‏
    • 05: Unit or Component (Hydraulic Tank)‏
    • 01: Disassembly Code (first assembly removed from the tank)‏
    • A: Disassembly Code Variant
    • 253: Information Code (clean by ultrasonic with equipment X)‏
    • B: Information Code Variant (clean by ultrasonic with equipment Y)‏
    • C: Item Location Code (C = Maintenance on the bench)‏
    8H-A-29-10-05-01A-253B-C
  • S1000D Publication Module (PM)‏ DM Reference DM Reference DM Reference DM Reference DM Reference
  • S1000D Information Life Cycle DMRL Presentation CSDB Common Source Database Browser-based Interactive Electronic Technical Publication (IETP)‏ Data Modules Requirement List
  • Sample Atom Feed for S1000D CSDB
    • <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?>
    • <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;>
    • <title>Example S1000D Feed</title>
    • <link rel=&quot;self&quot; type=&quot;application/atom+xml&quot;
    • href=&quot;http://xyz-aero.com/csdb/feed.atom&quot;/>
    • <updated>2007-11-20T19:30:02Z</updated>
    • <author>
    • <name>XYZ Aero</name>
    • </author>
    • <id>http://xyz-aero.com/csdb</id>
    • <entry>
    • <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title>
    • <link rel=&quot;enclosure&quot; type=&quot;image/png&quot; length=&quot;1337&quot;
    • href=&quot;http://xyz-aero.com/csdb/illustration/icn.png&quot;/>
    • <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id>
    • <updated>2007-11-20T19:30:02Z</updated>
    • <content
    • src=&quot;http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C.xml&quot; type=&quot;text/xml&quot;/>
    • <summary>
    • Hydraulic Tank – Clean by ultrasonic with equipment X
    • </summary>
    • </entry>
    • ...
    • </feed>
  • AtomPub Service Document for a CSDB
    • <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?>
    • <service xmlns=&quot;http://www.w3.org/2007/app&quot; xmlns:atom=&quot;http://www.w3.org/2005/Atom&quot;>
    • <workspace>
    • <atom:title>S1000D CSDB</atom:title>
    • <collection href=&quot;http://xyz-aero.com/csdb/dm&quot; >
    • <atom:title>S1000D Data Modules<title>
    • <categories href=&quot;http://www.s1000d.org/cats/dm.cats&quot; />
    • </collection>
    • <collection href=&quot;http://xyz-aero.com/csdb/illustration&quot; >
    • <atom:title>S1000D Illustrations</atom:title>
    • <accept>image/png</accept>
    • <accept>image/jpeg</accept>
    • <accept>image/gif</accept>
    • <accept>image/tif</accept>
    • <accept>image/cg4</accept>
    • <accept>image/cgm</accept>
    • </collection>
    • </workspace>
    • </service
  • Listing Atom Collection
    • <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;>
    • <link rel=&quot;first&quot;
    • href=&quot;http://xyz-aero.com/csdb/dm/amm&quot; />
    • <link rel=&quot;next&quot;
    • href=&quot;http://xyz-aero.com/csdb/dm/fim&quot; />
    • <link rel=&quot;last&quot;
    • href=&quot;http://xyz-aero.com/csdb/dm/aipc&quot; />
    • ...
    • </feed>
  • Posting a Data Module to an Atom Server
    • POST /csdb/dm HTTP/1.1
    • Host: xyz-aero.com
    • Authorization: XYZAeroLogin auth={auth token}
    • Content-Type: application/atom+xml;type=entry
    • Content-Length: nnn
    • Slug: First Post
    • <?xml version=&quot;1.0&quot; ?>
    • <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;>
    • <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title>
    • <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id>
    • <updated>2007-11-20T19:30:02Z</updated>
    • <author>
    • <name>XYZ Aero</name>
    • </author>
    • <content type=&quot;text/xml&quot;>
    • <dmodule>..</dmodule>
    • </content>
    • <summary>
    • Hydraulic Tank – Clean by ultrasonic with equipment X
    • </summary>
    • </entry>
  • Data Module Created by an Atom Server
    • HTTP/1.1 201 Created
    • Date: Sun, 11 Nov 2007 19:01:11 GMT
    • Content-Length: nnn
    • Content-Type: application/atom+xml;type=entry;charset=&quot;utf-8&quot;
    • Location: http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C.atom
    • ETag: &quot;cj373d8762369g&quot;
    • <?xml version=&quot;1.0&quot; ?>
    • <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;>
    • <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title>
    • <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id>
    • <updated>2007-11-20T19:30:02Z</updated>
    • <author>
    • <name>Aero Tanks</name>
    • </author>
    • <content type=&quot;text/xml&quot;>
    • <dmodule>..</dmodule>
    • </content>
    • <summary>
    • Hydraulic Tank – Clean by ultrasonic with equipment X
    • </summary>
    • </entry>
  • OpenSearch Description Document
    • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
    • <OpenSearchDescription
    • xmlns=&quot;http://a9.com/-/spec/opensearch/1.1/&quot;>
    • <ShortName>FAA's ADs Search</ShortName>
    • <Description>
    • Use to search FAA airworthiness directives.
    • </Description>
    • <Tags>airworthiness directives</Tags>
    • <Contact>opensearch.admin@faa.gov</Contact>
    • <Url type=&quot;application/atom+xml&quot;
    • template=&quot;http://faa.gov/ads/
    • ?q={searchTerms}&amp;p={startPage?}&amp;format=atom &quot;/>
    • </OpenSearchDescription>
  • OpenSearch Atom Search Result
    • <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;
    • xmlns:opensearch=&quot;http://a9.com/-/spec/opensearch/1.1/&quot;>
    • <title>FAA ADs Search: hydraulic tank</title>
    • <updated>2007-11-20T15:20:02Z</updated>
    • <id>http://faa.gov/ads/hydraulic+tank</id>
    • <opensearch:totalResults>1</opensearch:totalResults>
    • <opensearch:startIndex>1</opensearch:startIndex>
    • <opensearch:itemsPerPage>20</opensearch:itemsPerPage>
    • <opensearch:Query role=&quot;request&quot; searchTerms=&quot;hydraulic tank&quot; startPage=&quot;1&quot; />
    • <link rel=&quot;alternate&quot;
    • href=&quot;http://faa.gov/ads/hydraulic+tank?p=1&quot; type=&quot;text/html&quot;/>
    • <link rel=&quot;self&quot;
    • href=&quot;http://faa.gov/ads/hydraulic+tank?p=1&amp;format=atom&quot; type=&quot;application/atom+xml&quot;/>
    • <link rel=&quot;search&quot; type=&quot;application/opensearchdescription+xml&quot; href=&quot;http://faa.gov/ads/opensearchdescription.xml&quot;/>
    • <entry>... </entry>
    • </feed>
  • Getting Started IETP Benefits
    • Integrate feeds reader
    • Add OpenSearch provider to browser
    • Configure feeds aggregator
    • Users search multiple repositories
    • Users subscribe to feeds
    • Up-to-date content is always available
    CSDB
    • Generate and serve Atom feeds from your CSDB (XSLT, Abdera)‏
    • Turn your search engine into an OpenSearch provider
  • S1000D Publication Module (PM)‏
    • <pm xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;>
    • <idstatus>...</idstatus>
    • <content>
    • <pmentry>
    • <title>
    • Hydraulic Tank - Clean by ultrasonic with equipment X
    • </title>
    • <refdm>
    • <xlink:locator xlink:label=&quot;Clean&quot; xlink:href=&quot;DMC-8H-A-29-10-05-01A-253A-C.xml&quot;/>
    • </refdm>
    • </pmentry>
    • <pmentry>
    • <title>
    • Hydraulic Tank - Clean by ultrasonic with equipment Y
    • </title>
    • <refdm>
    • <xlink:locator xlink:label=&quot;Clean&quot; xlink:href=&quot;DMC-8H-A-29-10-05-01A-253B-C.xml&quot;/>
    • </refdm>
    • </pmentry>
    • </content>
    • </pm>
  • From S1000D PM to Atom Feed with XSLT
    • <xsl:for-each select=&quot;s:pmentry&quot;>
    • <xsl:variable name=&quot;dmc&quot; select=&quot;s:refdm/xlink:locator/@xlink:href&quot;/>
    • <entry>
    • <title><xsl:value-of select=&quot;s:title&quot;/></title>
    • <id>
    • <xsl:value-of select=&quot;concat
    • ('http://xyz-aero.com/csdb/dm/',
    • substring-before($dmc, '.'))&quot;/>
    • </id>
    • <updated>
    • <xsl:value-of select=&quot;current-dateTime()&quot;/>
    • </updated>
    • <content src=&quot;{$dmc}&quot; type=&quot;text/xml&quot;/>
    • <summary>
    • <xsl:value-of select=&quot;s:title&quot;/>
    • </summary>
    • </entry>
    • </xsl:for-each>
  • Posting to an Atom Server with Abdera
    • String csdb = &quot;http://xyz-aero.com/csdb&quot;;
    • ...
    • Document<Service> serviceDoc = client.get(csdb).getDocument();
    • Service service = serviceDoc.getRoot();
    • Collection collection =
    • service.getWorkspaces().get(0)‏
    • .getCollections().get(0);
    • String uri = collection.getHref().toString();
    • Response response = client. post (uri, entry);
    • if (response.getStatus() == 201)
    • System.out.println(&quot;Data module successfully uploaded!&quot;);
    • else
    • System.out.println(&quot;Data module upload failed!&quot;);
  • AtomPub Security SSL HTTP Authentication WSSE XML Signature /Encryption Others Security
  • Signing an Atom Feed with Apache Abdera
    • Abdera abdera = new Abdera();
    • AbderaSecurity abderaSecurity = new AbderaSecurity(abdera);
    • URL url = new
    • URL(&quot;http://xyz-aero.com/csdb/DMC-8H-A-29-10-05-01A-253A-C.atom&quot;);
    • Document<Feed> doc = parser.parse(url.openStream(),url);
    • Feed feed = doc.getRoot();
    • PrivateKey privateKey = ...
    • X509Certificate certificate = ...
    • Signature signature = abderaSecurity.getNewSignature();
    • SignatureOptions options = signature.getDefaultSignatureOptions();
    • options.setSigningKey(privateKey);
    • options.setCertificate(certificate);
    • feed = signature. sign (feed, options);
  • Verifying a Signature with Apache Abdera
    • ByteArrayInputStream feed = ...
    • Document<Entry> doc = abdera.getParser().parse(feed);
    • entry = doc.getRoot();
    • System.out.println(&quot;Valid signature?: &quot; + signature. verify (entry, null));
  • Standardization with CMIS 1 AtomPub and SOAP bindings Not all deployed CMS will support CMIS. 2 Vanilla AtomPub client and server can be implemented easily with existing tools (e.g. Apache Abdera). 3 Interoperability issues between Vanilla AtomPub client and CMIS AtomPub server.
  • Thank You ! [email_address]