340 likes | 447 Views
Contents. Digital-SNOWTAM Trial Introduction REST Introduction REST in the Digital-SNOWTAM Trial Why it is used Architecture How it is used Example. Digital-SNOWTAM Trial Introduction. Digital SNOWTAM Trial 2009-2010. SNOWTAM Message Sample
E N D
Contents • Digital-SNOWTAM Trial Introduction • REST Introduction • REST in the Digital-SNOWTAM Trial • Why it is used • Architecture • How it is used • Example AIXM XML Developers' Seminar
Digital SNOWTAM Trial 2009-2010 • SNOWTAM Message Sample 0902020400 ESSA S ESSA S0C)01L F)71/71/71 G)01/01/01 H)69/63/60 SFH N)71/GOODC)08 F)71/71/71 G)01/01/01 H)62/65/68 SFH N)71/GOODC)01R F)71/71/71 G)01/01/01 H)70/66/68 SFH N)71/GOODR)7/MEDIUM-GOODT)RWYS AND TWYS CONT 10 PER CENT. APRONS CONT 25 PER CENT
Scope Execution: Winter 2009-2010 • Service provider • Briefing • FPL • chart • FMS data • etc. • End user • Pilot • Airline OPS • ATC • etc. Originator (Digital NOTAM) Image Text Application AIXM 5 (Digital NOTAM) xNOTAM Trial (origination only) xSNOWTAM Trial (end-to-end)
REST • Representational State Transfer • An architectural style • A technology agnostic abstraction • The Web is RESTful AIXM XML Developers' Seminar
Key principles • Identifiable Resources • Representations • Hypermedia • Uniform Interface • Actions – Verbs • Client-server • Transparency and layering • Type of data AIXM XML Developers' Seminar
Resources • A resource is a real thing that can be acted upon with a request • Anything that can be named and identified can be a resource • They are found/identified using URIs • Unified Resource Identifier • = network address ~ URL • Collection URI (../airports) • Member URI (/airports/732d64d4-cd11) AIXM XML Developers' Seminar
Resources and time • Resources can vary over time. • The only thing that must be static is the semantic of the mapping (name). AIXM XML Developers' Seminar
Representations • Resources are always accessed through a representation • Captures the current or intended state of the resource • There can be more than one (html, xml, pdf…) • HTTP provides well known/standardized content types and content negotiation AIXM XML Developers' Seminar
Hypermedia • Allows access to related resources • Master-detail and other connections • URIs in hypertext links • Links should always be provided by the server • Enables seemless evolution and distribution • Different application and servers AIXM XML Developers' Seminar
Uniform Interface • Once you know a resource’s ID, you can interact with it in a single standard way • Limited set of operations (verbs) in HTTP: GET, PUT, POST, DELETE • Pre-defined semantics allows for optimizations AIXM XML Developers' Seminar
Actions • GET • Used to read a resource or as a query • Should be side-effect free • POST • Creates a new resource or invoke arbitrary processing • PUT • Updates the resource with new data and create it if necessary • DELETE • Removes the resource AIXM XML Developers' Seminar
Client Server Interactions • Interactions in both directions: from and to the server • Interactions are stateless: • no client context stored on the server between requests AIXM XML Developers' Seminar
Transparency / Layering • An application can interact with a resource by knowing two things: the identifier of the resource and the action required. That’s all! • How the representation is found should be transparent to the user AIXM XML Developers' Seminar
Why it is used • Support the provision of AIXM 5.1 data to end-user applications • The REST interface shall enable digital users to: • Query the Digital SNOWTAM database for the list of airports contained in the database and select one of these airports; • Get the list of airport’s features for a selected airport; • Get the surface contamination records for each such feature; • Get the related feature through xlink:href; • Get the SNOWTAM text and the free text translation associated with an Airport. AIXM XML Developers' Seminar
Architecture • The REST framework used is Struts 2 REST plugin. • See http://struts.apache.org/2.x/docs/rest-plugin.html for more information. AIXM XML Developers' Seminar
Implementation • Only GET is needed for the trial. AIXM XML Developers' Seminar
Workflow • In order to interrogate the database: • request the list of airports • select one airport and use the xlink:href to get the details about this airport • select a related feature and use the corresponding xlink:href to get the details about it • The xlink:href is a URL compliant to the Digital SNOWTAM REST request structure • Use the UUID for subsequent calls AIXM XML Developers' Seminar
Base URL • Base: • http://<server>/<app> • E.g. http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept • Then add a Suffix: • /<REST suffix> AIXM XML Developers' Seminar
Find Airports • Suffix: • /airportheliports[?designator=<pattern>] • There are about 15000 airports/heliports in the database so… • Optional Parameter: • The pattern is of the form [A-Z*]{1,4} where * is the wildcard character. • Pattern samples: • EB* matches any designator beginning with EB • *BBR matches any designator ending in BBR • E*R matches any designator beginning with E and ending with R AIXM XML Developers' Seminar
Query an Airport • Suffix: • /airportheliports/<gml:identifier>[?features=yes/no&contaminations=yes/no&date=<date&time>] • Mandatory parameter: • gml:identifier – UUID • Optional parameters: • date - <date&time> is the search date&time • features - specify if xlink:href pointing to related features must be included in the results, e.g. runways, taxiways, etc • contaminations - specify if contaminations must be included or not in the result AIXM XML Developers' Seminar
1 – Create Contamination • Use Bromma to create a contamination AIXM XML Developers' Seminar
2 – Use REST to find the airport • http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept/airportheliports?designator=ESSB <ResultList> <AirportHeliportFeature designator="ESSB" id="77a0de0e-277a-4824-a561-2ba779a3658c" href="http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept/airportheliports/77a0de0e-277a-4824-a561-2ba779a3658c"/> </ResultList> AIXM XML Developers' Seminar
3 – Find SNOWTAM Text • http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept/airportheliports/77a0de0e-277a-4824-a561-2ba779a3658c?features=yes&contaminations=yes • <aixm:annotation> • <aixm:Note> • <aixm:definition>snowtam-icao</aixm:definition> • <aixm:translatedNote> • <aixm:LinguisticNote> • <aixm:note lang="eng"> • SW** ESSB 10090900 (SNOWTAM A)ESSB B)10090900 C)12 F)3/2/2 G)1/1/1 H)2/3/3 BRD ) • </aixm:note> • </aixm:LinguisticNote> • </aixm:translatedNote> • </aixm:Note> • </aixm:annotation> AIXM XML Developers' Seminar
4 – Get Airport data • http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept/airportheliports/77a0de0e-277a-4824-a561-2ba779a3658c?features=yes … <aixm:associatedRunways> <aixm:associatedRunway id="12/30" xlink:href="http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept/runways/58ea128d-1bbe-47f6-92fe-a8961b4bf5ee"/> </aixm:associatedRunways> … AIXM XML Developers' Seminar
5- Get Runway contamination • http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept/runways/58ea128d-1bbe-47f6-92fe-a8961b4bf5ee?contaminations=yes • <aixm:areaContaminant> • <aixm:RunwaySectionContamination> • <aixm:observationTime>2009-10-09T09:00:00Z</aixm:observationTime> • <aixm:depth uom="MM">1</aixm:depth> • <aixm:frictionEstimation>MEDIUM</aixm:frictionEstimation> • <aixm:frictionDevice>BRD</aixm:frictionDevice> • <aixm:obscuredLights>NO</aixm:obscuredLights> • <aixm:layer> • <aixm:SurfaceContaminationLayer> • <aixm:layerOrder>1</aixm:layerOrder> • <aixm:type>WATER</aixm:type> • </aixm:SurfaceContaminationLayer> • </aixm:layer> • <aixm:section>2_THIRD</aixm:section> • </aixm:RunwaySectionContamination> • </aixm:areaContaminant> AIXM XML Developers' Seminar
6 - Time based • http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept/runways/58ea128d-1bbe-47f6-92fe-a8961b4bf5ee?date=9/10/2009%2009:00&contaminations=yes AIXM XML Developers' Seminar
AIXM 5.1 • TEMPDELTA and a BASELINE AIXM XML Developers' Seminar