Read Microsoft Word - ME-ICD-0001-SPB v1.10 _SSE Interface Control Document_.doc text version

SERVICE SUPPORT ENVIRONMENT

INTERFACE CONTROL DOCUMENT

Name Prepared by: Verified by: Approved by: SSE Team C. Bawin Y. Coene

Date 26/07/11 26/07/11

Signature

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : ii

Classification 1 2 3 4 General public Industry ­ Programme Restricted dispatching programme Confidential Programme YES Contractual : NO Number of pages : 150 1 2 3 4

Category Configured documents Non-configured documents submitted for approval Documents submitted for acceptance Other documents : : ESRIN :

Contract n° Contract issuer Work package n°

Number of appendices : 1

Word processing Name : Word for windows Issue : 97

Host computer Name : PC

Internal reference ICD.DOC

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : iii

Name Y. Coene C. Bawin M. Gilles T.H. Nguyen R. Smillie

INTERNAL DISTRIBUTION Dept. Copies Approval 1 1 1 1 1

For Acceptation

Information

Name P.G. Marchetti S. Smolders

EXTERNAL DISTRIBUTION Company Copies Approval ESRIN 1 GIM 1

For Acceptation

Information

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : iv

DOCUMENT CHANGE LOG

Issue 1.5draft Issue date 29/09/06 Pages affected All pages. Relevant information Adaptation of regions schema. Use of specific service namespace. Reference to version 1.4 schema. Support for GML results returned as a string. Add information for the display file result and embedded result through the service stylesheet. Add information on GML3.1.1 schemas. Area of interest can be based on GM3.1.1. A different area of interest can be associated to each operation. Relax conditions for Service Result shape files Reference schemas at http://services.eoportal.org/schemas/1.6 Add new service result types. Update service schema structure: sse_basic.xsd replaces sse_common.xsd. Various corrections. Add information about new order statuses. Add information about new XSL templates confirmRFQInput and confirmOrderInput Add javascript function getMinNumberOfSelectedItems(). Correct example stylesheet Add example of a synchronous order service Correct comments in the stylesheet example

1.5

26/02/07

Sections 3.2.3.9, 3.2.3.10, 4.4.1

1.6 draft

10/10/07

All

1.6 1.7

29/02/2008 15/10/2009/

All 3.2.3.8 4.4 5.1.4 4.4.4 5.3 4.4.4

1.8 1.9 1.10

29/07/2010 24/06/2011 26/07/2011

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :1

TABLE OF CONTENTS

1.

INTRODUCTION ............................................................................................................................... 5 1.1 1.2 1.3 1.4 1.5 Purpose of this Document ......................................................................................................... 5 Scope ........................................................................................................................................ 5 Structure and Organisation of this Document ............................................................................ 5 Reference Documents ............................................................................................................... 6 Acronyms ................................................................................................................................. 8

2.

SYSTEM OVERVIEW ...................................................................................................................... 10 2.1 2.2 2.3 2.4 Service Integration Overview .................................................................................................. 10 Communication Architecture .................................................................................................. 13 Communication Protocols ....................................................................................................... 13 Service Interaction Model ....................................................................................................... 14 SSE Operations ...................................................................................................... 14 Interaction Model ................................................................................................... 14

2.4.1 2.4.2

3.

REMOTE SERVICE INTERFACES...................................................................................................... 17 3.1 3.2 Service Provider Interface Architecture ................................................................................... 17 General Principles ................................................................................................................... 17 Message Format ..................................................................................................... 18 XML Payload Conventions .................................................................................... 19 AOI Schema ...................................................................................................... 21 OpenGIS GML Schema ..................................................................................... 22 ESA EOLI Schema ............................................................................................ 23 ESRIN OI Schema ............................................................................................. 26 GML Service Result Schema ............................................................................. 26 Regions Definition Schema ................................................................................ 28 SSE Schema ........................................................................................................... 28 processRFQ Operation ....................................................................................... 28 sendRFQ Operation ........................................................................................... 31

ICD.DOC

3.2.1 3.2.2 3.2.2.1 3.2.2.2 3.2.2.3 3.2.2.4 3.2.2.5 3.2.2.6 3.2.3 3.2.3.1 3.2.3.2

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :2

3.2.3.3 3.2.3.4 3.2.3.5 3.2.3.6 3.2.3.7 3.2.3.8 3.2.3.9 3.2.3.9.1 3.2.3.9.2 3.2.3.9.3 3.2.3.9.4 3.2.3.9.5 3.2.3.9.6 3.2.3.9.7 3.2.3.9.8 3.2.3.10 3.2.3.10.1 3.2.3.10.2 3.2.3.10.3 3.2.3.11 3.2.3.12 3.2.4

returnRFQResult Operation ............................................................................... 32 processOrder Operation ..................................................................................... 32 sendOrder Operation .......................................................................................... 34 returnOrderResult Operation .............................................................................. 36 commonInput Element ....................................................................................... 36 statusInfo Element ............................................................................................. 36 viewFileResult Element ..................................................................................... 39 GML FileType .......................................................................................... 40 SHAPE FileType ...................................................................................... 40 WMSURL FileType ................................................................................. 40 WMCFileURL FileType ........................................................................... 41 WFSURL FileType ................................................................................... 41 WCSURL File Type ................................................................................. 41 CoverageFileURL File Type ..................................................................... 42 SOSURL File Type................................................................................... 42 viewEmbeddedResult Element ........................................................................... 42 GML Embedded Type .............................................................................. 43 WMC Embedded Type ............................................................................. 43 KML Embedded Type .............................................................................. 43 searchOutput Element ........................................................................................ 43 Authorization Messages ..................................................................................... 44 Service Template Schema....................................................................................... 46

4.

SERVICE GRAPHICAL INTERFACES................................................................................................. 52 4.1 4.2 4.3 4.4 Generalities ............................................................................................................................. 52 SSE Common Stylesheet ......................................................................................................... 53 Catalogue Stylesheet ............................................................................................................... 53 Service Stylesheet ................................................................................................................... 54 Service Stylesheet Skeleton .................................................................................... 55 ATSR Order Example ............................................................................................ 60 SendOrderInput ................................................................................................. 60 SendOrderInput Mode XML .............................................................................. 64 GetOrderOutput ................................................................................................. 66 RFQ Remarks......................................................................................................... 70

ICD.DOC

4.4.1 4.4.2 4.4.2.1 4.4.2.2 4.4.2.3 4.4.3

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :3

4.4.4

Search Remarks...................................................................................................... 70

5.

SERVICE INTERFACE EXAMPLES .................................................................................................... 76 5.1 Asynchronous Order Example................................................................................................. 76 Service WSDL File ................................................................................................ 76 Service Schema File ............................................................................................... 77 SOAP Messages ..................................................................................................... 82 sendOrder SOAP HTTP Request ....................................................................... 82 sendOrder SOAP HTTP Response ..................................................................... 82 returnOrderResult SOAP HTTP Request ........................................................... 82 returnOrderResult SOAP HTTP Response ......................................................... 83 Service Stylesheet .................................................................................................. 83

5.1.1 5.1.2 5.1.3 5.1.3.1 5.1.3.2 5.1.3.3 5.1.3.4 5.1.4 5.2 5.3

Asynchronous RFQ Example .................................................................................................. 89 Synchronous Order Example ................................................................................................... 90 Service WSDL File ................................................................................................ 90 Service Schema File ............................................................................................... 91 SOAP Messages ..................................................................................................... 92 ProcessOrder SOAP HTTP Request ................................................................... 92 ProcessOrder SOAP HTTP Response ................................................................ 93 Service Stylesheet .................................................................................................. 93

5.3.1 5.3.2 5.3.3 5.3.3.1 5.3.3.2 5.3.4 5.4

Synchronous RFQ Example .................................................................................................... 96

6.

INTERFACE WITH SERVICE REPOSITORY ....................................................................................... 97

7.

ANNEX A : SCHEMA FILES ............................................................................................................ 98 7.1 7.2 sse_basic.xsd .......................................................................................................................... 98 AOI Features Schema and Example ...................................................................................... 102 AOI Features GML212 application schema .......................................................... 102 GML212 aoifeatures.xsd .................................................................................. 102 GML212 AOI Features Example ..................................................................... 102 AOI Features GML311 application schema .......................................................... 104 GML311 aoifeatures.xsd .................................................................................. 104 GML311 AOI Features example ...................................................................... 105

ICD.DOC

7.2.1 7.2.1.1 7.2.1.2 7.2.2 7.2.2.1 7.2.2.2

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :4

7.3

GML Service Result Schema and Example ........................................................................... 106 Service Result Features GML212 application schema........................................... 106 GML212 serviceresult.xsd ............................................................................... 106 GML 212 Service Result Example ................................................................... 107 Service Result Features GML 311 application schema.......................................... 108 GML311 Serviceresult.xsd............................................................................... 109 GML311 Serviceresult features example .......................................................... 110 7.3.1.1 7.3.1.2

7.3.1

7.3.2 7.3.2.1 7.3.2.2 7.4 7.5 7.6 7.7 7.8

eoli.xsd ................................................................................................................................. 112 oi.xsd .................................................................................................................................... 113 Regions Definition Schema and Example .............................................................................. 135 Regions Example ................................................................................................. 138 OGC Styled Layer Descriptor Language example ................................................................. 139 sse_eoli Schema .................................................................................................................... 142

7.6.1

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :5

1.

1.1

INTRODUCTION

Purpose of this Document

This document is the Interface Control Document (ICD) for the Service Support Environment (SSE).

1.2

Scope

The Service Support Environment (SSE) provides an enabling and open environment for the integration of Earth Observation and GIS services. This document defines the external interfaces of the SSE system, in particular the interfaces between the SSE Portal and remote services hosted by SSE Service Providers. The description of the SSE user interface is beyond the scope of the ICD document. It is described in the SSE User Manual. The operational SSE server deployed at ESRIN can be accessed at "services.eoportal.org". A SSE test server is available for service integration tests at "services-test.eoportal.org".

1.3

Structure and Organisation of this Document

The general approach of this document is a top down approach to present the SSE Interfaces. The chapter 1 is the usual introduction. The chapter 2 provides an overview of the different steps to integrate a Service into SSE. It also introduces the general principles for the communication mechanism between the SSE Portal and the SSE Services. The chapter 3 describes in more details the messages exchanged between the SSE Portal and the SSE Services. It introduces the external XML schemas that are imported in the SSE schema. It also describes the SSE XML elements and XML types that can be extended for the Service specific needs. The chapter 4 explains how to write the SSE stylesheet in order to generate the Service specific user interface and also to generate the XML messages which must be valid according to the schemas defined in chapter 3. The chapter 5 illustrates the previous chapters by giving examples of Service WSDL file, Service schema, SOAP messages and stylesheet. The chapter 6 introduces the SSE Portal provided interface in order to help the integration of SSE Services during the workflow design.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :6

The annex A provides the listing of the XML schemas introduced in chapter 3.

1.4

Reference Documents

The following list of reference documents is for general guidance only and does not need to be applied, but they should be given precedence over other documents covering similar topics. [RD0] Service Support Environment Architecture, Model, and Standards, White Paper Document, December 2004, http://earth.esa.int/rtd/Documents/SSE_Whitepaper_2.pdf [RD1] EARTHNET Online XML Front-End Interface Control Document EOLI-XML-006-ICD, Issue 2, Revision 4 http://earth.esa.int/XML/eoli/documents [RD2] Specification: Web Services Addressing (WS-Addressing) http://www-106.ibm.com/developerworks/webservices/library/ws-add/ [RD3] Simple Object Access Protocol (SOAP) 1.1, W3C Note 08 May 2000, http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ [RD4] Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616, U.C. Irvine, DEC W3C/MIT, DEC, W3C/MIT, W3C/MIT, January 1997, http://www.normos.org/ietf/rfc/rfc2616.txt [RD5] Web Services Description Language (WSDL) 1.1, W3C Note 15 March 2001, http://www.w3.org/TR/wsdl [RD6] A Busy Developer's Guide to SOAP 1.1 Interop, http://www.soapware.org/bdg, 04/02/2001. [RD7] XML Schema, http://www.w3.org/TR/xmlschema-0/, W3C Recommendation, 2 May 2001. [RD8] Web Services Inspection Language (WS-Inspection), http://www.ibm.com/developerworks/library/ws-wsilspec.html, Issue 1.0, November 2001. [RD9] Extensible Markup Language (XML) 1.0, W3C Recommendation 10 February 1998, www.w3.org/TR/REC-xml. [RD10] XSL Transformations (XSLT) Version 1.0, W3C Recommendation 16 November 1999, www.w3.org/TR/xslt. [RD11] Geography Markup Language (GML) 2.1.2, OpenGIS Implementation Specification, 17 September 2002, OGC Document Number 02-069, http://www.opengis.org/docs/01-029.pdf.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :7

[RD12] ISO/TC 211 N 1024, Geographic information/Geomatics, CD 19115 Geographic information - Metadata, ISO/TC 211/WG 3/Editing committee 19115, 19/12/2000. [RD13] Recommended Definition Data for Coordinate Reference Systems and Coordinate Transformations, OpenGIS Project Document 01-014-r3, OpenGIS Recommendation Paper, 5/4/2001, http://www.opengis.org/techno/specs/01-014r3.pdf [RD14] ESRIN ordering schema oi.xsd v1.10: Centralised Users & Orders Management System Ordering XML Interface Control Document, MEH-UO-006-ICD, Issue 1.2, 06/02/02. [RD15] SSE Toolbox Background, Description and Download http://toolbox.pisa.intecs.it/

[RD17] WS-I Basic Profile Version 1.0a Final Specification, Web Services Interoperability Organization, 08 August 2003, http://www.ws-i.org/Profiles/Basic/200308/BasicProfile-1.0a.htm. [RD18] WS-I Usage Scenarios Final Specification Version 1.01, Web Services Interoperability Organization, 09 December 2003, http://wsi.org/SampleApplications/SupplyChainManagement/200312/UsageScenarios-1.01.pdf [RD19] Internet Assigned Number Authority, Port Numbers, http://www.iana.org/assignments/port-numbers superseding http://www.ietf.org/rfc/rfc1700.txt. [RD20] Google Earth KML Documentation http://www.keyhole.com/kml/kml_doc.html http://earth.google.com [RD21] OASIS UDDI Specifications http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm [RD22] OpenGIS Geography Markup Language (GML) Encoding Specification 3.1.1, , 200402-07, OGC Document Number 03-105r1, http://www.opengis.org/docs/01-029.pdf. [RD23] OpenGIS Web Map Service Specification 1.1.0, OGC Document Number 01-047r2, 2001-06-21 [RD24] OpenGIS Web Map Service Specification 1.1.1, OGC Document Number 01-068r3, 2002-01-016 [RD25] OpenGIS Web Map Context Specification 1.0.0, OGC Document Number 03-036r2, 2003-06-10 [RD26] OpenGIS Web Feature Service Specification 1.0.0, OGC Document Number 02-058r2, 2002-05-17

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :8

[RD27] OpenGIS Web Feature Service Specification 1.1.0, OGC Document Number 04-094r2, 2005-03-05 [RD28] OpenGIS GML SimpleFeatures Profile, OGC Document Number 06-049, 2006-04-25 [RD29] OpenGIS Styled Layer Descriptor Language (SLD), OGC Document Number 02070,Version 1.0.0, 2006-04-25 [RD30] EO Application Profile for CSW 2.0, OGC 06-079r2, version 0.1.8, 25/08/2006. [RD31] Catalogue Services Specification 2.0 Extension Package for ebRIM (ISO/TS 15000-3) Application Profile, OGC 06-131, version 0.1.7, 11/12/2007. [RD32] Ordering Services for Earth Observation Products, version 1.0.4 Draft, 25/08/2006.

1.5

Acronyms

ADD AOI BPEL CORBA COTS DTD EO FR FTP GML HTML HTTP ICD I/F JVM KO MASS QoS RFQ RMI RPC SPB SLD SOAP SPMP SQAP SRD SSE TN Architectural Design Document Area of Interest Business Process Execution Language Common Object Request Broker Architecture Commercial off the Shelf tool Document Type Definition Earth Observation Final Review File Transfer Protocol Geography Markup Language Hypertext Markup Language Hypertext Transfer Protocol Interface Control Document Interface Java Virtual Machine Kick-Off Multi-Application Support Service System renamed to SSE Quality of Service Request for Quotation Remote Method Invocation Remote Procedure Call SPACEBEL Styled Layer Descriptor Simple Object Access Protocol Software Project Management Plan Software Quality Assurance Plan System Requirements Document Service Support Environment Technical Note

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 :9

UDDI UML URD URL WCS WFS WMS WSDL WS-I WSIL XML XSL

Universal Description, Discovery and Integration Service Unified Modelling Language User Requirements Document Uniform Resource Locator Web Coverage Service Web Feature Service Web Map Service Web Services Description Language Web Services Interoperability Web Services Inspection Language eXtensible Markup Language eXtensible Style Language

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 10

2.

SYSTEM OVERVIEW

There are two main ways to integrate a service on the SSE. The SSE usual way assumes that the communication between the SSE and your service is based on the SSE based messages structures as defined in this ICD. In this case, you will define the messages starting from a SSE template that you will extend to fullfill the specific information needed and returned by your service. The main steps for integrating a service on the SSE in this case are described in the next section (2.1). The second way assumes that your service is compliant with some predefined protocols e.g. a catalogue compliant with EO Application profile catalogue[RD31]. That means that the operations and messages are fixed except for some optional fields. In this case the integration work on the SSE levels is simplified because predefined schemas, stylesheet and workflows are reused. The service registration can be used to define/select the available options and then automatically generate the schemas, workflows and stylesheets. The following interfaces are currently supported by the registration wizard: · · · · · Catalogue EOLI-XML version 2.4 Catalogue CSW 2.0 EO Application Profile for EO Products (OGC 06-079r2) Catalogue CSW 2.0 EO Extension package for ebRIM Application Profile (OGC 06-131r2 v0.1.7 Catalogue CSW 2.0.1 ISO Metadata Application Profile (OGC 04-038r4 v1.0) OGC Ordering Service for EO Products OGC 06-141 v1.0.4

2.1

Service Integration Overview

This section gives an overview of the different steps needed to integrate a service into the SSE. 1) Define the schema of the service to be integrated into the SSE The Service Provider should define the XML schema for his service. To do that, he has to answer to the following questions: Does my service need an Area Of Interest as input parameter? Do my service results contain geographical information to be displayed on a Web Map viewer? Does my service need a Request For Quotation function in order to give some information on price or on the different items available?

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 11

-

What is the information needed by my service to be able to answer to an RFQ or an Order request? What is the result of the RFQ and the Order? For each operation, is my system able to return immediately (synchronous communication) the response and does it need some time to process the request (asynchronous communication)?

The answer to all these questions should be formalized in the XML service schema following the conventions described in the current document (SSE ICD). 2) Select one of the integration mechanisms provided by the SSE Toolbox. This step applies only to basic services integration. The Service Provider should select the most appropriate integration mechanism among all possibilities offered by the SSE Toolbox. This will depend on the current service implementation. See the SSE Toolbox documentation [RD15] to answer to that question. 3) Integrate the Service with the Toolbox. This step applies only to basic services integration. According to the selected integration mechanism and the service schema: Install the SSE Toolbox Configure the SSE Toolbox to integrate the service If needed, implement the glue between the Toolbox and the service.

See the SSE Toolbox documentation [RD15] to answer to that question. 4) Become a Service Provider If you are not yet a registered user, go on the SSE Portal: Register yourself on the SSE Portal Login on the SSE Portal Update your profile and apply to become a Service Provider After the SSE administrator e-mail confirmation, register your company on the SSE Portal. From now, you can follow the "Monitor Orders" link to login into the Workflows monitoring tool using the same account than the one used to login on the SSE Portal.

For the details concerning these operations, see the online SSE user manual available following the "help" link on the SSE site (chapters "User tasks" and "Service Provider tasks" in the "tasks" section).

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 12

5) Design your service workflow. This step only applies if your service is a chained service. If your service is a basic service, the default workflows can be used (see next step). Download the BPEL Designer tool from the software section of the SSE Portal http://services.eoportal.org/portal/DownloadUtil.jsp while logged in as Service Provider. Design your workflow. In the Designer tool you can connect your workflow to existing SSE services by selecting these services WSDL files retrieved by the WS-Inspection (see chapter 6). Deploy you workflow on the SSE portal using the BPEL Console.

-

6) Register your service on the SSE Portal In order to prepare your service registration on the SSE Portal, you should define: The WSDL file describing your service based on your service schema definition. The WSDL file can be automatically generated by the SSE Toolbox. This applies only if your service is a basic service. The style sheet that will allow to handle your service specific input and output parameters (as defined in your service schema. A template for the service stylesheet is available on services.eoportal.org/schemas/1.6/

-

When these files are ready, you can register your service on the SSE Portal. In the service registration form, set the status of your service to "testing" so that only you can order the service. If your service is a basic service, in the service registration page, select the SSE default ICD and select the operations which implemented by your service (RFQ synchronous or asynchronous and or order synchronous or asynchronous) at the first step of the service registration. If your service is a chained service, select the SSE Custom ICD at the first step of the service registration page, the workflows you have just deployed will appear in the workflow selection lists. Select the workflows associated to each operations implemented by your service. Don't forget to specify if the operations are synchronous or asynchronous. 7) Test your service on the SSE Portal Go to the SSE service directory and check that you can retrieve your service and the associated description. Test the integration of your service with the SSE Portal by ordering your service following the different steps if applicable: Search, RFQ, and Order. 8) Publish your service When your service is operational, you can change the status of your service to "enable" on the Service Update page.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 13

2.2

Communication Architecture

The SSE architecture is described in the "Service Support Environment Architecture, Model, and Standards" White Paper [RD0]. SSE has the following external interfaces: · · · · On-line front-end interface Web Client - SSE Portal On-line front-end interface Application Client - SSE server (e.g. workflow tools) On-line back-end interface SSE Portal - Remote Service Providers' systems. Off-line back-end interface SSE system - Legacy systems (e.g. Billing System)

Only the third type of interface is the subject of this ICD.

2.3

Communication Protocols

The SSE system is an open system that allows to integrate additional remote services during its lifetime, without recompilation of redesign of the system. It is therefore impossible to list exhaustively all messages in this ICD. However, we will describe the protocols SSE will support and the rules that we impose for the definition of service specific messages. The definition of the actual messages is treated as data by the SSE system, and messages are not hardwired into SSE. The communication between SSE and the Service Providers' systems is based on the SOAP over HTTP/HTTPS protocol. FTP is also used by the Service Providers to provide access to the results of the services. Service results can also be published using protocols such as WMS, WCS, WFS...(see sections 3.2.3.9). In order to avoid specific firewall configuration, the standard ports according to [RD19] should be used: Protocol http https ftp Port 80 443 21

Table 1: Standard Ports

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 14

2.4

Service Interaction Model

2.4.1 SSE Operations In the most general case, a basic service exposes the following operations as part of its SOAP interface. These operations are available from web pages on the SSE Portal, and from within workflows: · Request for Quotation (RFQ): the Service Provider can define the content of an RFQ request and RFQ result. Typically, it will return a list with possible matches, availability information, or price information, Quicklook or sample image URL. Order: The Service Provider can define the content of an Order request and Order result In some cases, the complete order result information can be contained in the XML message. In other cases, the result message will contain an FTP URL, with optional user name and password to allow the user to download the actual result file.

·

To support the integration of catalogue services, two additional operations are supported: · The "Search" operation is used to perform a query on a remote catalogue. It returns the metadata available in the catalogue for images matching the search parameters such as area of interest and time interval. The SSE Portal presents the search results in textual (list) format, and graphically on a map. The "Present" operation allows requesting detailed information about a single search result.

·

If all operations are defined for a given service, the operations will be triggered by the Portal with the user interactions in the following sequence:

Search

RFQ Present

Figure 1: Operations Sequence

Order

It is up to the Service Provider or Catalogue Owner to decide which of the previous operations are needed for his service: in Figure 1, all boxes are optional. The only constraint is that a Present will only be done on the result of a Search. For a simple service, the operations sequence can be reduced to a single Order box.

2.4.2 Interaction Model The SSE infrastructure does not make an assumption about the time needed by the remote Service Provider to generate or return a service result. Some services may require days, others such as data access may be almost instantaneous. The SSE Portal keeps results of orders (i.e. the

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 15

XML message) in a database until the user accesses the Portal again. The actual data in most cases remains available a number of days on the Service Provider side for the user to download. SSE supports two interaction models. The Service Provider decides at service registration time which mechanism should be applied for each of the four operations: i.e. search, present, RFQ or Order. · Asynchronous operations: this model is used when an operation may take too long for a user to get the result immediately displayed in his browser. The result of the RFQ or Order is stored in the SSE database and is available in the user's order list when he logs in the next time. This interaction model corresponds to the WS-I "Basic Callback" usage scenario defined in [RD18]. The ws-addressing standard [RD2] is used to avoid content-based correlation of the asynchronous communication.

SSE Portal

Initial Request Req: Initial Resp: Ack Req: Final Resp: Ack Final Request

Service Provider

Figure 2: Asynchronous or Basic Callback Usage Scenario ·

Synchronous operations: this model can be used when the service will immediately return the result. The SSE Portal then visualises the result on the Web page. E.g. a catalogue search may take a number of seconds. SSE can thus display search results on the same page where the user entered the search criteria. This interaction model corresponds to the WS-I "Synchronous Request/Response" usage scenario defined in [RD18].

SSE Portal

Request Req Resp Response

Service Provider

Figure 3: Synchronous or Request/Response Usage Scenario

The possible variations that will be supported are summarised in the table below:

Operation / Model

Search Present

Asynchronous (i.e. response via order list)

Not foreseen Not foreseen

Synchronous (i.e. immediate response)

Yes Yes

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 16

Request for Quotation Order

Yes Yes

Yes Yes

Table 2: Interaction Model Variations

The naming conventions are explained hereafter. For the Synchronous operations, the verb "process" is used as prefix for the different operations. The "process" operations are invoked by the SSE Portal and are implemented by the Service Provider System.

processSearch

SSE Portal

processPresent processRFQ processOrder

Service Provider's system

Figure 4: Synchronous Operations

For the Asynchronous operations, to send the request from the Portal to the Service Provider's system, the prefix "send" is used, while the name "returnXxxResult" is used as template of the operation used by the Service Provider to return the result information when it becomes available. All these operation names are listed in Figure 5. The "send" operations are invoked by the SSE Portal and are implemented by the Service Provider system. The "return" operations are invoked by the Service Provider system and are implemented by the SSE Portal (see Figure 5).

sendRFQ returnRFQResult

SSE Portal

sendOrder returnOrderResult

Service Provider's system

Figure 5: Asynchronous Operations

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 17

3.

3.1

REMOTE SERVICE INTERFACES

Service Provider Interface Architecture

To be able to connect to the SSE system, a Service Provider will have to install a web application server supporting servlets and JSPs. This server is the interface between the SSE system and the Service Provider's existing systems that do the processing of the service.

SSE Portal

TOOLBOX

WEB SERVER GATEWAY

SOAP Backend

TOMCAT

SOAP LIB.

Service Provider's existing system

JVM Linux or Windows NT

Figure 6: Service Provider Interface Architecture

The Service Provider is responsible for the development of the software glue between the SOAP interface and his existing system. This "glue" is called "SOAP backend" in Figure 6. The SSE Toolbox can be used to simplify the implementation of the interface between your existing service and the SSE Portal: it helps in this installation of the needed environment and it also supports several mechanisms for the implementation of the "glue". Information on the SSE Toolbox can be found in document [RD15].

Tip

3.2

General Principles

The Service Provider has to create a WSDL file that describes his SOAP interface and makes it available to SSE. Some of the information contained in the WSDL file is fixed but the following information has to be provided: selected operations according to the selected interaction model (see section 2.4)

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 18

-

physical location of the services import of the service specific types (see section 3.2.4).

For the generation of the WSDL file, a Service Provider can use the SSE Toolbox. The protocol stack used for communication between the SSE system and a remote Service Provider is depicted in Figure 7. WS-addressing is used in the case asynchronous communication in order to identify Web service endpoints in the messages in a transport-neutral manner (see [RD2]).

WSDL WS-Addressing SOAP HTTP TCP/IP XML XML Schema

Figure 7: Protocol Layers 3.2.1 Message Format

The message format used in the communication between SSE and a remote Service Provider is SOAP [RD3] over HTTP [RD4]. The message-based variant of SOAP will be used. This means that style="document" must be used in the WSDL file as attribute of the <binding> element. Each operation has an input SOAP message and a SOAP response message also called "output" message in this document. Some of these messages are fixed such as the search and present messages defined in the EOLI ICD (see chapter 3.2.2.3) and some can be extended by the Service Provider according to the specific needs of his service. The following tables contain for each message, the XML input and output message elements. When the message is extensible, the tables provide the XML type to be extended. The SSE basic XML definition types and element definitions are located in the sse_basic.xsd file. The types which are extended by the Service Provider are defined in a Service specific schema file which is imported in the service WSDL file. This following table provides the information for the synchronous operations.

Operation Name

processSearch Request processPresent Request processRFQ

Section

see 3.2.2.3 See 3.2.2.3 see

Message Direction Input

Output Input Output Input Output

Element Name

eoli:searchRequest eoli:response eoli:presentRequest eoli:response processRFQInputMsg processRFQOutputMsg

Type to be extended None

None None None RFQInputType RFQOutputType

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 19

processOrder

see 3.2.3.4

Input Output

processOrderInputMsg processOrderOutputMsg

OrderInputType OrderOutputType

Table 3: Synchronous Operations

The following table provides the information for the asynchronous operations:

Operation Name

Section

Message Direction

Input Output Input Output Input Output Input Output

Element Name

sendRFQInputMsg sendRFQOutputMsg returnRFQResultInputMsg returnRFQResultOutputMsg sendOrderResultInputMsg sendOrderResultOutputMsg returnOrderResultInputMsg

Type to be extended

RFQInputType

sendRFQ returnRFQResult sendOrder

see 3.2.3.2 see 3.2.3.3 see 3.2.3.5

None

RFQOutputType

None

OrderInputType

None

OrderOutputType

returnOrderResult see 3.2.3.6

returnOrderResultOutputMsg None

Table 4: Asynchronous Operations 3.2.2 XML Payload Conventions

In principle, any service can use its own XML vocabulary to define the procedure parameters and return values in the XML payload inside a SOAP message. However, to facilitate comparison of services, consistency and message translations, we recommend the use of a common XML-based metadata language to express the XML payloads. The following XML schemas are used:

Schema

SSE Schema AOI Schema Opengis GML Schemas ESRIN EOLI ICD ESRIN Ordering GML Service Result Schema

Files

sse_basic.xsd aoifeatures.xsd GML schemas eoli.xsd oi.xsd Serviceresult.xsd

Purpose

Section

Defines the types needed to support the see 7.1 SSE operations. Defines the types defined to support the see 7.2 AOI definition.

base Defines GML types. They are imported by the AOI and Service Result schemas Defines the types needed for the interface see 7.4 to the catalogues (Search, Present). Defines the ESRIN Ordering types see 7.5 Defines the expected format to display see 7.3 service results on a map. It is also based on GML. Defines the expected format to import see 7.6 regions definitions during the AOI

ICD.DOC

Regions Definition regions.xsd Schema

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 20

configuration of a service.

Table 5: Imported XML Schemas

The following picture shows the relationships between a hypothetical Service A WSDL file, its specific types definitions and these various XML schemas. The SSE Schema is explained in section3.2.3. The other XML schemas are introduced in the next sections. For a complete listing of these schemas, see Annex A.

Tip

These schemas are also published at "http://services.eoportal.org/schemas/1.6/".

Compared to the previous version of the ICD, the structure of the schemas has been modified to take into account the fact that the Service Provider can now select the version of GML he wants to support as output of the WebMapViewer (AOI tool). To avoid confusion with the previous version of the SSE ICD, it has been chosen to define a new SSE schema containing the basic SSE types: the service schema should now import the sse_basic.xsd schema instead of sse_common.xsd: the "sse_common.xsd" schema has been splitted into two schemas "sse_basic.xsd" and "sse_eoli.xsd". The SSE system is still compatible with the previous version of the ICD that can be found at http://services.eoportal.org/schemas/1.4./ but new providers are encouraged to developed new services based of this new schemas structure. The "sse_eoli.xsd"schema has only to be imported in the service schema if the service supports the "search" operation on a EOLI catalogue.

"ESA " sse_basic.xsd << im po rt> > oi.xsd sse_eoli.xsd regions.xsd "Service A" <<import> > <<import>> << im po rt> > eoli.xsd << im po rt> > aoifeatures. xsd << im po rt> > << im po rt> >

service_a.wsdl

service_a.xsd

"W3C " xlinks.xsd <<import>> geometry.x sd

"OGC "

<<include>>

feature.xsd

Figure 8: UML Architecture

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 21

3.2.2.1 AOI Schema

The purpose of the AOI schema is to define the GML application schema for the area of interest features . This schema defines the format that is used by the WebMapViewer/AOI tool to export the areas of interest selected by the user. This area of interest forms the geographical input parameter of any SSE operation. Note that the Service provider can configure the AOI tool during the Service Registration to include only in the area of interest format the information its service requires by e.g. either the bounding box or to the full list of coordinates. The service provider can during service registration also define the version of the GML that he would like to use for his Services. Two different versions of the AOI Application schema have been defined based on the GML2.1.2 and GML3.1.1 base schemas respectivily. Both schemas allow the same type of features to be encoded but the newer schema use the newer GML3.1.1 constructs. In addition to polygonal features with linear interpolation between the vertices, the GML3.1.1 schema also allows the definition of circular (curved) planar geometries. For the listing of both these schemas see section 7.2. Note that in version 3.1.1, the first character of the "AreaOfInterest" element is uppercase.

Figure 9: AOI GML 2.1.2 Top Level Schema Definition

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 22

Figure 10: AOI GML 3.1.1 Top Level Schema Definition

Tip

With new versions of GML, the number of imported schemas increases. In order to avoid the upload of all these schemas (e.g. for the installation of the service in the toolbox), it has been decided to publish a stub of the aoifeatures schema. As it is a stub, it is independent of the GML version. This stub is located at http://services.eoportal.org/schemas/1.6/aoifeatures.xsd.

3.2.2.2 OpenGIS GML Schema

The Geography Markup Language (GML) is an XML encoding for the transport and storage of geographic information, including both the geometry and properties of geographic features. This specification defines the mechanisms and syntax that GML uses to encode geographic information in XML. Its primary goal is to be an interchange format for geographical "Simple Features" as defined within another OpenGIS Specification: "A feature is an abstraction of a real world phenomenon; it is a geographic feature if it is associated with a location relative to the Earth." The state of a feature is defined by a set of properties, where each property can be thought of as a {name, type, value} triple. The number of properties a feature may have, together with their names and types, is determined by its feature type. A feature collection is a collection of features that can itself be regarded as a feature. Consequently a feature collection has a feature type and thus may have properties of its own, in addition to the features it contains. A feature is a geographic feature if it contains geographic information (f.i. a geometry property).

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 23

Several version of the GML standard exist. Version 2.1.2 of the GML standard [RD11]was released in 2002 and is still widely used within industry. The newer standards GML3.1.1 [RD22] also provide support for 3 Dimensional, non-linear, temporal and dynamic features as well as definition of coordinate systems and default stylings. The base GML Schemas defined by the OpenGeoSpatial Consortium only define the base constructs: how to model and encode features, geomtries, times, ... . What they do not define is what kind of geomtries and which attributes AOI or Service Result Feature have. This gets defined within so called GML Application schemas of which the AOI schema referenced above is one. For the detailed GML schemas we refer to the OGC Schema repository http://schemas.opengis.net/. They are also available together with the aoifeatures.xsd schemas at services.eoportal.org/schemas/1.6/gml.

3.2.2.3 ESA EOLI Schema

The EOLI schema defines the messages that are exchanged between the SSE and the Service Provider server in case of Catalogue interaction through the Search and Present operations. The Service Provider who wants to integrate a EOLI Catalogue in the SSE has first to read the EOLI ICD [RD1]. Predefined EOLI workflows, stylesheet and schemas for the Search and the Present operations are available on the SSE service registration page. These predefined workflows make the conversion between the SSE portal XML messages defined in the sse_eoli.xsd schema and the EOLI messages (see Figure 11). The Search EOLI workflow makes AOI format conversion and generates the GML string for the footprints display on the map. Note that the default search workflow can receive a request from the portal that concern several collections depending on the service stylesheet. In this case, this workflow will submit one search request for each collection. All these collections MUST be implemented on Service Provider side at the same SOAP location provided in the WSDL at the service registration time.

Figure 11: Default EOLI Workflows

The information returned by the EOLI Search and Present operations depends on the value of the EOLI "Presentation" element. In order to standardize the result of information on the SSE,

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 24

The "summary" presentation is used in a Search request and the "full" presentation is used in the present "request". The browse image should be returned together with the "full" presentation. The sse_eoli schema is described in section 7.8. If there is a need from a single service to access catalogue on different locations, then a specific workflow has to be deployed that knows the Catalogue location of each collections. If there is no SSE operation like RFQ or Order, the registration wizard can be used to register such catalogue service.

·

SSE makes the following assumptions on the EOLI interface: The "collectionId" are unique across all the catalogues that are integrated as single "Catalogue" service into SSE: the "collectionId" is used inside the catalogue workflow to identify the associated Service Provider. For the specific case of the ESA "products" service, the following collectionIds are expected:

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 25

MUIS

ESA.EECF.EOS_MOD_xS ESA.EECF.ERS_ALT_FDC_xS-I ESA.EECF.ERS_ALT_OPR_xS-I ESA.EECF.ERS_ALT_SSH_xS-I ESA.EECF.ERS_ALT_SSHQL_xS-I ESA.EECF.ERS_ALT_TOP_xS-I ESA.EECF.ERS_ATS_xF ESA.EECF.ERS_GOM_L13_1S-I ESA.EECF.ERS_GOM_L21_2S-I ESA.EECF.ERS_MWS_MBT_xS-I ESA.EECF.ERS_MWS_VLC_xS-I ESA.EECF.ERS_ORB_EGM1_xS-I ESA.EECF.ERS_ORB_EGM2_xS-I ESA.EECF.ERS_ORB_PRC_xS-I ESA.EECF.ERS_ORB_PRL_xS-I ESA.EECF.ERS_SAR_xF ESA.EECF.ERS_SWM_xS-I ESA.EECF.ERS_WSC_xS-I ESA.ERS.ATSR_UBT ESA.EECF.IRS_MOS_xS ESA.EECF.JERS_SAR_xF-I ESA.EECF.JERS_VNR_xF ESA.EECF.LANDSAT_MSS_xF ESA.EECF.LANDSAT_RBV_xF-I ESA.EECF.LANDSAT_TM__xF ESA.EECF.NIMBUS_CZC_xS-I ESA.EECF.NOAA_AVH_xS ESA.EECF.PROBA_CHR_xS ESA.EECF.SEASTAR_SWF_xS ESA.ENVISAT.ENVISAT_ASA_GMI_1S ESA.ENVISAT.ENVISAT_ASA_WVx_xC ESA.ENVISAT.ENVISAT_ASA_IMx_xS ESA.ENVISAT.ENVISAT_ASA_APH_0S ESA.ENVISAT.ENVISAT_ASA_APV_0S ESA.ENVISAT.ENVISAT_ASA_APC_0S ESA.ENVISAT.ENVISAT_ASA_WSx_xS ESA.ENVISAT.ENVISAT_MER_FR__xS ESA.ENVISAT.ENVISAT_MER_RR__xS ESA.ENVISAT.ENVISAT_ATS_xxx_xS ESA.ENVISAT.ENVISAT_MIP_NL__xC ESA.ENVISAT.ENVISAT_SCI_C ESA.ENVISAT.ENVISAT_RA2_MWx_2C ESA.ENVISAT.ENVISAT_ASA_WVx_xF ESA.ENVISAT.ENVISAT_ASA_IMx_xF ESA.ENVISAT.ENVISAT_ASA_APH_0F ESA.ENVISAT.ENVISAT_ASA_APV_0F ESA.ENVISAT.ENVISAT_ASA_APC_0F ESA.ENVISAT.ENVISAT_ASA_WSx_xF ESA.ENVISAT.ENVISAT_MER_FR__xF ESA.ENVISAT.ENVISAT_MER_RR__xF ESA.ENVISAT.ENVISAT_ATS_xxx_xF ESA.ENVISAT.ENVISAT_MIP_NL__xF SPOT.20M_COLOUR SPOT.10M_N&B SPOT.10M_COLOUR SPOT.5M_N&B SPOT.2_5M_N&B

ICD.DOC

SPOT Image

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 26

SPOT.ALL

The "resTitle" uniquely identifies a product across all the catalogues that are integrated as single service into the SSE: this "resTitle" is used to identify a product returned by a Search request on the Web Map viewer. The EOLI "searchRequest" element optionally includes inside the "satelliteDomainConditions" element a set of generic conditions specified by a couple of (AttributeId, AttributeValue). Within the context of SSE, the same search request will be applied to several catalogues and collections. It is expected that if some generic conditions are not implemented in one specific catalogue, this catalogue will be able to return the records that match the search criteria without taking into account these unknown generic conditions: it should ignore unknown conditions.

3.2.2.4 ESRIN OI Schema

ESRIN's standard ordering schema defines types that can be used to define the XML payload. A selection of available types is listed below but other types may be of interest. Please refer to section 7.5 for the complete documentation of these types:

· · · · ·

UserInformation CreditCardInfo FtpDelivery PriceType ProcessingOptions

3.2.2.5 GML Service Result Schema

The GML Service Result Schema (serviceresult.xsd) defines the expected format of the GML service result to be displayed by the SSE Web Map viewer. For the Search and Present operations, the GML are generated by the SSE default EOLI workflows using as input the EOLI "response" element. In order to be able to display this GML, the Web Map Viewer makes the following additional assumptions: The GML must provide the real location of the "serviceresult.xsd" file which must be read accessible by the Web Map Viewer at the moment it displays the GML. The "serviceresult.xsd" is stored at: http://services.eoportal.org/schemas/1.6/gml/GMLxxx/serviceresult.xsd. All GML service result should reference the "serviceresult.xsd" file at that location.

Warning

·

The GML must be returned by one of the two following mechanisms: an HTTP URL to the SSE Portal in the viewFileResult element (see 3.2.3.9 ) which must be accessible for read from the SSE AOI Server or it can be inserted directly in the viewEmbeddedResult element (see 3.2.3.10 ).

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 27

· In order for the value of an "attributexx" element to be displayed in the "Identify" popup window, it is assumed to be a string composed of the attribute name following by the "," character followed by the attribute value. These attribute names and values are the values displayed in the "Identify" popup window as respectivily parameter title and value (see next figure). Attributes that do not need to be shown in the identify window can be provided as normal inlinevalues (without the label).

The serviceresult.xsd schema is provided in Annex A, section 7.3. Two versions of this service result schema exist which are derived from respectively the GML2.1.2 and GML3.1.1 base schemas.

Figure 12: GML Viewer Identify Window

Note that within GML you can only encode the data itself not the symbology (colours, linestyles, fills, ...), with which these features are to be portrayed. In order to define such styling rules, service providers can upload an OGC Styled Layer Descriptor document (SLD) [RD29] upon service registration. The xsd schema of SLD can be found on the OGC schema repository http://schemas.opengis.net/. An example SLD document applied on the SSE Service Result GML Application schema can be found within section 7.7.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 28

3.2.2.6 Regions Definition Schema

If needed, during his service registration on the SSE Portal, the service provider can import his own set of geographical regions that endusers of his service can select from as during the service ordering. The purpose of the regions definition schema is to define the format expected by the AOI tool for these regions. For more information on this schema see section 7.6.

3.2.3 SSE Schema

This SSE schema defines the minimum information that must be part of the input and output messages associated to the standard SSE WSDL operations described in section 3.2.1. An XML element definition is associated to each message. These elements are described hereafter, grouped by operations. In the figures of the next subsections, big borders highlight the XML types that can be extended by the Service Provider to add the service specific information. The elements presented in the next subsections have to be defined in the service schema and they have to reference the mandatory element from the "sse_basic.xsd" schema. The referenced SSE elements parts of sse_basic.xsd are described at the end of this section. The "searchOuput" element depends on the remote catalogue ICD. Its definition is not part of the sse_basic.xsd. In the case of the EOLI ICD, it is defined in the sse_eoli.xsd schema. The sse_eoli.xsd schema contains the SSE elements definitions that allows to wrap the EOLI messages into the SSE framework: eoli search ouput as other catalogue ouputs are part of the order input (see Figure 15).

Element Name commonInput statusInfo viewFileResult viewEmbeddedResult searchOuput id price sendAuthorisationInputMsg returnAuthorisationInputMsg

Section 3.2.3.7 3.2.3.8 3.2.3.9 3.2.3.10 3.2.3.11 3.2.3.1 3.2.3.1 3.2.3.12 3.2.3.12

3.2.3.1 processRFQ Operation

The processRFQ operation allows to submit a "Request For Quotation" and receives the result as the SOAP response (synchronous call) by opposition to the sendRFQ operation which allows the Service Provider to differ the response (asynchronous call).

·

Input Message Element

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 29

Figure 13: Process RFQ Input Message Element

The following comments apply to the RFQ Input Message: The orderId is generated automatically by the SSE system. It can be used to make the link between an RFQ and an order. It also allows to trace requests between the SSE Portal and the Service Provider. The "areaOfInterest" element will only be present if the AOI has been configured for this service operation. The "areaOfInterest" is generated by the Web Map Viewer in case of GML2 and is replaced by "AreaOfInterest" in case of GML3 (see section 3.2.2.1). If some user information is needed, it should be part of the "originPart/userInformation" element (see oi schema in section 7.5). The user information which is part of the SSE user profile can be added with the service stylesheet (see section 4.4.2.2). In order to add some service specific information in the RFQ request, the "RFQInputType" can be extended to add the needed information. If a Search operation is defined for the service, the last search input and the user selected search output item(s) are provided in the message. Output Message Element

-

-

·

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 30

Figure 14: Process RFQ Output Message Element

A RFQ request can return several results. One or several of these results can be selected for ordering. The type "MultiRFQOutputType" represents the result set of a RFQ request. The type "RFQOutputType" represents one of these results. While the type "MultiRFQOutputType" is fixed, the "RFQOutputType" can be redefined by extension as the other types RFQInputType in order to add the service specific information. The statusInfo indicates the status of the request. If the status is not successful, the "rfqOuput" and "viewFileResult" will not be present. The "viewFileResult" element will be present if the service returns the URL of one or several files that need to be displayed with a specific viewer. If the "viewFileResult" element represents a GML file, the "id" values returned in the rfqOutput elements must correspond to the "id" values found in the GML file (see section 7.3). This allows the user to select the "rfqOutput" on the GML viewer or in the textual part of the RFQ result. The "id" values should be unique inside one "processRFQOutputMsg" element. The SSE portal uses the "refAmount" element to compute the price of the order. It is assumed that all amounts are given within the same currency. The viewEmbeddedResult is similar to the viewFileResult. The difference is that the information to be displayed is assumed to be a string part of the viewEmbeddedResult while in the viewFileResult case, it is assumed to be the URL that points to the information to be displayed.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 31

3.2.3.2 sendRFQ Operation

The sendRFQ operation allows to submit a "Request For Quotation" in an asynchronous way. The Service Provider system will return the RFQ result by executing the returnRFQResult operation.

·

Input Message Element

Figure 15: Send RFQ Input Message Element

The "sendRFQInputMsg" is similar to the processRFQInputMsg.

·

Output Message Element

Figure 16: Send RFQ Output Message Element

The sendRFQOutputMsg contains the SSE status that indicates to SSE that the message has been accepted or not by the Service Provider. If the status is successful, the SSE system is

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 32

going to wait for the result which is the "returnRFQResultInputMsg" message. If the status is not successful, an error message is returned to the user.

3.2.3.3 returnRFQResult Operation

The returnRFQResult operation allows the Service Provider to return the RFQ result in an asynchronous way.

·

Input Message Element

Figure 17: Return RFQ Input Message Element

The "returnRFQResultInputMsg" element is similar to the processRFQOutputMsg: it wraps the same "getRFQOuput" element.

·

Output Message Element

Figure 18: Return RFQ Result Output Message Element

The "returnRFQResultOutputMsg" contains the SSE status that indicates to the Service Provider that the "returnRFQResultInputMsg" message has been accepted or not by the SSE System.

3.2.3.4 processOrder Operation

The processOrder operation allows to submit an Order request and receives the result of the order as the SOAP response (synchronous call) by opposition to the sendOrder operation which allows the Service Provider to differ the response (asynchronous call).

·

Input Message Element

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 33

Figure 19: Process Order Input Message Element

The following comments apply to the Order Input Message: The orderId is generated automatically by the SSE system. It can be used to make the link between an RFQ and an Order. It also allows to trace requests between the SSE Portal and the Service Provider. If a Search operation is defined for the service, the user selected search output items are provided in the message. The "sendRFQInput" element is present if there was an RFQ before the Order. This has been added to avoid that the Service Provider has to maintain the RFQ input information. The "rfqOutput" elements are present if there was an RFQ before the Order. These "rfqOutput" elements are the ones which have been selected by the user during the Order preparation. The user can select more than one RFQ output for the ordering. Only one order is generated in this case. The "sendRFQInput" and "rfqOuput" elements are automatically added by the system: it has not to be managed by the service stylesheet. The "areaOfInterest" element child of sendOrderInput will only be present if the Web Map Viewer has been configured for this service operation.

ICD.DOC

-

-

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 34

-

The "areaOfInterest" is generated in case of GML2 and is replaced by "AreaOfInterest" in case of GML3 (see section 3.2.2.1). If some user information is needed, it will be part of the "originPart/userInformation" element (see oi schema in section 7.5). In order to add some service specific information in the Order request, the "OrderInputType" can be extended to add the needed information. Output Message Element

·

Figure 20: Process Order Output Message Element

The "OrderOutputType" can be extended in order to add the service specific information. The statusInfo indicates the status of the request. The "viewFileResult" elements will be present if the service returns the URL of one or several files that need to be displayed with a specific viewer. The "viewEmbeddedResult" element will be present if the service returns a String which can be displayed with a specific viewer.

3.2.3.5 sendOrder Operation

The sendOrder operation allows to submit an "Order" in an asynchronous way. The SOAP response contains a SSE status to confirm or not that the request has been accepted by the Service Provider. The Service Provider system will return the Order result by executing the returnOrderResult operation.

·

Input Message Element

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 35

Figure 21: Send Order Input Message Element

The "sendOrderInputMsg" message is similar to the "processOrderInputMsg" message.

·

Output Message Element

Figure 22: Send Order Output Message Element

The sendOrderOutputMsg contains the SSE status that indicates to SSE that the message has been accepted or not by the Service Provider. If the status is successful, the SSE system is going to wait for the result that is the "returnOrderResultInputMsg" message. If the status is not successful, an error message is returned to the user.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 36

3.2.3.6 returnOrderResult Operation

The returnOrderResult operation allows the Service Provider to return the Order result in an asynchronous way.

·

Input Message Element

Figure 23: Return Order Input Message Element

The "returnOrderResultInputMsg" element is similar to the processOrderOutputMsg: it wraps the same "getOrderOuput" element.

·

Output Message Element

Figure 24: Return Order Result Output Message Element

The "returnOrderResultOutputMsg" contains the SSE status that indicates to the Service Provider that the "returnOrderResultInputMsg" message has been accepted or not by the SSE System.

3.2.3.7 commonInput Element

The commonInput element represents the minimum information that is part of most input SSE messages. It contains the "orderId" which allows to trace RFQ and Orders between SSE and the Service Providers.

Figure 25: commonInput Element 3.2.3.8 statusInfo Element

An XML element is defined to contain status information on a service request execution. This type contains two elements.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 37

The element "statusId" defines an identifier (non negative integer) for the status of the request execution. The following tables define identification codes that must be respected by all services. If a Service provider needs to use codes that are not listed in the table, the codes must be confirmed by the SSE administrator. The codes listed in Table 6 are applicable to nonsubscription services. And the codes listed in Table 7 are applicable to the subscription services.

statusId 0 1 2 3 4

Meaning The request is excecuted successfully. The service fails to execute the request. Errors are not defined. The request is rejected by the Service. The service is unable to execute the service. The service aborts the request execution.

Table 6: Status Identifiers Applicable to Non-subscription Services statusId Meaning Is subscription order terminated (last order result is delivered)? Yes Yes

0 1

The request is excecuted successfully. The service fails to execute the request. Errors are not defined. The request is rejected by the Service. The service is unable to execute the service. The service aborts the request execution. The request is excecuted successfully. The service fails to execute the request. Errors are not defined. The request is rejected by the Service. The service is unable to execute the service. The service aborts the request execution.

2 3

Yes Yes

4

Yes

10 20

No No

30 40

No No

50

No

Table 7: Status Identifiers Applicable to Subscription Services

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 38

The following diagram depicts more details about the relations of request execution statuses and the status identifiers.

States corresponding to the status of the request execution at Service provider system, as reported via the "Status Identifier" values.

Internal states linked to Web page transitions

Proceed (Order/RFQ) Completed

Proceed (Search) Preparing

Proceed (Order/RFQ) Confirming

Confirm Processing Failed

End

Start

Cancel Cancel Rejected

Canceled

Unable to execute

Aborted

The labels inside the boxes represent the service request execution state. Arrow labels correspond to the buttons shown on SSE HTML pages.

The "statusMsg" element contains a message explanation on the success or the error. That message should be understandable by a SSE end user.

Figure 26: Request Status Information

The statusInfo element is part of most output messages of SSE Service operations. If present, the statusMsg truncated to 1024 characters will be part of the e-mail sent to the User when an Order result is received. It will also be displayed as a "tooltip" on the Order Information page in case of subscription to indicate for example that no result has been produced. See figure below.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 39

No data Found

Figure 27: OrderInformation

The SOAPFault mechanism shall not be used to communicate errors raised at the SSE, Toolbox or Service level. This mechanism is only used for errors raised at the SOAP layer.

3.2.3.9 viewFileResult Element There is a mechanism built in SSE to display result files specified with a URL. If an operation result contains the optional "viewFileResult" element, SSE will automatically include in the Portal associated result page the JavaScript code to display these files with a specific viewer. This is done through the template "mass:viewFileResult" defined in the common stylesheet (see 4.2). This template has to be "applied" explicitly in the service stylesheet in the case of the order result (see 4.4.2.3). In the other cases (search result, rfq result), this tempate is automatically "applied" by the common stylesheet.

The viewer will be selected according to the fileType.

Figure 28: View File Result Information

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 40

3.2.3.9.1

GML FileType

A "GML" fileType value will have as effect to start the Map viewer. In this case, the file specified by the "fileURL" must be valid according to the GML service result schema (see sections 3.2.2.5, 7.3).

3.2.3.9.2

SHAPE FileType

A "SHAPE" fileType value will have also as affect to start the Map viewer. In this case, there are constraints on the file name and on the file content.

·

File format and naming: The shape file must be available as a zip file on an accessible ftp or HTTP server. The file format must be Winzip/pkz compatible. The Zipfile must at least contain the files X.shp, X.dbf, and X.shx where X is the name of the FeatureType. Other files (X.prj, X.sbn, X.sbx, ..) are optional, but will be ignored. To limit upload time and server storage space, it is advised not to include these two files. File content: The zip-file must contain a valid Shape format. Geometry is included in the shp-file. Attributes are included in the dbf-file. Attributes: "tooltip" is optional "AttributeX" with X a number ranging between 1 and 50 are optional Other attributes are allowed but ignored. To limit upload time and server storage space, we advice to remove all other attributes. The Shape file can contain one or multiple features. The following geometry types are allowed: Point PolyLine Polygon (rectangle, polygon, circle, polygon with hole) Multi-part polygon (feature with more than one separate polygon) The coordinate system must be Latitude/Longitude WGS84 (EPSG:4326).

·

3.2.3.9.3

WMSURL FileType

A "WMSURL" filetype expects a valid OGC WMS getMap URL with all mandatory request parameters encoded as KeyValue Pairs within the URL. Such a fileType value also launches the Map Viewer. The map that is returned by such an URL is placed on top of the existing map defined during service configuration. If the additional layer support transparancy, the layers from the existing map will still be visible. The layer that is added in this way will not appear within the map manager frame to the right of the map. The service and layer names will hence not be visible to the user which may be useful in a commercial context. Basic WMS as defined within WMS 1.1.0 [RD23] and WMS1.1.1 [RD24] are supported. Note that any (Vendor Specific) Parameters that are added to the URL will be retained and included in the calls that the webMapViewer makes to the Web Map Service.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 41

3.2.3.9.4

WMCFileURL FileType

A "WMCFileURL" filetype expects an URL to an OGC compliant Web Map Context (WMC) document file (V1.0.0 [RD25]). This Web Map Context replaces the existing WMC that was configured during service registration. All services that are part of this Web Map Context are accessible from the map manager frame and the user can hence add additional layers of these services to his map. A WMC file can be generated by clicking the save button within the map manager frame of the Web MapViewer.

3.2.3.9.5

WFSURL FileType

The "WFSURL" file type allows the display and interrogation of Web Feature Service (WFS) Results. It contains in fact more than just a URL. The syntax is that a ";" separated string of pipe-separated strings should be provided whereby each pipe-separated string consists of the following elements: an URL to the Web Feature Service (Version 1.0.0 [RD26] and Version 1.1.0 [RD27]) the layer name (FeatureType) (optionally) a simple query criterion that selects the features that would like to return to your users. These three parameters need to be provided within a pipe-separated string. The simple query criterion can take the form of propertyname1=value1&propertyname2=value2+propertyname3=value3 In which the property-names are the names of a specific property of the featureType that is being queried and the "&" and "+" operator function as logical ANDs and ORs respectively. When combining more than 1 criterion with the logical operators, "&" takes precedence over "+". Apart from the "=" operator to compare the propertyname and the value also the "<>", ">" and "<" operators are supported. Example: http://193.74.120.20:8080/oilspill/wfs?|cite:ships|shipname=Albatros WFS Servers of Version 1.1.0 will reply with GML3.1. The WebMapViewer supports the Level 0 Compliancy level subset that is defined within the Simple Features Profile of GML [RD28].

3.2.3.9.6

WCSURL File Type

The "WCSURL" file type allows the display of coverages that are supplied through OGC's Web Coverage Service standard. The format of the string is that of the WCS base URL followed by a set of parameters expressed as KeyValuePairs as within a "GetCoverage" WCS HTTP GET request. Mandatory KeyValuePair are COVERAGE, to specify the coverage name, and FORMAT, to specify the image format. The Bounding Box (BBOX) together with the coordinate Reference System (CRS) may be included to limit the extent of the Coverage that is to be shown. WIDTH/HEIGHT and RESX/RESY may be included in the URL but will not be taken into account, as the WebMapViewer itself determines the required values. Other parameters like TIME, interpolation method, or Vendor Specific Parameters may be included and will be passed on to the Web Coverage Service within each request.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 42

3.2.3.9.7

CoverageFileURL File Type

The "CoverageFileURL " file type allows the display of raster image files that are located on HTTP or FTP servers. Specify the entire URL to the file. Note that the size of images that you can visualise in this manner is limited to 1MB. Default Supported format is GeoTIFF (8 bits ­ no negative values and standard headers).

Depending on the specific SSE portal instance, other formats as GeoJP2, GMLJP2 and a range of formats supported by the GDAL library may be supported. Check with the SSE Portal administrator whether you can use these formats.

3.2.3.9.8

SOSURL File Type

The "SOSURL" allows to use Sensor Observation Services as Service Results within the SSE Portal. SOS is a draft standard of the OGC that allows to access sensor measurements over HTTP. These Sensor Observation Services normally deliver their output in the OGC Observation and Measurements (O&M) encoding (GML Application schema). The SSE Portal currently supports the use of SOS with the following restrictions: · O&M: only CompactDiscreteTimeCoverage using the compact notation with simple numeric value types. · Features Of Interest: only features (station locations) that are in line with Simple Feature Profile of GML in its level 0 compliancy [RD28]. The implementation within the SSE is based on the draft schemas that were available at the time of implementation of this functionality in the SSE (Version 0.0.31 - July 2007). A copy of these schemas can be found on http://schemas.gim.be/cops/. The SOSURL needs to contain a string consisting of the SOS BaseURL and the SOS GetObservation Request. From this GetObservation request, the observation offerings will be deduced. In addition, the filter specified in the GetObservation request will be superimposed on observation filter defined by the end user from within the webMapViewer.

3.2.3.10

viewEmbeddedResult Element There is a mechanism built in SSE to display specific results. If an operation result contains the optional "viewEmbeddedResult" element, SSE will include in the Portal associated result page the Javascript code to display the embedded result with a specific viewer. The viewer will be selected according to the "embeddedType" value. This is done through the template "mass:viewEmbeddedResult" defined in the common stylesheet (see 4.2). This template has to be "applied" explicitly in the service stylesheet in the case of the order result (see 4.4.1) . In the other cases (search result, rfq result), this tempate is automatically "applied" by the common stylesheet. As the "embeddedResult" is passed as a parameter to a JavaScript function, it can not contain special characters like CR, LF. If this is the case, the "<xsl:strip-space elements="*"/>" can be added at the beginning of the service stylesheet to suppress these characters.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 43

Figure 29: viewEmbeddedResult Information

3.2.3.10.1

GML Embedded Type

A value "GML" for the embedded type will equally have as effect to start the Map viewer. In this case the string itself must be valid according to the GML service result schema (see sections 3.2.2.5, 7.3).

3.2.3.10.2

WMC Embedded Type

A "WMC" embedded type expects a valid OGC compliant Web Map Context (WMC) document passed as string.

3.2.3.10.3

KML Embedded Type

A "KML" embedded type expects a valid KML compliant string. If provided as result of a search result, the user will be able to display the KML string with GoogleEarth, see [RD20].

3.2.3.11

searchOutput Element

The "searchOuput" element is automatically added in the RFQ and in the Order input messages by the system if the Search operation is part of the Service lifecycle. In this case, it has to be referenced in the service schema. The search ouput element corresponds to the selected products (metadata records) from a single collection. This element belongs to the schema built on top of the catalogue schema: sse_eoli.xsd.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 44

Figure 30: sse_eoli:searchOuput

3.2.3.12

Authorization Messages

The following elements describe the interface between the SSE Portal and the BPEL workflow engine for the authorization workflows (human workflows).

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 45

mass:send AuthorisationInputMsg

SSE Portal

Autorisation request

Autorisation Workflows

mass:return AuthorisationInputMsg

SSE

Figure 31: AuthorizationWorkflows Interface

Figure 32: Autorisation Input Message Element

Figure 33: Authorization Workflows Interface

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 46

3.2.4 Service Template Schema

In order to define your service schema, you have to customize a service template schema by:

· · · ·

replacing the proposed namespace by yours adding your service specific types and elements removing the definitions which are not used due to the operation model which is either synchronous either asynchronous or because some operations are not used import or not the sse_eoli definition and element references according to the fact that your service includes or not a catalogue operation. be downloaded at

The following is the template schema which can also http://services.eoportal.org/schemas/1.6/ServiceSchemaTemplate.xsd.

<xsd:schema xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sse="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:sse_eoli="http://www.esa.int/sse_eoli" xmlns:oi="http://www.esa.int/oi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.mycompanyname.com/ws/mynamespace" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> <!--Import available types from the SSE schemas files path is relative to http://sseUrl/wsdl/--> <xsd:import namespace="http://www.esa.int/mass" schemaLocation="./sseSchemas/sse_basic.xsd"/> <!--Import available types for the Area of interest--> <!-- import version of GML you want to use for the area of interest. In this template by default, a stub is used. You can replace the stub by specifying the real aoifeatures referencing a specific GML features --> <xsd:import namespace="http://www.esa.int/xml/schemas/mass/aoifeatures" schemaLocation="./sseSchemas/aoifeatures.xsd"/> <!--Import available types from ESA Ordering schema--> <xsd:import namespace="http://www.esa.int/oi" schemaLocation="./sseSchemas/oi.xsd"/> <!-- if another catalogue protocol is used than eoli, change the import here or remove if no catalogue is used--> <xsd:import namespace="http://www.esa.int/sse_eoli" schemaLocation="./sseSchemas/sse_eoli.xsd"/> <!--xml message elements exchanged between the client and services--> <!-- according to your service lifecycle operations really used and the mode of each operation synchronous or asynchronous you can remove the elements which are not used --> <!-- Synchronous RFQ --> <xsd:element name="processRFQInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:commonInput"/> <!--<xsd:element ref="sse:searchInput" minOccurs="0"/>-->

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 47

<xsd:element ref="sse_eoli:searchOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendRFQInput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="processRFQOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="getRFQOutput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- Asynchronous RFQ --> <xsd:element name="sendRFQInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:commonInput"/> <xsd:element ref="sse_eoli:searchOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendRFQInput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="sendRFQOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="returnRFQResultInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:commonInput"/> <xsd:element ref="getRFQOutput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="returnRFQResultOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- Common RFQ --> <xsd:element name="sendRFQInput" type="RFQInputType"> <xsd:annotation>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 48

<xsd:documentation>element that contains a service's RFQ input parameters</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="RFQInputType"> <xsd:annotation> <xsd:documentation>service's rfq input parameters are in this type. The servicespecific info must be added at the end of this type definition.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="oi:originPart" minOccurs="0"/> <xsd:element ref="aoi:areaOfInterest" minOccurs="0"/> <!-- assume GML2--> <!--<xsd:element ref="aoi:AreaOfInterest" minOccurs="0"/> --> <!-- if GML3--> <!---> <!-- Add you service specific RFQ Input information here --> <!---> </xsd:sequence> </xsd:complexType> <xsd:element name="getRFQOutput" type="MultiRFQOutputType"> <xsd:annotation> <xsd:documentation>element contains a service's RFQ results</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="MultiRFQOutputType"> <xsd:annotation> <xsd:documentation>service's RFQ can return one or more results which are the "rfqOutput" elements. The viewFileResult or the viewEmbeddedResult can be used to illustrate the differents "rfqOutput" elements. In some cases, it can make sense to display each rfqOutput on the map as a GML object. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> <xsd:element ref="rfqOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sse:viewFileResult" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sse:viewEmbeddedResult" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="rfqOutput" type="RFQOutputType"> <xsd:annotation> <xsd:documentation>element contains one RFQ result</xsd:documentation> </xsd:annotation> </xsd:element>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 49

<xsd:complexType name="RFQOutputType"> <xsd:annotation> <xsd:documentation>service's rfq results are in this type. The service-specific info must be added at the end of this type definition.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="sse:id" minOccurs="0"/> <xsd:element ref="sse:price" minOccurs="0"/> <!---> <!-- Add you service specific RFQ Output information here --> <!---> </xsd:sequence> </xsd:complexType> <!-- Synchronous Order --> <xsd:element name="processOrderInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:commonInput"/> <!--<xsd:element ref="searchInput" minOccurs="0"/>--> <xsd:element ref="sse_eoli:searchOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendRFQInput" minOccurs="0"/> <xsd:element ref="rfqOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendOrderInput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="processOrderOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="getOrderOutput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- Asynchronous Order --> <xsd:element name="sendOrderInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:commonInput"/> <!-- <xsd:element ref="sse:searchInput" minOccurs="0"/> --> <xsd:element ref="sse_eoli:searchOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendRFQInput" minOccurs="0"/> <xsd:element ref="rfqOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendOrderInput"/> </xsd:sequence> </xsd:complexType>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 50

</xsd:element> <xsd:element name="sendOrderOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="returnOrderResultInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:commonInput"/> <xsd:element ref="getOrderOutput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="returnOrderResultOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- Common Order --> <xsd:element name="sendOrderInput" type="OrderInputType"> <xsd:annotation> <xsd:documentation>contains a service's order input parameters</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="OrderInputType"> <xsd:annotation> <xsd:documentation>service's order input parameters are in this type. The service-specific info must be added at the end of this type definition.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="oi:originPart" minOccurs="0"/> <xsd:element ref="aoi:areaOfInterest" minOccurs="0"/> <!--<xsd:element ref="aoi:AreaOfInterest" minOccurs="0"/> --> <!-- if GML3--> <!---> <!-- Add you service specific Order Input information here --> <!---> </xsd:sequence> </xsd:complexType> <xsd:element name="getOrderOutput" type="OrderOutputType"> <xsd:annotation> <xsd:documentation>contains a service's order result</xsd:documentation> </xsd:annotation>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 51

</xsd:element> <xsd:complexType name="OrderOutputType"> <xsd:annotation> <xsd:documentation>service's order results are in this type. Normally, the service-specific info must be added at the end of this type definition. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> <xsd:element ref="sse:viewFileResult" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sse:viewEmbeddedResult" minOccurs="0" maxOccurs="unbounded"/> <!---> <!-- Add you service specific Order Output information here --> <!---> </xsd:sequence> </xsd:complexType> </xsd:schema>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 52

4.

4.1

SERVICE GRAPHICAL INTERFACES

Generalities

At the service registration, the Service Provider has to provide an XSLT stylesheet file. The purpose of the service stylesheet is twofold:

·

Generate the HTML lines needed, in a first time, to capture the operations (Search, Present, RFQ, and Order) specific input parameters and, in a second time, to display the operations (Search, Present, RFQ, and Order) results. Generate the XML messages that are transmitted from the SSE Portal to the Workflow.

·

The following picture illustrates, in the case of RFQ, all these different XSLT transformations, as yellow arrows. The pictures for the other operations are similar. These transformations will be detailed in the next sections.

HTML RFQ Input Confirm HTML RFQ Input XML RFQ Input

XML Instance

XML Msg Msg

RFQ Workflow Instance

HTML RFQ Output

XML RFQ Output

XML Msg

Portal

Figure 34: Overview of XSLT transformations

Workflow

The service stylesheet structure depends on the approach selected for the service schema namespace as described in section 3.2.3. In the following sections, it is assumed that the second approach has been selected: the service schema has its own namespace.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 53

The service stylesheet, according to the operations implemented at the service level, may need to import the two following SSE stylesheet files:

· ·

SSE Common stylesheet in the sse_common.xsl file Catalogue stylesheet in the massCatalogue.xsl file

The purpose of these stylesheet files is discussed in the following sections.

4.2

SSE Common Stylesheet

The SSE common stylesheet (sse_common.xsl) contains the following template definitions.

· · ·

mass:viewFileResult: this template generates the statements that display the data contains in the viewFileResult element (see 3.2.3.9) mass:viewEmbeddedResult: this template generates the statements that display the data contains in the viewEmbbededResult element (see 3.2.3.10) mass:getRFQOutput: this template generates the statements that display the RFQ results. These results are presented in a table where each row is an option that can be selected for the ordering. This template displays the overall RFQ output table and generates the statements for the RFQ results selection. It calls the "mass:rfqOutputHeader" service templates to display the table header. It applies the template defined in the service Figure 35). stylesheet to display the rfqOutput elements (see The mass:getRFQOutput also applies the above mass:viewFileResult and mass:viewEmbeddedResult templates in case the viewFileResult or/and the viewEmbeddedResults are present in the getRFQOuput element (see Error! Reference source not found.).

Template mass:rfqOutputHeader in service stylesheet

Template mass:getRFQOutput in common stylesheet

Template sns:rfqOutput in service stylesheet

Figure 35: Common stylesheet responsibility

4.3

Catalogue Stylesheet

In the previous version of the SSE, the interface for the search and the present operation was fixed because the only supported catalogue interface was EOLI. Now the SSE supports several types of catalogue and the stylesheet is generated during the service registration. A catalogue stylesheet is divided into two files. The first stylesheet part is based on a template which instantiates option

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 54

values selected by the service provider during the service registration. This first file import a second stylesheet (e.g. eoli-v2-4-catalogue.xsl) which is used to display the catalogue search result. The main templates that are provided by this stylesheet are

· · ·

sse_eoli:sendPresentInput mode="XML": this template generates the XML message passed to the present workflow sse_eoli:processPresentOutputMsg: this template displays the information returned by a present operation. sse_eoli:multiCataloguesSearchOutputMsg: this template displays the information returned by a search operation.

As the search input information may vary from one catalogue to another e.g. the collection names, the available start date and end dates, the templates responsible for the display of the search input information must be part of the service stylesheet. This is illustrated in the following figure.

Figure 36: Catalogue stylesheet responsibility

4.4

Service Stylesheet

Tip

An advised approach for the development of a service stylesheet is a "programming by example" approach. As Service Provider, you have access on the SSE Portal to the other services XML files: stylesheet, wsdl and schema. A link to these files is available on the "Service Information" page in the "Other Information" section.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 55

The following sections contain a skeleton with can be used as a starting point to build your stylesheet: it provides the overall structure of your stylesheet. It is followed by two examples of service stylesheet. The first example is a service which allows to order a processing on a product selected in the results of a search in a catalogue. The second example is a service which allows to make an order after the selection of RFQ result.

4.4.1 Service Stylesheet Skeleton This section provides a skeleton which can be used as a basis to define the service stylesheet.

As explained in the previous section, the service stylesheet has to import the SSE stylesheet (sse_common.xsl). If the service provides the search and present operations, it has also to import the catalogue stylesheet (massCatalogue.xsl). At runtime, a parameter "part" is passed to the service stylesheet by the portal. The following lines are the declarations of this parameter: The "part" parameter allows to specify which part of the stylesheet is used in the current transformation. This allows to have for each service only one stylesheet file that covers the different operations and purposes listed at the beginning of this chapter (see Figure 34). The first part of the service stylesheet is a dispatcher that invokes the templates associated to the different values of the "part" parameter. These templates must only be provided if the associated operations are used by the service. This template is available at http://services.eoportal.org/schemas/1.6/

<!-Replace http://www.mycompanyname.com/ws/mynamespace by your service namespace --> <xsl:stylesheet version="1.0" xmlns:sns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sse="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:oi="http://www.esa.int/oi" xmlns:gml="http://www.opengis.net/gml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- ********************************************************* imported stylesheets those have parts relative to http://sseURL/wsdl/ ********************************************************* --> <xsl:import href="./sse_common.xsl"/> <!-- ********************************************************* Parameter used to specify which part of this style sheet will be applied ********************************************************* --> <xsl:param name="part"/> <!-- ********************************************************* Dispatching to the requested template based on the required operation and on step e.g. display html input, preparing xml message for the workflow or formating operation results into html format ********************************************************* --> <xsl:template match="/*"> <xsl:choose> <!-- RFQ operation templates --> <!-- RFQ input html --> <xsl:when test="$part='sendRFQInputHTML'">

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 56

<xsl:apply-templates select="sse:sendRFQInput"/> </xsl:when> <!--RFQ input xml: synchronous operation --> <xsl:when test="$part='processRFQInputXML'"> <processRFQInputMsg xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sse="http://www.esa.int/mass"> <xsl:apply-templates select="sse:sendRFQInput" mode="XML"/> </processRFQInputMsg> </xsl:when> <!-- RFQ input xml: asynchronous operation--> <xsl:when test="$part='sendRFQInputXML'"> <sendRFQInputMsg xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sse="http://www.esa.int/mass"> <xsl:apply-templates select="sse:sendRFQInput" mode="XML"/> </sendRFQInputMsg> </xsl:when> <!-- RFQ out=put html --> <xsl:when test="$part='getRFQOutputHTML'"> <!--a common template is used which must be independent of the service namespace That's why "apply-templates" is replaced by "call-template" and sse namespace is used. --> <xsl:call-template name="sse:getRFQOutput"/> </xsl:when> <!-- order operation templates --> <!-- sendorderInput html --> <xsl:when test="$part='sendOrderInputHTML'"> <xsl:apply-templates select="sse:sendOrderInput"/> </xsl:when> <!-- sendorderInput xml in case asynchronous order--> <xsl:when test="$part='sendOrderInputXML'"> <sendOrderInputMsg xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sse="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:oi="http://www.esa.int/oi"> <xsl:apply-templates select="sse:sendOrderInput" mode="XML"/> </sendOrderInputMsg> </xsl:when> <!-- sendorderInput xml in case synchronous order--> <xsl:when test="$part='processOrderInputXML'"> <sns:processOrderInputMsg xmlns:sns="http://www.mycompanyname.com/ws/mynamespace" xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:sse="http://www.esa.int/mass" xmlns:oi="http://www.esa.int/oi"> <xsl:apply-templates select="sse:sendOrderInput" mode="XML"/> </sns:processOrderInputMsg> </xsl:when> <!-- getOrderOutput html --> <xsl:when test="$part='getOrderOutputHTML'"> <!--service namespace is used --> <xsl:apply-templates select="sns:getOrderOutput"/> </xsl:when> <xsl:otherwise/> </xsl:choose> </xsl:template> <!--RFQ operation --> <!--RFQ input html --> <!-- Template for the RFQ input information using HTML as output format --> <xsl:template match="sse:sendRFQInput"> <!-- JavaScript used to validate form fields -->

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 57

<script language="JavaScript" type="text/javascript"> // Insert your Javascript code herafter in order to valid input fields values, mandatory fields... function checkMandatoryFields(form) { return true; /* return true if check ok else false */} </script> <!-- Insert your HTML codes hereafter --> </xsl:template> <!--RFQ input xml --> <xsl:template match="sse:sendRFQInput" mode="XML"> <sse:commonInput> <sse:orderId> <xsl:value-of select="orderId"/> </sse:orderId> </sse:commonInput> <sendRFQInput xmlns="http://www.mycompanyname.com/ws/mynamespace"> <xsl:copy-of select="AOI/*"/> <!--only if the AOI tool is used --> <!--<insert XSLT statements to generate valid XML according to your service schema (see Figure 15 - SSE ICD version 1.7). --> </sendRFQInput> </xsl:template> <!-- Template for the RFQ input confirmation HTML Page --> <xsl:template match="sns:confirmRFQInput"> <!-Insert HTML codes here to present the RFQ input information on the Confirmation page. The SSE makes accessible for all RFQ input infomration (inside element sendRFQInput) to this template, so that Service providers can filter the information (to be shown to users). The RFQ input information can be retrieved by using XSL function "xsl:value-of" where the value of the "select" attribute is the name of child elements of the element "sns:sendRFQInput" that is created in the template ' match="sse:sendRFQInput" mode="XML" ' above. For example, with the following element sendRFQInput of a service: <sns:sendRFQInput> <sns:outputFormat>SHAPE</sns:outputFormat> <sns:coordinateSystem>Belgium1972</sns:coordinateSystem> <sns:productType>IMAGE</sns:productType> </sns:sendRFQInput> The following XSL codes will show the outputFormat and coordinateSystem onto the RFQ confirmation page. The value productType is not shown. <table width="640"> <tr> <td height="30" class="stylesheetBoldText"> Output Format: </td> <td height="30" class="stylesheetText"> <xsl:value-of select="sns:outputFormat"/> </td> </tr> <tr> <td height="30" class="stylesheetBoldText"> Coordinate System: </td> <td height="30" class="stylesheetText"> <xsl:value-of select="sns:coordinateSystem"/> </td> </tr> </table> --> </xsl:template>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 58

<!-- Templates for the RFQ output information using HTML format--> <!-- Template for the display of titles of the rfqOutput table using HTML format --> <xsl:template name="sse:rfqOutputHeader"> <!--titles of the table containing RFQ results --> <!--should be <td>column titles</td> fields --> <!-- example <td class="stylesheetHeader" align="left">Price</td> <td class="stylesheetHeader" align="left">Currency</td> <td class="stylesheetHeader" align="left">other title 1</td> <td class="stylesheetHeader" align="left">other title 2</td> --> </xsl:template> <!-- Template for the RFQ output information using HTML format --> <xsl:template match="sns:rfqOutput"> <!--add statements to display your RFQ result data according to the Service RFQOutputType (see Figure 15) --> <!--should be <td><xsl:value-of select="..."/></<td>--> <!-- example <td class="stylesheetText"> <xsl:value-of select="sse:price/oi:refAmount"/> </td> <td class="stylesheetText"> <xsl:value-of select="sse:price/oi:refCurrency"/> </td> <td class="stylesheetText"> <xsl:value-of select="sns:tbd see your service schema element of "/> </td> <td class="stylesheetText"> <xsl:value-of select="sns:tbd see your service schema element "/> </td> --> </xsl:template> <!--Order operation --> <!-- Template for the Order input information using HTML format --> <xsl:template match="sse:sendOrderInput"> <script language="JavaScript" type="text/javascript"> // Insert your Javascript code herafter in order to valid input fields values, mandatory fields function checkMandatoryFields(form) { return true; /* return true if check ok else false if RFQ operation before, the following function can be used to constraint the number of RFQ results that can be selected by the user if the service is designed to return several RFQ output results return checkSelectedRfqResults(form,x, y); where x is the minimum and y is the maximum. checkSelectedRfqResults(form,1, 1); wil allow the selection of one and only one result. */ } </script> <!--insert here HTML code to collect Order specific input data --> </xsl:template> <!-- Template for the order input information using XML format --> <xsl:template match="sse:sendOrderInput" mode="XML"> <sse:commonInput> <sse:orderId> <xsl:value-of select="orderId"/> </sse:orderId> </sse:commonInput> <sendOrderInput xmlns="http://www.mycompanyname.com/ws/mynamespace"> <xsl:copy-of select="AOI/*"/>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 59

<!--only if the AOI tool is used --> <!--<insert XSLT statements to generate valid XML according to your service schema (see Figure 20). --> </sendOrderInput> </xsl:template> <!-- Template for the Order input confirmation HTML Page --> <xsl:template match="sns:confirmOrderInput"> <!-Insert HTML codes here to present the Order input information on the Confirmation page. The SSE makes accessible for all Order input infomration (inside element sendRFQInput) to this template, so that Service providers can filter the information (to be shown to users). The Order input information can be retrieved by using XSL function "xsl:value-of" where the value of the "select" attribute is the name of child elements of the element "sns:sendOrderInput" that is created in the template ' match="sse:sendOrderInput" mode="XML" ' above. For example, with the following element sendOrderInput of a service: <sns:sendOrderInput> <sns:outputFormat>SHAPE</sns:outputFormat> <sns:coordinateSystem>Belgium1972</sns:coordinateSystem> <sns:productType>IMAGE</sns:productType> </sns:sendOrderInput> The following XSL codes will show the outputFormat and coordinateSystem onto the Order confirmation page. The value productType is not shown. <table width="640"> <tr> <td height="30" class="stylesheetBoldText"> Output Format: </td> <td height="30" class="stylesheetText"> <xsl:value-of select="sns:outputFormat"/> </td> </tr> <tr> <td height="30" class="stylesheetBoldText"> Coordinate System: </td> <td height="30" class="stylesheetText"> <xsl:value-of select="sns:coordinateSystem"/> </td> </tr> </table> --> </xsl:template> <!-- Template for the order output information using HTML format --> <xsl:template match="sns:getOrderOutput"> <!-- insert here HTML code to display Order results according to the Service OrderOutputType definition statement are given herafter for example--> <xsl:choose> <xsl:when test="not(starts-with(string(sse:statusInfo/sse:statusId) ,'0'))"> <!-- This order is invalid, display error messages --> <table> <tr height="30"> <td class="stylesheetBoldText"> Error: </td> <td class="stylesheetText"> <xsl:value-of select="sse:statusInfo/sse:statusMsg"/>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 60

</td> </tr> </table> </xsl:when> <xsl:otherwise> <!-- nominal case --> <table> <tr height="30"> <td class="stylesheetBoldText"> Order Result URL: </td> <td class="stylesheetText"> <a target="_blank"> <xsl:attribute name="href"><xsl:value-of select="sns:orderResultURL"/></xsl:attribute> <xsl:value-of select="sns:orderResultURL"/> </a> </td> </tr> </table> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>

4.4.2 ATSR Order Example This section explains how to fill the Service Stylesheet skeleton based on the ATSR service example. The ATSR service provides implements the search and the order operation. As most services implement the order operation, the description of the example starts with the order operation. Additional information for the other operations is provided after. In order to limit the length of the examples, the most meaningful statements have been kept.

To define its stylesheet, the Service Provider needs to know what is the format of XML instance used as input of the transformation, what is expected as output of the transformation. This is explained in the following sections according to the three steps described in Figure 34.

4.4.2.1 SendOrderInput The expected output of this transformation is the sequence of HTML lines that will be inserted in the SSE Order form in order to collect the SSE End User Order data.

The SSE HTML form already provides the following fields that can be used by the Service Provider Stylesheet:

· · ·

orderId : hidden field that contains the orderId generated by SSE submit button reset button

The input XML instance used as input for the XSLT transformation is the same as for all operations:

<?xml version="1.0" encoding="UTF-8"?>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 61

<service xmlns="http://www.esa.int/mass"> <commonInput/> <sendSearchInput/> <sendRFQInput/> <getRFQOutput/> <sendOrderInput/> <getOrderOutput/> </service>

The XSLT statements which are executed in the stylesheet dispatcher:

<xsl:when test="$part='sendOrderInputHTML'"> <xsl:apply-templates select="mass:sendOrderInput"/> </xsl:when>

In the example of the ATSR, the sendOrderInput skeleton in the service stylesheet file becomes:

<xsl:template match="mass:sendOrderInput"> <!-- Script for disabling view/channel selection if sadist-2 output format--> <script type="text/javascript" language="javascript"> function checkMandatoryFields(f) { var message = ""; // validate the required fields if (f.primaryApplicationDomain.selectedIndex == -1) { message += '- Primary application domain (please select one)\n'; } // check other fields if (message != "") { message = "Please complete the missing information\n\n" + message + "\n"; alert(message); return false; } return true; } </script> <table width="200"> <thead> ... <tr> <td class="stylesheetText">Please complete the following information before placing your order. Please note that information about your intended use of the data is required by ESA for monitoring purposes.</td> </tr> </thead> <tbody> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left">Description:</td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <textarea name="projectTitle" cols="25" rows="4" class="stylesheetText" title="Please provide a brief summary of what you intend to do with the data.">A project to ....</textarea> </td> </tr>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 62

<tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left">Application Domain:</td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="primaryApplicationDomain" title="What is the science area that best describes your use of the data?"> <OPTION value="Atmosphere">Atmosphere</OPTION> <OPTION value="Coastal Zones">Coastal Zones</OPTION> ... </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left">Application Domain:</td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="SecondaryApplicationDomain" title="The second most applicable science area to your use of the data?"> <OPTION value="Atmosphere">Atmosphere</OPTION> ... </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left">Area:</td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="studyArea" title="The geographic area of your study?"> <OPTION value="Global">Global</OPTION> ... </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left">Option:</td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="outputFormat" title="Please select the output format for this product" onchange="showHideFormatOptions(this)"> <OPTION value="sadist-2" selected="selected">sadist-2 (all channels, both views)</OPTION> ... </SELECT> </td> </tr> </tbody> </table> <div style="position:relative;"> <div name="formatOptions" id="formatOptions" style="visibility:hidden;"> <table> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left">:</td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="outputView" size="2" multiple="true">

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 63

<OPTION value="nadir">nadir</OPTION> <OPTION value="forward">forward</OPTION> </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left">:</td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="outputChannel" size="7" multiple="true"> <OPTION value="B0.55">B0.55 (0.5 micron channel)</OPTION> ... </SELECT> </td> </tr> </table> </div> </div> </xsl:template>

This stylesheet generates the highlighted part of the following picture.

Figure 37: Order Input Form For ATSR

Some recommendations: · The stylesheet should provide as far as possible default values for the input parameters.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 64

· ·

The stylesheet should validate user input by providing a checkMandatory(massform) Javascript function. The stylesheet must use the predefined stylesheet css classes: stylesheetText, stylesheetBoldText, stylesheetHeader. A common problem happens when JavaScript is present in the stylesheet: the Javascript comparison operators `<','>' is source of problem during the XSLT transformation. One way to avoid the problem is to encapsulate the Javascript functions with the XML CDATA instruction.

<script language="JavaScript" type="text/javascript"> <![CDATA[ function checkMandatoryFields(...) { ...if(a<b)... } ]]> </script>

Tip

4.4.2.2 SendOrderInput Mode XML

The expected output of this transformation is the SendOrderInputMsg message sent to the service Order workflow as described in Figure 21: it must be an XML text valid according to the service schema. The XSLT statements that are executed at the mass.xsl level are:

<xsl:when test="$part='sendOrderInputXML'"> <sendOrderInputMsg xmlns:sns="http://www.xxx.com/ws/atsr" xmlns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:oi="http://www.esa.int/oi"> <xsl:apply-templates select="mass:sendOrderInput" mode="XML"/> </sendOrderInputMsg> </xsl:when>

The input XML instance used as input for the XSLT transformation looks like:

<?xml version="1.0" encoding="UTF-8"?> <service> <sendOrderInput> <orderId>OrderIdValue</orderId> <AOI>AOIValue as returned by AOI tool</AOI> <isSubscription>false</isSubscription> <par1Name>par1Value</par1Name> ... <parnName>parnValue</parnName> </sendOrderInput> </service>

where par1Name, parnName... are the service specific parameters which have been received as part of the HTTP Order POST request. These parameters come from the SendOrderInput stylesheet part described in the previous section. In the example of ASTR , the par%Name parameters become projectTitle, primaryApplicationDomain, SecondaryApplicationDomain, studyArea, outputFormat...

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 65

The AOI parameter is only present if the Service Provider has configured the AOI tool during the service registration. The SSE Portal automatically adds to this list, a set of parameters concerning the SSE user information stored in the system at the user registration time:

userId firstName lastName invoiceAddress postCode city state country emailAddress telNumber (if provided by user) faxNumber (if provided by user)

Tip

Using these predefined parameters, the SSE user profile can be easily inserted in the RFQ or Order input message by including xsl statements like <xsl:value-of select="userId"/>. See example below.

For our current example, the sendOrderInput mode="XML" template becomes:

<!-- *************************************************************************** Template used to generate Order Input XML format *************************************************************************** !--> <xsl:template match="mass:sendOrderInput" mode="XML"> <mass:commonInput> <mass:orderId> <xsl:value-of select="orderId"/> </mass:orderId> </mass:commonInput> <sendOrderInput xmlns="http://www.xxx.com/ws/atsr"> <userId>

<xsl:value-of select="userId"/>

</userId> <ESACat1Info> <projectTitle> <xsl:value-of select="projectTitle"/> </projectTitle> <primaryApplicationDomain> <xsl:value-of select="primaryApplicationDomain"/> </primaryApplicationDomain> <SecondaryApplicationDomain> <xsl:value-of select="SecondaryApplicationDomain"/> </SecondaryApplicationDomain> <studyArea> <xsl:value-of select="studyArea"/> </studyArea> </ESACat1Info> <outputOptions> <outputFormat>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 66

<xsl:value-of select="outputFormat"/> </outputFormat> <xsl:if test="outputFormat[. = 'geotiff']"> <outputViewSet> <xsl:for-each select="outputView"> <outputView> <xsl:value-of select="."/> </outputView> </xsl:for-each> </outputViewSet> <outputChannelSet> <xsl:for-each select="outputChannel"> <outputChannel> <xsl:value-of select="."/> </outputChannel> </xsl:for-each> </outputChannelSet> </xsl:if> </outputOptions> </sendOrderInput> </xsl:template>

4.4.2.3 GetOrderOutput The expected output of that transformation is the HTML text that will be added in the SSE Order result page to display the service specific information "getOrderOutput" part of the message received from the Order workflow (see Figure 20). The input XML instance used as input for the XSLT transformation has the following structure:

<returnOrderResultInputMsg xmlns="http://www.xxx.com/ws/atsr" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:mass="http://www.esa.int/mass" xmlns:oi="http://www.esa.int/oi" > <mass:commonInput> <orderId xmlns="http://www.esa.int/mass">...</orderId> </mass:commonInput> <getOrderOutput> <mass:statusInfo> <mass:statusId>...</mass:statusId> <mass:statusMsg>....</mass:statusMsg> </mass:statusInfo> <!--XML part defined by the service schema </getOrderOutput> </returnOrderResultInputMsg>

The following XML text is received from the workflow for our current example:

<returnOrderResultInputMsg xmlns="http://www.xxx.com/ws/atsr" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:mass="http://www.esa.int/mass" xmlns:oi="http://www.esa.int/oi" > <mass:commonInput> <orderId xmlns="http://www.esa.int/mass">B980F880</orderId> </mass:commonInput> <getOrderOutput> <mass:statusInfo> <mass:statusId>0</mass:statusId> <mass:statusMsg>Successful</mass:statusMsg> </mass:statusInfo>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 67

<mass:viewFileResult> <mass:fileURL>http://...</mass:fileURL> <mass:fileType>gml</mass:fileType> </mass:viewFileResult> <userName>...</userName> <password>...</password> <timePeriodOfService>5</timePeriodOfService> <orderResultSet> <orderResult> <orderResultURL>...</orderResultURL> <productSize>7537</productSize> </orderResult> </orderResultSet> </getOrderOutput> </returnOrderResultInputMsg>

The following stylesheet allows to convert the getOrderOutput part of the previous XML text to HTML text inserted in the Order result page:

<xsl:template match="sns:getOrderOutput"> <table border="1"> <xsl:choose> <xsl:when test="sns:timePeriodOfService"> <tr height="30"> <th class="stylesheetHeader"> period </th> <td class="stylesheetText"> <xsl:value-of select="sns:timePeriodOfService"/> days </td> </tr> </xsl:when> </xsl:choose> <tr> <th class="stylesheetHeader">Result</th> <td> <xsl:for-each select="sns:orderResultSet/sns:orderResult"> <table border="1"> <tbody> <xsl:choose> <xsl:when test="mass:view"> <tr height="30"> <th class="stylesheetHeader"> channel </th> <td class="stylesheetText"> <xsl:value-of select="sns:view"/> </td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="sns:channel"> <tr height="30"> <th class="stylesheetHeader"> channel </th> <td class="stylesheetText">

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 68

<xsl:value-of select="sns:view"/> </td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="sns:orderResultURL"> <tr height="30"> <th class="stylesheetHeader"> Result File: </th> <td class="stylesheetText"> <a target="_blank"> <xsl:attribute name="href">ftp://<xsl:value-of select="../../sns:userName"/>:<xsl:value-of select="../../sns:password"/>@<xsl:value-of select="substringafter(sns:orderResultURL,'//')"/></xsl:attribute>ftp://<xsl:value-of select="../../sns:userName"/>:<xsl:value-of select="../../sns:password"/>@<xsl:value-of select="substring-after(sns:orderResultURL,'//')"/> </a> </td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="mass:productSize"> <tr height="30"> <th class="stylesheetHeader"> size (kb) </th> <td class="stylesheetText"> <xsl:value-of select="sns:productSize"/> </td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="sns:failureMessage"> <tr height="30"> <th class="stylesheetHeader"> Message: </th> <td class="stylesheetText"> <xsl:value-of select="sns:failureMessage"/> </td> </tr> </xsl:when> </xsl:choose> </tbody> </table> </xsl:for-each> </td> </tr> <!-- Display GML footprint if present --> <xsl:if test="//mass:viewFileResult"> <xsl:apply-templates select="//mass:viewFileResult"/> <tr> <th class="stylesheetHeader">viewFileResult URL</th> <td class="stylesheetText"> <a> <xsl:attribute name="href"><xsl:value-of select="//mass:fileURL"/></xsl:attribute>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 69

<xsl:value-of select="//mass:fileURL"/> </a> </td> </tr> </xsl:if> <xsl:choose> <xsl:when test="mass:statusInfo/mass:statusMsg"> <tr height="30"> <th class="stylesheetHeader"> Status: </th> <td class="stylesheetText"> <xsl:value-of select="mass:statusInfo/mass:statusMsg"/> </td> </tr> </xsl:when> </xsl:choose> </table> </xsl:template>

This stylesheet generates the highlighted part of the following picture.

Figure 38: Order Result Information

As the service order result contains the reference of a GML result file to be displayed by the GML viewer, the following statement has been added in the getOrderOuput template

<xsl:apply-templates select="mass:viewFileResult" />

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 70

4.4.3 RFQ Remarks The service stylesheet templates for the RFQ input (see steps 1 and 2 in Figure 34) are similar to the Order template. The RFQ Ouput requires some specific comments.

A RFQ result can contain several "rfqOutput" elements (see mass schema Error! Reference source not found.). At run time, when the RFQ results are displayed, the user can select one or several of the "rfqOuput" elements which become automatically part of the Order Input message. To allow that, the RFQ result is displayed as a table which contains a checkbox for each "rfqOutput" element. The SSE stylesheet is responsible for the display of the table and the checkboxes. The service stylesheet is responsible for the display of the table columns headers and for the display of the cells of the table body.

<!-- Template for the display of titles of the rfqOutput table using HTML format --> <xsl:template name="mass:rfqOutputHeader"> <td class="stylesheetHeader" <td class="stylesheetHeader" <td class="stylesheetHeader" <td class="stylesheetHeader" </xsl:template> <!-- Template for the RFQ output information using HTML format--> <xsl:template match="mass:rfqOutput"> <td class="stylesheetText"><xsl:value-of select="mass:price/oi:refAmount"/></td> <td class="stylesheetText"><xsl:value-of select="mass:price/oi:refCurrency"/></td> <td class="stylesheetText"><xsl:value-of select="sns:area"/></td> <td class="stylesheetText"><xsl:value-of select="sns:validityPeriod"/></td> </xsl:template> >Price</td> >Currency</td> >Area</td> >Validity period</td>

Warning

Do not provide a template for the "getRFQOutput" element in the service stylesheet. It is already defined in the SSE stylesheet and it should not be replaced by the service stylesheet.

If your service provides a RFQ operation which can return several "rfqOutput" elements and you want to limit the number of rfqOutput elements that the user can select during the Order preparation, you can call the "checkSelectedRfqResults" javascript function as shown in the following example.

<xsl:template match="mass:sendOrderInput"> <script language="JavaScript" type="text/javascript"> function checkMandatoryFields(form) {// check that 1<= nbr of select RFQ outputs <= 2 return checkSelectedRfqResults(form,1, 2); } </script> ... </xsl:template>

4.4.4 Search Remarks

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 71

The interface for the Search and Present operations are fixed by the EOLI ICD. Nevertheless, the search input parameters may vary from one catalogue to the others: available dates may be different, clouds coverage parameter can be used or not. The names and number of collections will be different. Depending on the service, there can be, in some cases, only one collection available. In that case, the collection name can be hard coded in the sendSearchInput mode XML template. The following is an example where there is only one collection and the clouds coverage is not used.

<!-- *************************************************************************** Templates used to display the HTML input fields needed for the Search *************************************************************************** !--> <xsl:template match="mass:sendSearchInput"> <!--JavaScript used to validate forms--> <script language="JavaScript" type="text/javascript"> function updateCursor(form) {// to implement the next button which returns the next records... form.cursor.value = parseInt(form.cursor.value) + parseInt(form.iteratorSize.value); } function checkMandatoryFields(form) { if(checkTimeFrame(form)) { if( checkPositiveValue(form.iteratorSize,"Number of metadata")) { if (checkPositiveValue(form.cursor,"Starting number")) { if (form.cloudCoverPerc.value != '') { return checkFloatInRange(form.cloudCoverPerc,"0.0","100.01","Cloud coverage"); } else { return true; } }//if( checkPositiveValue(form.iteratorSize,"Number of metadata")) } return false; }//if(checkTimeFrame(form)) else { // alert("Bad time frame"); return false; }//if(checkTimeFrame(form)) } function checkPositiveValue(field,fieldName) { if ( isNaN(field.value) || isShorter(field.value,1) ) { alert(fieldName + " should be a positive number !"); field.focus(); return false; } return true; } function checkFloatInRange(field,valMinStr,valMaxStr,fieldName) { if( isGreaterThanOrEqualToIntegerStr(field.value, valMinStr) ) { if (isLessThanFloatStr(field.value, valMaxStr) ) return true; } alert(fieldName + " should be a percentage float value !"); field.focus(); return false; } function checkTimeFrame(form) {

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 72

if( ! isDate(form.startDay.value,form.startMonth.value,form.startYear.value) ) { alert("Start date is not valid !"); return false; } if( ! isDate(form.endDay.value,form.endMonth.value,form.endYear.value) ) { alert("End date is not valid !"); return false; } if( checkDateStartBeforeEnd(form)) return true; else { alert("Start date should be before end date !"); return false; } } function checkDateStartBeforeEnd(form) { var intStartYear = parseInt(form.startYear.value,10); var intStartMonth = parseInt(form.startMonth.value,10); var intStartDay = parseInt(form.startDay.value,10); var intEndYear = parseInt(form.endYear.value,10); var intEndMonth = parseInt(form.endMonth.value,10); var intEndDay = parseInt(form.endDay.value,10); if (isLessThanNumber(intStartYear, intEndYear)) return true; if (isLessThanNumber(intEndYear, intStartYear)) return false; if (isLessThanNumber(intStartMonth, intEndMonth)) return true; if (isLessThanNumber(intEndMonth, intStartMonth)) return false; if (isLessThanNumber(intStartDay, intEndDay)) return true; if (isLessThanNumber(intEndDay, intStartDay)) return false; return true; } </script> <!-- ======================================================== --> <table width="200" height="325" border="0"> <tbody> <tr> <td> <table border="0"> <!-- <tbody CLASS="pgttl"> --> <tr> <td CLASS="stylesheetBoldText" colspan="2">Date: </td> </tr> <tr> <td CLASS="stylesheetBoldText">From: </td> <td align="left" valign="top"> <select size="1" name="startYear"> <option value="2003">2003</option> <option value="2004">2004</option> <option value="2005">2005</option> </select> <select size="1" name="startMonth"> <option value="01">Jan</option> <option value="02">Feb</option> <option value="03">Mar</option> <option value="04">Apr</option> <option value="05">May</option> <option value="06">Jun</option> <option value="07">Jul</option> <option value="08">Aug</option> <option value="09">Sep</option> <option value="10">Oct</option> <option value="11">Nov</option> <option value="12">Dec</option> </select> <select size="1" name="startDay"> <option value="01">01</option> <option value="02">02</option>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 73

<option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> </td> </tr> <tr> <td CLASS="stylesheetBoldText" width="50" align="right">To: </td> <td align="left"> <select size="1" name="endYear"> <option value="2003">2003</option> <option value="2004">2004</option> <option value="2005">2005</option> </select> <select size="1" name="endMonth"> <option value="01">Jan</option> <option value="02">Feb</option> <option value="03">Mar</option> <option value="04">Apr</option> <option value="05">May</option> <option value="06">Jun</option> <option value="07">Jul</option> <option value="08">Aug</option> <option value="09">Sep</option> <option value="10">Oct</option> <option value="11">Nov</option> <option value="12">Dec</option> </select> <select size="1" name="endDay"> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 74

<option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> </td> </tr> <!-- </tbody> --> </table> <script type="text/javascript" LANGUAGE="JavaScript"> setCurrentDate(document.MASS.startYear, document.MASS.startMonth,document.MASS.startDay); setCurrentDate(document.MASS.endYear, document.MASS.endMonth,document.MASS.endDay); </script> </td> </tr> <!-<tr> <td CLASS="stylesheetBoldText" valign="bottom" >Cloud Cover Percentage: </td> </tr> <tr> <td valign="top" align="left" > <input type="text" name="cloudCoverPerc" maxlength="5" size="5"/> </td> </tr>--> <input type="hidden" name="cloudCoverPerc" value="100"/> <tr> <td CLASS="stylesheetBoldText" height="30"> Retrieve <input type="text" name="iteratorSize" maxlength="3" size="3" value="10"/> metadata </td> </tr> <tr> <td CLASS="stylesheetBoldText" height="30"> Starting from <input type="text" name="cursor" maxlength="3" size="3" value="1"/> </td> </tr> </tbody> </table> </xsl:template> <!-- *************************************************************************** Templates used to generate Search input information using XML format This information is needed by the multi catalogue workflow to generate the SOAP message for the individual collections *************************************************************************** !--> <xsl:template match="mass:sendSearchInput" mode="XML"> <mass:searchCollections> <!-- in this case, there is only one collection which is thus hardcoded.. If there are several collections, replace by <xsl:for-each select="collectionId"> <mass:parentId><xsl:value-of select="." /></mass:parentId> The workflow has to generate one request by collection--> <mass:parentId>ESA.ERS.ATSR.UBT</mass:parentId> </mass:searchCollections> <xsl:copy-of select="AOI/*"/>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 75

<eoli:searchRequest> <eoli:simpleQuery> <eoli:dataExt> <eoli:tempEle operator="OVERLAP"> <eoli:exTemp> <eoli:beginEnd> <eoli:begin> <xsl:value-of select="startYear"/>-<xsl:value-of select="startMonth"/>-<xsl:value-of select="startDay"/> </eoli:begin> <eoli:end> <xsl:value-of select="endYear"/>-<xsl:value-of select="endMonth"/>-<xsl:value-of select="endDay"/> </eoli:end> </eoli:beginEnd> </eoli:exTemp> </eoli:tempEle> </eoli:dataExt> <xsl:if test="cloudCoverPerc != '' "> <eoli:satelliteDomainConditions> <eoli:cloudCoverCondition operator="LESS EQUAL"> <eoli:cloudCovePerc> <xsl:value-of select="cloudCoverPerc"/> </eoli:cloudCovePerc> </eoli:cloudCoverCondition> </eoli:satelliteDomainConditions> </xsl:if> </eoli:simpleQuery> <eoli:resultType>results</eoli:resultType> <eoli:iteratorSize> <xsl:value-of select="iteratorSize"/> </eoli:iteratorSize> <eoli:cursor> <xsl:value-of select="cursor"/> </eoli:cursor> <!-- the presentation is fixed : for the search it is the summary which returns the interesting information see EOLI ICD --> <eoli:presentation>summary</eoli:presentation> <!-- do not change this line, it is just a placeholder for the workflow --> <eoli:collectionId>NoCollection</eoli:collectionId> </eoli:searchRequest> </xsl:template>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 76

5.

SERVICE INTERFACE EXAMPLES

The purpose of this chapter is to provide examples of SSE compliant WSDL files and the associated SOAP messages that are generated using on the SSE Portal the release RC4 of the workflow tool and on the Service Provider side the SSE Toolbox. The provided example concerns the Order asynchronous operation. The SOAP interaction with the SSE Toolbox is based on the Apache AXIS framework but the BPEL engine is supporting other Web Service publishing environments such as Microsoft .NET, Systinet WASP, BEA Workshop.

5.1

Asynchronous Order Example

The following example is based on a service installed behind the SSE Toolbox. Due to the asynchronous communication WS-Addressing information has to be added in the messages definitions, and the SSE Portal has also a role in the communication "ServiceRequester" because it has to provide the callback to return the results. In this case, the callback location is provided at runtime (see 5.1.3.1). That's the reason why a dummy callback location is written in the WSDL file. Note that the PartnerLinkType is required by BPEL. In order to harmonize the BPEL workflows and WSDL files between services, we follow the convention: role names are composed by the service name with suffix `ServiceProvider' and `ServiceRequester'. The portType names must be the ports previously defined in the WSDL file.

5.1.1 Service WSDL File

<?xml version="1.0" encoding="UTF-8"?> <!--atsr.wsdl--> <definitions targetNamespace= "http://www.xxx.com/ws/atsr" xmlns:tns="http://www.xxx.com/ws/atsr" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing"> <types> <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://www.xxx.com/ws/atsr" schemaLocation="ATSRBasic.xsd"/> <import namespace="http://schemas.xmlsoap.org/ws/2003/03/addressing" schemaLocation="wsaddressing.xsd"/> </schema> </types> <!-- For WS-Addressing supports--> <message name="StartHeader"> <part name="MessageID" element="wsa:MessageID"/> <part name="ReplyTo" element="wsa:ReplyTo"/> </message> <message name="ContinueHeader"> <part name="RelatesTo" element="wsa:RelatesTo"/> </message> <message name="sendOrderInput"> <part name="parameters" element="tns:sendOrderInputMsg"/> </message> <message name="sendOrderOutput"> <part name="parameters" element="tns:sendOrderOutputMsg"/> </message> <message name="returnOrderResultInput"> <part name="parameters" element="tns:returnOrderResultInputMsg"/> </message> <message name="returnOrderResultOutput"> <part name="parameters" element="tns:returnOrderResultOutputMsg"/> </message> <portType name="ATSRBasicService"> <operation name="sendOrder"> <input name="sendOrderInput" message="tns:sendOrderInput"/> <output name="sendOrderOutput" message="tns:sendOrderOutput"/> </operation> </portType> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 77

<portType name="ATSRBasicServiceCallback"> <operation name="returnOrderResult"> <input name="returnOrderResultInput" message="tns:returnOrderResultInput"/> <output name="returnOrderResultOutput" message="tns:returnOrderResultOutput"/> </operation> </portType> <binding name="ATSRBasicServiceSoapBinding" type="tns:ATSRBasicService"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sendOrder"> <wsdlsoap:operation soapAction="sendOrder"/> <input name="sendOrderInput"> <wsdlsoap:header required="false" message="tns:StartHeader" part="MessageID" use="literal"/> <wsdlsoap:body use="literal"/> </input> <output name="sendOrderOutput"> <wsdlsoap:body use="literal"/> </output> </operation> </binding> <binding name="ATSRBasicServiceCallbackSoapBinding" type="tns:ATSRBasicServiceCallback"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="returnOrderResult"> <wsdlsoap:operation soapAction="returnOrderResult"/> <input name="returnOrderResultInput"> <wsdlsoap:header required="true" message="tns:ContinueHeader" part="RelatesTo" use="literal"/> <wsdlsoap:body use="literal"/> </input> <output name="returnOrderResultOutput"> <wsdlsoap:body use="literal"/> </output> </operation> </binding> <service name="ATSRBasicService"> <port binding="tns:ATSRBasicServiceSoapBinding" name="ATSRBasicService"> <wsdlsoap:address location="http://urlxxx/TOOLBOX/services/ATSR"/> </port> </service> <service name="ATSRBasicServiceCallbackService"> <port name="ATSRBasicServiceCallback" binding="tns:ATSRBasicServiceCallbackSoapBinding"> <wsdlsoap:address location="http://openuri.org"/> </port> </service> <plnk:partnerLinkType name="ATSRBasicService"> <plnk:role name="ATSRBasicServiceProvider"> <plnk:portType name="tns:ATSRBasicService"/> </plnk:role> <plnk:role name="ATSRBasicServiceRequester"> <plnk:portType name="tns:ATSRBasicServiceCallback"/> </plnk:role> </plnk:partnerLinkType> </definitions>

5.1.2 Service Schema File

<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:oi="http://www.esa.int/oi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.xxx.com/ws/atsr" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> <!--Import available types from the SSE schemas files--> <xsd:import namespace="http://www.esa.int/mass" schemaLocation="./ sseSchemas/sse_basic.xsd"/> <xsd:import namespace="http://www.esa.int/sse_eoli" schemaLocation="./sseSchemas/sse_eoli.xsd"/> <!--Import available types for the Area of interest--> <xsd:import namespace="http://www.esa.int/xml/schemas/mass/aoifeatures" schemaLocation="./ sseSchemas/aoifeatures.xsd"/> <!--Import available types from ESA Ordering schema--> <xsd:import namespace="http://www.esa.int/oi" schemaLocation=" sseSchemas/oi.xsd"/> <!--xml message elements exchanged between the client and services--> <!-- Asynchronous Order --> <xsd:element name="sendOrderInputMsg"> <xsd:complexType>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 78

<xsd:sequence> <xsd:element ref="mass:commonInput"/> <xsd:element ref="sse_eoli:searchOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendOrderInput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="sendOrderOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="mass:statusInfo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="returnOrderResultInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="mass:commonInput"/> <xsd:element ref="getOrderOutput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="returnOrderResultOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="mass:statusInfo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- Common Order --> <xsd:element name="sendOrderInput" type="OrderInputType"> <xsd:annotation> <xsd:documentation>contains a service's order input parameters</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="OrderInputType"> <xsd:annotation> <xsd:documentation>service's order input parameters are in this type. The service-specific info must be added at the end of this type definition.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="oi:originPart" minOccurs="0"/> <xsd:element ref="aoi:areaOfInterest" minOccurs="0"/> <!---> <!-- Add you service specific Order Input information here --> <!---> <xsd:element name="ESACat1Info"> <xsd:annotation> <xsd:documentation>Information pertaining to ESA Category-1 status of order. To be collated and reported to ESA for monitoring purposes.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:all> <xsd:element name="projectTitle" type="xsd:string"> <xsd:annotation> <xsd:documentation>Free text field for project title </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="primaryApplicationDomain" type="AppDomainType"/>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 79

<xsd:element name="SecondaryApplicationDomain" type="AppDomainType"/> <xsd:element name="studyArea" type="StudyAreaType"/> </xsd:all> </xsd:complexType> </xsd:element> <xsd:element name="outputOptions"> <xsd:annotation> <xsd:documentation>Options for delivery of output products. Choice of native (sadist-2) or geotiff format output. Geotiff output only supports 1 view and 1 channel per file, but service should be able to provide mutliple geotiff output files from 1 original ATSR product. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:all> <xsd:element name="outputFormat" type="ATSRFormatType"/> <xsd:element name="outputViewSet" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="outputView" type="ATSRViewType" maxOccurs="2"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="outputChannelSet" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="outputChannel" type="ATSRChannelType" maxOccurs="7"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:all> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="getOrderOutput" type="OrderOutputType"> <xsd:annotation> <xsd:documentation>contains a service's order result</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="OrderOutputType"> <xsd:annotation> <xsd:documentation>service's order results are in this type. Normally, the service-specific info must be added at the end of this type definition. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="mass:statusInfo"/> <xsd:element ref="mass:viewFileResult" minOccurs="0"/> <xsd:element ref="mass:viewEmbeddedResult" minOccurs="0" maxOccurs="unbounded"/> <!---> <!-- Add you service specific Order Output information here --> <!---> <xsd:sequence minOccurs="0"> <xsd:element name="userName" minOccurs="0"> <xsd:annotation> <xsd:documentation>User name to be used for the download.</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="3"/> <xsd:maxLength value="100"/>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 80

</xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="password" minOccurs="0"> <xsd:annotation> <xsd:documentation>Password to be used for the download.</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="8"/> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="timePeriodOfService" type="xsd:positiveInteger"> <xsd:annotation> <xsd:documentation>Period in which the User will be able to download the ordered product.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderResultSet"> <xsd:annotation> <xsd:documentation>set of results containing either URLs pointing to output products to download, or error message explaining why not.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="orderResult" maxOccurs="14"> <xsd:annotation> <xsd:documentation>One for each channel/view combination, if using geotiff format output. Just 1 if using sadist-2 format output.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="view" type="ATSRViewType" minOccurs="0"> <xsd:annotation> <xsd:documentation>The view (forward or nadir) to which the orderResult information relates</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="channel" type="ATSRChannelType" minOccurs="0"> <xsd:annotation> <xsd:documentation>The ATSR channel to which the orderResult information relates</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:choice> <xsd:sequence> <xsd:element name="orderResultURL" type="xsd:anyURI"> <xsd:annotation> <xsd:documentation>URL to be used for the data download.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="productSize" type="xsd:float"> <xsd:annotation> <xsd:documentation>This represents the size of a product required expressed in MB.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:element name="failureMessage" type="xsd:string"> <xsd:annotation> <xsd:documentation>Reson why a particular view/channel cannot be delivered as geotiff</xsd:documentation>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 81

</xsd:annotation> </xsd:element> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:sequence> </xsd:complexType> <!--Custom types --> <xsd:simpleType name="AppDomainType"> <xsd:annotation> <xsd:documentation>Application domains for ESA Category-1 proposals from http://eopi.esa.int</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Atmosphere"/> ... </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="StudyAreaType"> <xsd:annotation> <xsd:documentation>Study areas for ESA Category-1 proposals from http://eopi.esa.int</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Global"/> ... </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ATSRChannelType"> <xsd:annotation> <xsd:documentation>Band identifier</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="B0.55"/> ... </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ATSRFormatType"> <xsd:annotation> <xsd:documentation>Selection of format for output product</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="sadist-2"/> <xsd:enumeration value="geotiff"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ATSRViewType"> <xsd:annotation> <xsd:documentation>Selection of view for output product</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="nadir"/> <xsd:enumeration value="forward"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 82

5.1.3 SOAP Messages

The following dumps are the SOAP messages generated by the sendOrder and returnOrderResult operations.

5.1.3.1 sendOrder SOAP HTTP Request

POST /TOOLBOX/services/ATSR HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.0 Host: www.xxx.com Cache-Control: no-cache Pragma: no-cache SOAPAction: "sendOrder" Content-Length: 1291 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"> <soapenv:Header> <ns1:MessageID xmlns:ns1="http://schemas.xmlsoap.org/ws/2003/03/addressing">bpel://localhost/default/ATSRBasicOr derFlow~1.0/203-BpInv0-BpSeq0.3-3</ns1:MessageID>

<!--callback location

<ns2:ReplyTo xmlns:ns2="http://schemas.xmlsoap.org/ws/2003/03/addressing"> <ns2:Address>http://mass.spacebel.be/collaxa/default/ATSRBasicOrderFlow/1.0/ATSRBasicService/ATSR BasicServiceRequester</ns2:Address> <ns2:PortType xmlns:ns3="http://www.xxx.com/ws/atsr">ns3:ATSRBasicServiceCallback</ns2:PortType> <ns2:ServiceName xmlns:ns4="http://www.xxx.com/ws/atsr">ns4:ATSRBasicServiceCallbackService</ns2:ServiceName> </ns2:ReplyTo> </soapenv:Header> <soapenv:Body> <sendOrderInputMsg xmlns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:gml="http://www.opengis.net/gml" xmlns:oi="http://www.esa.int/oi"> <mass:commonInput> <mass:orderId>12345678</mass:orderId> </mass:commonInput> <sendOrderInput> <userId>String</userId> <date>1998-01-01</date> <format>HDF</format> </sendOrderInput> </sendOrderInputMsg> </soapenv:Body> </soapenv:Envelope>

5.1.3.2 sendOrder SOAP HTTP Response

HTTP/1.1 200 OK Date: Wed, 25 Feb 2004 08:44:21 GMT Server: Apache Coyote HTTP/1.1 Connector [1.0] Content-Type: text/xml <?xml version="1.0" encoding="UTF-8"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header/> <soap-env:Body> <sendOrderOutputMsg xmlns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass"> <mass:statusInfo> <mass:statusId>0</mass:statusId> </mass:statusInfo> </sendOrderOutputMsg> </soap-env:Body> </soap-env:Envelope>

5.1.3.3 returnOrderResult SOAP HTTP Request

POST /collaxa/default/ATSRBasicOrderFlow/1.0/ATSRBasicService/ATSRBasicServiceRequester HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.1 Host: 194.7.127.147 ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 83

Cache-Control: no-cache Pragma: no-cache SOAPAction: "returnOrderResult" Content-Length: 1115 <?xml version="1.0" encoding="UTF-8"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header> <wsa:RelatesTo soap-env:mustUnderstand="0" xsi:type="xsd:string" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:xsd="www.w3.org/2001/XMLSchema" xmlns:xsi="www.w3.org/2001/XMLSchemainstance">bpel://localhost/default/ATSRBasicOrderFlow~1.0/203-BpInv0-BpSeq0.33</wsa:RelatesTo> </soap-env:Header> <soap-env:Body> <returnOrderResultInputMsg xmlns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass"> <mass:commonInput> <mass:orderId>12345678</mass:orderId> </mass:commonInput> <getOrderOutput> <mass:statusInfo> <mass:statusId>0</mass:statusId> <mass:statusMsg>Successful</mass:statusMsg> </mass:statusInfo> <mass:viewFileResult> <mass:fileURL>http://xxx/atsr/gml/FF808881.gml</mass:fileURL> <mass:fileType>gml</mass:fileType> </mass:viewFileResult> <userName>xxx</userName> <password>yyy</password> <timePeriodOfService>5</timePeriodOfService> <orderResultSet> <orderResult> <orderResultURL>ftp://xxx/ralubt-9610130956-16136-031211-2av350.ubt-tvl.gz</orderResultURL> <productSize>7537</productSize> </orderResult> </orderResultSet> </getOrderOutput> </returnOrderResultInputMsg> </soap-env:Body> </soap-env:Envelope>

5.1.3.4

returnOrderResult SOAP HTTP Response

HTTP/1.1 200 OK Date: Wed, 25 Feb 2004 08:51:55 GMT Server: Jetty/4.2.11 (Linux/2.4.18-14 i386 java/1.4.2_01) Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"> <soapenv:Body> <returnOrderResultOutputMsg xmlns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass"> <mass:statusInfo> <mass:statusId>0</mass:statusId> <mass:statusMsg>successfully</mass:statusMsg> </mass:statusInfo> </returnOrderResultOutputMsg> </soapenv:Body> </soapenv:Envelope>

5.1.4 Service Stylesheet

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:sns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass" xmlns="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:gml="http://www.opengis.net/gml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- ********************************************************* imported stylesheets ********************************************************* --> <xsl:import href="./sse_common.xsl"/> <!-- ********************************************************* Parameter used to specify which part of this style sheet will be applied ********************************************************* --> <xsl:param name="part"/> <!-- ********************************************************* Dispatching to the requested template based on the required operation ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 84

and on step e.g. display html input, preparing xml message for the workflow or formating operation results into html format ********************************************************* --> <xsl:template match="/*"> <xsl:choose> <!-- Used to prepare order input form page --> <!-- sendorderInput html --> <xsl:when test="$part='sendOrderInputHTML'"> <xsl:apply-templates select="mass:sendOrderInput"/> </xsl:when> <!-- sendorderInput xml --> <!-- Used to compose order input xml message, that will be sent to the service soap server (toolbox) --> <xsl:when test="$part='sendOrderInputXML'"> <sendOrderInputMsg xmlns:sns="http://www.xxx.com/ws/atsr" xmlns="http://www.xxx.com/ws/atsr" xmlns:mass="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:oi="http://www.esa.int/oi"> <xsl:apply-templates select="mass:sendOrderInput" mode="XML"/> </sendOrderInputMsg> </xsl:when> <!-- getOrderOutput html --> <!-- Used to show the Order output to end user--> <xsl:when test="$part='getOrderOutputHTML'"> <xsl:apply-templates select="sns:getOrderOutput"/> </xsl:when> <xsl:otherwise/> </xsl:choose> </xsl:template> <xsl:template name="mass:getMaxNbrOfItemsTemplate"> <script language="JavaScript"> function getMaxNumberOfSelectedItems() {return 100; /* this value is to set the upper limit for the number of products included in an order request - an order request cannot include more than 100 products */} function getMinNumberOfSelectedItems() {return 1;/* this value is to set the lower limit for the number of products included in and order request - an order request must include at least 1 item */;} </script> </xsl:template> <!-- *************************************************************************** Templates used to generate Order Input HTML format *************************************************************************** !--> <!-- Used to prepare service Order Input Form HTML page--> <xsl:template match="mass:sendOrderInput"> <!-- Script for disabling view/channel selection if sadist-2 output format--> <script type="text/javascript" language="javascript"> <xsl:text disable-output-escaping="yes"> <!-function checkMandatoryFields(f) { var message = ""; // validate the required fields if (f.primaryApplicationDomain.selectedIndex == -1) { message += '- Primary application domain (please select one)\n'; } if (f.SecondaryApplicationDomain.selectedIndex == -1) { message += '- Secondary application domain (please select one)\n'; } if (f.studyArea.selectedIndex == -1) { message += '- Study area (please select one)\n'; } if (f.projectTitle.value == "A project to ....") { message += '- Project Title\n' } if (f.outputFormat.selectedIndex == 1) //geotiff selected { (f.outputView.selectedIndex == -1) { += '- View(s) for conversion to geotiff\n'; } (f.outputChannel.selectedIndex == -1) { ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 85

+= '- Channel(s) for conversion to geotiff\n'; } } if (message != "") { message = "Please complete the missing information\n\n" + message + "\n"; alert(message); return false; } return true; } .... } //--> </xsl:text> </script> <table width="200"> <thead> <tr> <th> <a href="http://www.xxx.rl.ac.uk/" target="_blank"> <img src="http://... " alt="xxx" height="20" width="57" border="0"/> </a> </th> </tr> <tr> <td class="stylesheetText">Please complete the following information before placing your order. Please note that information about your intended use of the data is required by ESA for monitoring purposes.</td> </tr> </thead> <tbody> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left"> Description: </td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <textarea name="projectTitle" cols="25" rows="4" class="stylesheetText" title="Please provide a brief summary of what you intend to do with the data.">A project to ....</textarea> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left"> Application Domain: </td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="primaryApplicationDomain" title="What is the science area that best describes your use of the data?"> <OPTION value="Atmosphere">Atmosphere</OPTION> <OPTION value="Coastal Zones">Coastal Zones</OPTION> <OPTION value="Geodesy">Geodesy</OPTION> <OPTION value="Geology">Geology</OPTION> <OPTION value="Hazards">Hazards </OPTION> <OPTION value="Hydrology">Hydrology</OPTION> <OPTION value="Ice">Ice </OPTION> <OPTION value="Land Environment">Land Environment</OPTION> <OPTION value="Methods">Methods</OPTION> <OPTION value="Oceanography">Oceanography</OPTION> <OPTION value="Renewable Resources">Renewable Resources</OPTION> <OPTION value="Topographic Mapping">Topographic Mapping</OPTION> <OPTION value="Other">Other </OPTION> <OPTION value="Calibration/Validation">Calibration/Validation</OPTION> <OPTION value="Sea-Ice">Sea-Ice </OPTION> <OPTION value="Climate">Climate</OPTION> </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 86

Application Domain: </td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="SecondaryApplicationDomain" title="The second most applicable science area to your use of the data?"> <OPTION value="Atmosphere">Atmosphere</OPTION> <OPTION value="Coastal Zones">Coastal Zones</OPTION> <OPTION value="Geodesy">Geodesy</OPTION> <OPTION value="Geology">Geology</OPTION> <OPTION value="Hazards">Hazards </OPTION> <OPTION value="Hydrology">Hydrology</OPTION> <OPTION value="Ice">Ice </OPTION> <OPTION value="Land Environment">Land Environment</OPTION> <OPTION value="Methods">Methods</OPTION> <OPTION value="Oceanography">Oceanography</OPTION> <OPTION value="Renewable Resources">Renewable Resources</OPTION> <OPTION value="Topographic Mapping">Topographic Mapping</OPTION> <OPTION value="Other">Other </OPTION> <OPTION value="Calibration/Validation">Calibration/Validation</OPTION> <OPTION value="Sea-Ice">Sea-Ice </OPTION> <OPTION value="Climate">Climate</OPTION> </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left"> Area: </td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="studyArea" title="The geographic area of your study?"> <OPTION value="Global">Global</OPTION> <OPTION value="Various">Various</OPTION> <OPTION value="Asia">Asia</OPTION> <OPTION value="Europe">Europe</OPTION> <OPTION value="Africa">Africa</OPTION> <OPTION value="Australasia">Australasia</OPTION> <OPTION value="North/Central America">North/Central America</OPTION> <OPTION value="South America">South America</OPTION> <OPTION value="Arctic/Anctartic/Grenland">Arctic/Anctartic/Grenland</OPTION> <OPTION value="Pacific Ocean">Pacific Ocean</OPTION> <OPTION value="Atlantic Ocean">Atlantic Ocean</OPTION> <OPTION value="Indian Ocean">Indian Ocean</OPTION> <OPTION value="Internal seas">Internal seas</OPTION> </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left"> Option: </td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="outputFormat" title="Please select the output format for this product" onchange="showHideFormatOptions(this)"> <OPTION value="sadist-2" selected="selected">sadist-2 (all channels, both views)</OPTION> <OPTION value="geotiff">geotiff (1 channel/view per output file)</OPTION> </SELECT> </td> </tr> <tr> <th class="stylesheetBoldText">Note</th> </tr> <tr> <td class="stylesheetSmText">If you select geotiff output format, you can select the view and channel combinations you want to be delivered as output geotiff files. If you select sadist-2 as the output format, these options will be ignored as the output product contains both views and all available channels. Use CTRL for mutliple selections.</td> </tr> </tbody> </table> <div style="position:relative;"> <div name="formatOptions" id="formatOptions" style="visibility:hidden;"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 87

<table> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left"> : </td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="outputView" size="2" multiple="true"> <OPTION value="nadir">nadir</OPTION> <OPTION value="forward">forward</OPTION> </SELECT> </td> </tr> <tr> <td CLASS="stylesheetBoldText" valign="bottom" align="left"> : </td> </tr> <tr> <td CLASS="stylesheetText" valign="top" align="left"> <SELECT NAME="outputChannel" size="7" multiple="true"> <OPTION value="B0.55">B0.55 (0.5 micron channel)</OPTION> <OPTION value="B0.67">B0.67 (0.67 micron channel)</OPTION> <OPTION value="B0.87">B0.87 (0.87 micron channel)</OPTION> <OPTION value="B1.60">B1.60 (1.6 micron channel)</OPTION> <OPTION value="B3.70">B3.70 (3.7 micron channel)</OPTION> <OPTION value="B10.8">B10.8 (10.8 micron channel)</OPTION> <OPTION value="B12.0">B12.0 (12.0 micron channel)</OPTION> </SELECT> </td> </tr> </table> </div> </div> </xsl:template> <!-- *************************************************************************** Template used to generate Order Input XML format *************************************************************************** !--> <xsl:template match="mass:sendOrderInput" mode="XML"> <mass:commonInput> <mass:orderId> <xsl:value-of select="orderId"/> </mass:orderId> </mass:commonInput> <sendOrderInput xmlns="http://www.xxx.com/ws/atsr"> <userId> <xsl:value-of select="userId"/> </userId> <resTitle> <xsl:value-of select="selectedItem"/> </resTitle>--> <ESACat1Info> <projectTitle> <xsl:value-of select="projectTitle"/> </projectTitle> <primaryApplicationDomain> <xsl:value-of select="primaryApplicationDomain"/> </primaryApplicationDomain> <SecondaryApplicationDomain> <xsl:value-of select="SecondaryApplicationDomain"/> </SecondaryApplicationDomain> <studyArea> <xsl:value-of select="studyArea"/> </studyArea> </ESACat1Info> <outputOptions> <outputFormat> <xsl:value-of select="outputFormat"/> </outputFormat> <xsl:if test="outputFormat[. = 'geotiff']"> <outputViewSet> <xsl:for-each select="outputView"> <outputView> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 88

<xsl:value-of select="."/> </outputView> </xsl:for-each> </outputViewSet> <outputChannelSet> <xsl:for-each select="outputChannel"> <outputChannel> <xsl:value-of select="."/> </outputChannel> </xsl:for-each> </outputChannelSet> </xsl:if> </outputOptions> </sendOrderInput> </xsl:template> <!-- *************************************************************************** Template used to generate Order Output HTML format *************************************************************************** !--> <xsl:template match="sns:getOrderOutput"> <table border="1"> <xsl:choose> <xsl:when test="sns:timePeriodOfService"> <tr height="30"> <th class="stylesheetHeader"> period </th> <td class="stylesheetText"> <xsl:value-of select="sns:timePeriodOfService"/> days </td> </tr> </xsl:when> </xsl:choose> <tr> <th class="stylesheetHeader">Result</th> <td> <xsl:for-each select="sns:orderResultSet/sns:orderResult"> <table border="1"> <tbody> <xsl:choose> <xsl:when test="mass:view"> <tr height="30"> <th class="stylesheetHeader"> channel </th> <td class="stylesheetText"> <xsl:value-of select="sns:view"/> </td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="sns:channel"> <tr height="30"> <th class="stylesheetHeader"> channel </th> <td class="stylesheetText"> <xsl:value-of select="sns:view"/> </td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="sns:orderResultURL"> <tr height="30"> <th class="stylesheetHeader"> Result File: </th> <td class="stylesheetText"> <a target="_blank"> <xsl:attribute name="href">ftp://<xsl:value-of select="../../sns:userName"/>:<xsl:value-of select="../../sns:password"/>@<xsl:value-of select="substringafter(sns:orderResultURL,'//')"/></xsl:attribute>ftp://<xsl:value-of select="../../sns:userName"/>:<xsl:value-of select="../../sns:password"/>@<xsl:value-of select="substring-after(sns:orderResultURL,'//')"/> </a> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 89

</td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="mass:productSize"> <tr height="30"> <th class="stylesheetHeader"> size (kb) </th> <td class="stylesheetText"> <xsl:value-of select="sns:productSize"/> </td> </tr> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="sns:failureMessage"> <tr height="30"> <th class="stylesheetHeader"> Message: </th> <td class="stylesheetText"> <xsl:value-of select="sns:failureMessage"/> </td> </tr> </xsl:when> </xsl:choose> </tbody> </table> </xsl:for-each> </td> </tr> <!-- Display GML footprint if present --> <xsl:if test="//mass:viewFileResult"> <xsl:apply-templates select="//mass:viewFileResult"/> <tr> <th class="stylesheetHeader">viewFileResult URL</th> <td class="stylesheetText"> <a> <xsl:attribute name="href"><xsl:value-of select="//mass:fileURL"/></xsl:attribute> <xsl:value-of select="//mass:fileURL"/> </a> </td> </tr> </xsl:if> <xsl:choose> <xsl:when test="mass:statusInfo/mass:statusMsg"> <tr height="30"> <th class="stylesheetHeader"> Status: </th> <td class="stylesheetText"> <xsl:value-of select="mass:statusInfo/mass:statusMsg"/> </td> </tr> </xsl:when> </xsl:choose> </table> </xsl:template> </xsl:stylesheet>

5.2

Asynchronous RFQ Example

See 5.1 with "Order" replaced by "RFQ": e.g. the callback SOAP action becomes returnRFQResult.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 90

5.3

Synchronous Order Example

The following example is based on an example service installed behind the Apache Axis 1.2 webservice framework. The service can be registered to the SSE via the Service Registration wizard, using "Order Interface: Default SSE synchronous and asynchronous Order Registration (Version: 1.6+ )" interface and the service description files to be described in the following subsections. This example demonstrates how to get input from Users (to process an order request), and return the order results to Users via the SSE. And this communication is done synchronously.

5.3.1 Service WSDL File <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:sse="http://www.esa.int/mass" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:tns="http://www.mycompanyname.com/ws/mynamespace" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.mycompanyname.com/ws/mynamespace"> <types> <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://www.mycompanyname.com/ws/mynamespace" schemaLocation="./processOrder.xsd"/> <import namespace="http://schemas.xmlsoap.org/ws/2003/03/addressing" schemaLocation="http://services.eoportal.org/schemas/1.6/sseSchemas/ws-addressing.xsd"/> </schema> </types> <message name="processOrderRequestMsg"> <part name="parameters" element="tns:processOrderInputMsg"/> </message> <message name="processOrderResponseMsg"> <part name="parameters" element="tns:processOrderOutputMsg"/> </message> <portType name="ExampleSynchronousOrderService"> <operation name="processOrder"> <input name="processOrderRequestMsg" message="tns:processOrderRequestMsg"/> <output name="processOrderResponseMsg" message="tns:processOrderResponseMsg"/> </operation> </portType> <binding name="ExampleSynchronousOrderServiceSoapBinding" type="tns:ExampleSynchronousOrderService"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="processOrder"> <wsdlsoap:operation soapAction="processOrder"/> <input> <wsdlsoap:body use="literal"/> </input>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 91

<output> <wsdlsoap:body use="literal"/> </output> </operation> </binding> <service name="ExampleSynchronousOrderService"> <port name="ExampleSynchronousOrderService" binding="tns:ExampleSynchronousOrderServiceSoapBinding"> <wsdlsoap:address location="http://localhost:8080/axis/services/ESyncOrder"/> </port> </service> </definitions>

5.3.2 Service Schema File <xsd:schema xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sse="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:sse_eoli="http://www.esa.int/sse_eoli" xmlns:oi="http://www.esa.int/oi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.mycompanyname.com/ws/mynamespace" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> <xsd:import namespace="http://www.esa.int/mass" schemaLocation="http://services.eoportal.org/schemas/1.6/sseSchemas/sse_basic.xsd"/> <xsd:import namespace="http://www.esa.int/xml/schemas/mass/aoifeatures" schemaLocation="http://services.eoportal.org/schemas/1.6/sseSchemas/aoifeatures.xsd"/> <xsd:import namespace="http://www.esa.int/sse_eoli" schemaLocation="http://services.eoportal.org/schemas/1.6/sseSchemas/eoli/2.4/sse_eoli.xsd"/> <xsd:import namespace="http://www.esa.int/oi" schemaLocation="http://services.eoportal.org/schemas/1.6/sseSchemas/oi.xsd"/> <!-- Synchronous Order --> <xsd:element name="processOrderInputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="sse:commonInput"/> <!--<xsd:element ref="searchInput" minOccurs="0"/>--> <xsd:element ref="sse_eoli:searchOutput" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sendOrderInput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="processOrderOutputMsg"> <xsd:complexType> <xsd:sequence> <xsd:element ref="getOrderOutput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- Common Order -->

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 92

<xsd:element name="sendOrderInput" type="OrderInputType"> <xsd:annotation> <xsd:documentation>contains a service's order input parameters</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="OrderInputType"> <xsd:annotation> <xsd:documentation>service's order input parameters are in this type. The service-specific info must be added at the end of this type definition.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="oi:originPart" minOccurs="0"/> <xsd:element ref="aoi:areaOfInterest" minOccurs="0"/> <xsd:element name="serviceSpecificInputAttribute"/> </xsd:sequence> </xsd:complexType> <xsd:element name="getOrderOutput" type="OrderOutputType"> <xsd:annotation> <xsd:documentation>contains a service's order result</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="OrderOutputType"> <xsd:annotation> <xsd:documentation>service's order results are in this type. Normally, the service-specific info must be added at the end of this type definition. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> <xsd:element ref="sse:viewFileResult" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="sse:viewEmbeddedResult" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="serviceSpecificOutputAttribute"/> </xsd:sequence> </xsd:complexType> </xsd:schema>

5.3.3 SOAP Messages 5.3.3.1 ProcessOrder SOAP HTTP Request POST /axis/services/ESyncOrder HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/#axisVersion# Host: 127.0.0.1:9999 Cache-Control: no-cache Pragma: no-cache

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 93

SOAPAction: "processOrder" Content-Length: 695 Connection: close <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"><soapenv:Body><processOrderInputMsg xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:gml="http://www.opengis.net/gml" xmlns:oi="http://www.esa.int/oi" xmlns:sse="http://www.esa.int/mass"><commonInput xmlns="http://www.esa.int/mass"><orderId>05811D80</orderId></commonInput><sendOrder Input><serviceSpecificInputAttribute1>input attribute 1 value</serviceSpecificInputAttribute1></sendOrderInput></processOrderInputMsg></soapenv :Body></soapenv:Envelope>

5.3.3.2 ProcessOrder SOAP HTTP Response HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Date: Mon, 20 Jun 2011 14:05:03 GMT Connection: close

<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body><processOrderOutputMsg xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:aoi="http://www.esa.int/xml/schemas/sse/aoifeatures" xmlns:oi="http://www.esa.int/oi" xmlns:sse="http://www.esa.int/mass"> <getOrderOutput> <sse:statusInfo> <sse:statusId>0</sse:statusId> <sse:statusMsg>Success</sse:statusMsg> </sse:statusInfo> <serviceSpecificOutputAttribute1>Service specific output attribute 1 value</serviceSpecificOutputAttribute1> </getOrderOutput> </processOrderOutputMsg> </soapenv:Body> </soapenv:Envelope>

5.3.4 Service Stylesheet <xsl:stylesheet version="1.0" xmlns:sns="http://www.mycompanyname.com/ws/mynamespace" xmlns:sse="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:oi="http://www.esa.int/oi"

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 94

xmlns:gml="http://www.opengis.net/gml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- ********************************************************* imported stylesheets those have parts relative to http://sseURL/wsdl/ ********************************************************* --> <xsl:import href="./sse_common.xsl"/> <!-- ********************************************************* Parameter used to specify which part of this style sheet will be applied ********************************************************* --> <xsl:param name="part"/> <!-- ********************************************************* Dispatching to the requested template based on the required operation and on step e.g. display html input, preparing xml message for the workflow or formating operation results into html format ********************************************************* --> <xsl:template match="/*"> <xsl:choose> <!-- order input form html --> <xsl:when test="$part='sendOrderInputHTML'"> <xsl:apply-templates select="sse:sendOrderInput"/> </xsl:when> <!-- build processOrderInputMsg to send to remote endpoint--> <xsl:when test="$part='processOrderInputXML'"> <sns:processOrderInputMsg xmlns:sns="http://www.mycompanyname.com/ws/mynamespace" xmlns="http://www.mycompanyname.com/ws/mynamespace" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:sse="http://www.esa.int/mass" xmlns:oi="http://www.esa.int/oi"> <xsl:apply-templates select="sse:sendOrderInput" mode="XML"/> </sns:processOrderInputMsg> </xsl:when> <!-- order result html --> <xsl:when test="$part='getOrderOutputHTML'"> <!--service namespace is used --> <xsl:apply-templates select="sns:getOrderOutput"/> </xsl:when> <xsl:otherwise/> </xsl:choose> </xsl:template> <!-- Template for the Order input information using HTML format --> <xsl:template match="sse:sendOrderInput"> <!--insert here HTML code to collect Order specific input data --> <table border="0" cellpadding="0" cellspacing="0" class="celltablesm" width="100%"> <tr> <td class="stylesheetBoldText">Service specific input attribute 1: </td> <td class="stylesheetText"> <input name="serviceSpecificInputAttribute1" type="text"/> </td>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 95

</tr> </table> </xsl:template> <!-- Template for the order input information using XML format --> <xsl:template match="sse:sendOrderInput" mode="XML"> <sse:commonInput> <sse:orderId> <xsl:value-of select="orderId"/> </sse:orderId> </sse:commonInput> <sendOrderInput xmlns="http://www.mycompanyname.com/ws/mynamespace"> <xsl:copy-of select="AOI/*"/> <serviceSpecificInputAttribute1> <xsl:value-of select="serviceSpecificInputAttribute1"/> </serviceSpecificInputAttribute1> </sendOrderInput> </xsl:template> <!-- Template for the order output information using HTML format --> <xsl:template match="sns:getOrderOutput"> <!-- insert here HTML code to display Order results according to the Service OrderOutputType definition statement are given herafter for example--> <xsl:choose> <xsl:when test="not(starts-with(string(sse:statusInfo/sse:statusId) ,'0'))"> <!-- This order is invalid, display error messages --> <table> <tr height="30"> <td class="stylesheetBoldText"> Error: </td> <td class="stylesheetText"> <xsl:value-of select="sse:statusInfo/sse:statusMsg"/> </td> </tr> </table> </xsl:when> <xsl:otherwise> <!-- nominal case --> <table> <tr height="30"> <td class="stylesheetBoldText">Service specific output attribute 1: </td> <td class="stylesheetText"> <xsl:value-of select="sns:serviceSpecificOutputAttribute1"/> </td> </tr> </table> </xsl:otherwise>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 96

</xsl:choose> </xsl:template> </xsl:stylesheet>

5.4

Synchronous RFQ Example

See 5.3 with "Order" replaced by "RFQ".

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 97

6.

INTERFACE WITH SERVICE REPOSITORY

The SSE Portal provides two interfaces to his Services repository:

· ·

a WS-Inspection (see [RD8]) compliant interface an optional UDDI compliant interface: this interface is not systematically deployed on all SSE instances.

As already mentioned in section 2.1, the BPEL Designer tool allows to define the workflows that can be deployed on the SSE Portal. While designing workflows, the Service Provider may need to specify calls to existing SSE basic services. In order to help the Service Provider in this task, the SSE Portal has implemented a WS-Inspection compliant interface. In order to take advantage of this interface, the Service Provider has to specify the SSE Portal WS-Inspection URL in the BPEL designer tool configuration. Having done that, the WSDL files of the services already deployed on the SSE Portal, will become available for selection in the BPEL designer tool. The SSE Portal WS-Inspection URL, depending on the SSE Portal host, looks like "http://services.eoportal.org/inspection.wsil". The interface to UDDI registry is not yet supported bythe BPEL Designer tool. When deployed, the SSE UDDI registry, depending on the SSE Portal host, looks like "http://services.eoportal.org/juddi/inquiry".

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 98

7.

ANNEX A : SCHEMA FILES

The following schema files are available for download at http://services.eoportal.org/schemas/1.6/.

7.1

sse_basic.xsd

The sse_basic schema contains the basic elements referenced by the service schema. It replaces the sse_common.xsd: the purpose is to make this basic schema independent of the catalogue protocol and of the aoifeatures schema.

<xsd:schema xmlns="http://www.esa.int/mass" xmlns:oi="http://www.esa.int/oi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.esa.int/mass" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> <xsd:import namespace="http://www.esa.int/oi" schemaLocation="oi.xsd"/> <!--standard/common basic elements --> <xsd:complexType name="CommonInputType"> <xsd:annotation> <xsd:documentation>Common input for all business functions</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="orderId" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="StatusInfoType"> <xsd:annotation> <xsd:documentation>status info of the processing of a service's business functions is in this type.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="statusId" type="xsd:nonNegativeInteger" default="0"> <xsd:annotation> <xsd:documentation>0 for nominal status</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="statusMsg" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:element name="commonInput" type="CommonInputType"> <xsd:annotation> <xsd:documentation>contains common info of a service business function</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="statusInfo" type="StatusInfoType"> <xsd:annotation> <xsd:documentation>contains status info about the processing of a service's business functions</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="id" type="xsd:string"/> <xsd:element name="price" type="oi:PriceType"/> <!-- View Result --> <xsd:element name="viewEmbeddedResult" type="EmbeddedResultType"> <xsd:annotation> <xsd:documentation>Represent a file URL, file which can be displayed by a SSE viewer</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="EmbeddedResultType">

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 99

<xsd:annotation> <xsd:documentation>Data to be displayed and also embedded type information so that a viewer can be associated</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="embeddedResult" type="xsd:anyType"> <xsd:annotation> <xsd:documentation>content to be displayed</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="embeddedType" type="xsd:string"> <xsd:annotation> <xsd:documentation>String that is used to determine which viewer will be used e.g GML, KML</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="viewFileResult" type="FileResultType"> <xsd:annotation> <xsd:documentation>Represent a file URL, file which can be displayed by a SSE viewer</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="FileResultType"> <xsd:annotation> <xsd:documentation>File location that also includes a file type information so that a file viewer can be associated</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="fileURL" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>URL of the file : for the GML viewer it must be a http URL</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="fileType" type="xsd:string"> <xsd:annotation> <xsd:documentation>String that is used to determine which viewer will be used e.g GML, SHAPE, WMSURL, WMCFileURL, WFSURL. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="conversationId" type="xsd:string"> <xsd:annotation> <xsd:documentation> id to trace the request and response of an asynchronous in SSE</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="parentId" type="xsd:string"/> <xsd:element name="searchCollections" type="SearchCollectionsType"> <xsd:annotation> <xsd:documentation>element that contains the CollectionIds that will be searched for</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="SearchCollectionsType"> <xsd:annotation> <xsd:documentation>type of the ouput message of a service's process Search soap operation</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="parentId" maxOccurs="unbounded"/>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 100

</xsd:sequence> </xsd:complexType> <xsd:element name="overlap" type="xsd:string"/> <!-types needed for the internal interface between the portal and the authorisation workflow --> <xsd:element name="authorisationState"> <xsd:annotation> <xsd:documentation> status of the authorisation from the authorising team</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="ACCEPTED"/> <xsd:enumeration value="REJECTED"/> <xsd:enumeration value="TBD"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <!--sample complete business action messages--> <xsd:element name="sendAuthorisationInputMsg"> <xsd:annotation> <xsd:documentation>contains the sending Authorisation Input Msg</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element ref="conversationId"/> <xsd:element name="authorisationInput"> <xsd:complexType> <xsd:sequence> <xsd:element name="userInfo"> <xsd:complexType> <xsd:sequence> <xsd:element name="portalUserID" type="xsd:string"/> <xsd:element name="portalFirstName" type="xsd:string"/> <xsd:element name="portalLastName" type="xsd:string"/> <xsd:element name="portalEmail" type="xsd:string"/> <xsd:element name="portalAddress" type="xsd:string"/> <xsd:element name="portalPhone" type="xsd:string"/> <xsd:element name="portalDdsAddress" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="returnAuthorisationInputMsg"> <xsd:annotation> <xsd:documentation>contains the returned Authorisation Input Msg</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element ref="conversationId"/> <xsd:element name="authorisationOutput"> <xsd:complexType> <xsd:sequence> <xsd:element ref="authorisationState"/>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 101

</xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 102

7.2

AOI Features Schema and Example

The AOI and gml schemas listed in this section are available at http://services.eoportal.org/schemas/1.6/gml/.

7.2.1 AOI Features GML212 application schema 7.2.1.1 GML212 aoifeatures.xsd

<?xml version="1.0" encoding="UTF-8"?> <!--============================================================== File: aoifeatures.xsd Version: v3.0.2 2004-06-01 Author: Kristof Vydt Company: G.I.M. Geographic Information Management nv ==============================================================--> <xsd:schema targetNamespace="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="1.0"> <xsd:annotation> <xsd:appinfo>aoifeatures.xsd v3.0.2 2004-06-01</xsd:appinfo> <xsd:documentation>GML v2 Schema for AOI features.</xsd:documentation> </xsd:annotation> <!--============================================================== Import constructs from the GML Feature and Geometry schemas ==============================================================--> <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="feature.xsd"/> <!--================================================================ Global element Declarations ================================================================--> <xsd:element name="areaOfInterest" type="aoi:AreaOfInterestType" substitutionGroup="gml:_FeatureCollection"/> <!--================================================================ Privat element Declarations ================================================================--> <xsd:element name="Feature" type="aoi:FeatureType" substitutionGroup="gml:_Feature"/> <!--============================================================== Type definitions ==============================================================--> <xsd:complexType name="AreaOfInterestType"> <xsd:complexContent> <xsd:extension base="gml:AbstractFeatureCollectionType"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="GeometryType"> <xsd:sequence> <xsd:choice> <xsd:element ref="gml:Polygon"/> <xsd:element ref="gml:MultiPolygon"/> </xsd:choice> </xsd:sequence> </xsd:complexType> <xsd:complexType name="FeatureType"> <xsd:complexContent> <xsd:extension base="gml:AbstractFeatureType"> <xsd:sequence> <xsd:element name="Code" type="xsd:string" minOccurs="0"/> <xsd:element name="Label" type="xsd:string" minOccurs="0"/> <xsd:element name="Geometry" type="aoi:GeometryType"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:schema>

7.2.1.2 GML212 AOI Features Example

<?xml version="1.0" encoding="UTF-8"?> <areaOfInterest xmlns="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:gml="http://www.opengis.net/gml" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.esa.int/xml/schemas/mass/aoifeatures http://services.eoportal.org/schemas/1.6/gml/GML2/aoifeatures.xsd"> <gml:boundedBy> <gml:Box srsName="EPSG:4326"> <gml:coordinates>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 103

-14.6751008026815,-2.85467688605412 105.727430782956,60.5150765800706 </gml:coordinates> </gml:Box> </gml:boundedBy> <!-- example of a rectangle --> <gml:featureMember> <aoi:Feature> <gml:boundedBy> <gml:Box srsName="EPSG:4326"> <gml:coordinates> 43.3571022621025,21.4926494456675 58.3668781924833,40.837675558476 </gml:coordinates> </gml:Box> </gml:boundedBy> <aoi:Code>Some code 1</aoi:Code> <aoi:Label>Some label 1</aoi:Label> <aoi:Geometry> <gml:Polygon srsName="EPSG:4326"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates> 43.3571022621025,40.837675558476 43.3571022621025,21.4926494456675 58.3668781924833,21.4926494456675 58.3668781924833,40.837675558476 43.3571022621025,40.837675558476 </gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </aoi:Geometry> </aoi:Feature> </gml:featureMember> <!-- example of a multipolygon with hole --> <gml:featureMember> <aoi:Feature> <gml:boundedBy> <gml:Box srsName="EPSG:4326"> <gml:coordinates> -14.6751008026815,-2.85467688605412 105.727430782956,60.5150765800706 </gml:coordinates> </gml:Box> </gml:boundedBy> <aoi:Code>Some code 2</aoi:Code> <aoi:Label>Some label 2</aoi:Label> <aoi:Geometry> <gml:MultiPolygon srsName="EPSG:4326"> <gml:polygonMember> <gml:Polygon srsName="EPSG:4326"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates> 24.6808513499644,43.8388256679325 22.6797012405078,21.8261744639103 46.3599775357439,-2.52115186781135 86.0494547066326,-2.85467688605412 105.727430782956,41.1706255219905 73.7090290316504,60.5150765800706 37.6883270614321,57.8468764341285 24.6808513499644,43.8388256679325 </gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> <gml:innerBoundaryIs> <gml:LinearRing> <gml:coordinates> 58.7004032107261,45.1729257409036 42.024152298588,41.837675558476 41.3571022621025,21.4926494456675 58.3668781924833,8.15164871595702 80.0460043782628,13.821574026084 83.3812545606905,32.4989750476786 58.7004032107261,45.1729257409036 </gml:coordinates> </gml:LinearRing> </gml:innerBoundaryIs> </gml:Polygon> </gml:polygonMember> <gml:polygonMember> <gml:Polygon srsName="EPSG:4326"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates> 2.66820014594208,47.5076008686029 -7.67107541958353,48.841700941574 -14.6751008026815,42.8382506132043 -14.3415757844388,34.5001251571352 -5.33640029188419,29.4972498834938

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 104

2.66820014594208,30.4978249382221 9.67222552904008,37.1683253030773 8.6716504743118,43.5053006496898 2.66820014594208,47.5076008686029 </gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </gml:polygonMember> </gml:MultiPolygon> </aoi:Geometry> </aoi:Feature> </gml:featureMember> </areaOfInterest>

7.2.2 AOI Features GML311 application schema 7.2.2.1 GML311 aoifeatures.xsd

<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Joeri Theelen (GIM NV) --> <!--============================================================== File: aoifeatures.xsd Version: v4.4.0 2007-08-21 Author: Stefaan Desender Company: GIM Geographic Information Management nv ==============================================================--> <xsd:schema targetNamespace="http://www.esa.int/xml/schemas/mass/aoifeatures" elementFormDefault="qualified" version="1.0" xmlns:gml="http://www.opengis.net/gml" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:appinfo>aoifeatures.xsd v4.4.0 2007-08-21</xsd:appinfo> <xsd:documentation>GML v3 Schema for AOI features.</xsd:documentation> </xsd:annotation> <!--============================================================== Import constructs from the GML Feature and Geometry schemas ==============================================================--> <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="gml/3.1.1/base/gml.xsd"/> <!--================================================================ Global element Declarations ================================================================--> <xsd:element name="AreaOfInterest" type="aoi:AreaOfInterestType" substitutionGroup="gml:_FeatureCollection"/> <!--================================================================ Private element Declarations ================================================================--> <xsd:element name="Feature" type="aoi:FeatureType" substitutionGroup="gml:_Feature"/> <!--============================================================== Type definitions ==============================================================--> <xsd:complexType name="AreaOfInterestType"> <xsd:complexContent> <xsd:restriction base="gml:AbstractFeatureCollectionType"> <xsd:sequence> <xsd:element ref="gml:boundedBy" minOccurs="0"/> <xsd:element ref="gml:featureMember" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute ref="gml:id" use="required"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:element name="featureMember" substitutionGroup="gml:featureMember"> <xsd:complexType> <xsd:complexContent> <xsd:restriction base="gml:FeaturePropertyType"> <xsd:sequence> <xsd:element ref="aoi:Feature"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:complexType name="RestrictedAbstractFeatureType" abstract="true"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 105

<xsd:complexContent> <xsd:restriction base="gml:AbstractFeatureType"> <xsd:sequence> <xsd:element ref="gml:boundedBy" minOccurs="0"/> </xsd:sequence> <xsd:attribute ref="gml:id" use="required"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="FeatureType"> <xsd:complexContent> <xsd:extension base="aoi:RestrictedAbstractFeatureType"> <xsd:sequence> <xsd:element name="code" type="xsd:token" minOccurs="0"/> <xsd:element name="label" type="xsd:normalizedString" minOccurs="0"/> <xsd:element name="geometry" type="aoi:GeometryPropertyType"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="GeometryPropertyType"> <xsd:sequence> <xsd:choice> <xsd:element ref="gml:Point"/> <xsd:element ref="gml:MultiPoint"/> <xsd:element ref="gml:LineString"/> <xsd:element ref="gml:MultiCurve"/> <xsd:element ref="gml:Polygon"/> <xsd:element ref="gml:MultiSurface"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:schema>

7.2.2.2 GML311 AOI Features example

<AreaOfInterest xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" gml:id="SSEAOI20061110125055" xsi:schemaLocation="http://www.esa.int/xml/schemas/mass/aoifeatures http://services.eoportal.org/schemas/1.6/gml/GML3.1.1/aoifeatures.xsd" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns="http://www.esa.int/xml/schemas/mass/aoifeatures"> <gml:boundedBy> <gml:Envelope srsName="EPSG:4326"> <gml:lowerCorner>0.0000 48.0000</gml:lowerCorner> <gml:upperCorner>5.7164 52.1467</gml:upperCorner> </gml:Envelope> </gml:boundedBy> <gml:featureMember> <aoi:Feature gml:id="SSEAOI20061110125055.11413158"> <gml:boundedBy> <gml:Envelope srsName="EPSG:4326"> <gml:lowerCorner>3.8526 51.0509</gml:lowerCorner> <gml:upperCorner>4.6382 51.8140</gml:upperCorner> </gml:Envelope> </gml:boundedBy> <aoi:geometry> <gml:Polygon gml:id="polygon.23828777" srsName="EPSG:4326"> <gml:exterior> <gml:LinearRing> <gml:pos>3.8526 51.0509</gml:pos> <gml:pos>3.8526 51.8140</gml:pos> <gml:pos>4.6382 51.8140</gml:pos> <gml:pos>4.6382 51.0509</gml:pos> <gml:pos>3.8526 51.0509</gml:pos> </gml:LinearRing> </gml:exterior> </gml:Polygon> </aoi:geometry> </aoi:Feature> </gml:featureMember> <gml:featureMember> <aoi:Feature gml:id="SSEAOI20061110125055.25561931"> <gml:boundedBy> <gml:Envelope srsName="EPSG:4326"> <gml:lowerCorner>4.1444 50.5796</gml:lowerCorner> <gml:upperCorner>4.8402 50.9499</gml:upperCorner> </gml:Envelope> </gml:boundedBy> <aoi:geometry>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 106

<gml:Polygon gml:id="polygon.21994751" srsName="EPSG:4326"> <gml:exterior> <gml:LinearRing> <gml:pos>4.2229 50.9163</gml:pos> <gml:pos>4.8402 50.9499</gml:pos> <gml:pos>4.7279 50.6694</gml:pos> <gml:pos>4.3015 50.5796</gml:pos> <gml:pos>4.1444 50.6806</gml:pos> <gml:pos>4.1444 50.8153</gml:pos> <gml:pos>4.2229 50.9163</gml:pos> </gml:LinearRing> </gml:exterior> </gml:Polygon> </aoi:geometry> </aoi:Feature> </gml:featureMember> <gml:featureMember> <aoi:Feature gml:id="SSEAOI20061110125055.30764650"> <gml:boundedBy> <gml:Envelope srsName="EPSG:4326"> <gml:lowerCorner>5.1535 50.8368</gml:lowerCorner> <gml:upperCorner>5.7164 51.3997</gml:upperCorner> </gml:Envelope> </gml:boundedBy> <aoi:geometry> <gml:Polygon gml:id="circle.21230365" srsName="EPSG:4326"> <gml:exterior> <gml:Ring> <gml:curveMember> <gml:Curve gml:id="curve.21230365"> <gml:segments> <gml:CircleByCenterPoint numArc="1"> <gml:pos>5.4349 51.1183</gml:pos> <gml:radius uom="urn:ogc:def:uom:OGC:degree">0.2814477287827705</gml:radius> </gml:CircleByCenterPoint> </gml:segments> </gml:Curve> </gml:curveMember> </gml:Ring> </gml:exterior> </gml:Polygon> </aoi:geometry> </aoi:Feature> </gml:featureMember> </AreaOfInterest>

7.3

GML Service Result Schema and Example

7.3.1 Service Result Features GML212 application schema 7.3.1.1 GML212 serviceresult.xsd

<?xml version="1.0" encoding="UTF-8"?> <!--============================================================== File: serviceresult.xsd Version: v3.0 2004-04 Author: Kristof Vydt Company: G.I.M. Geographic Information Management nv ==============================================================--> <xsd:schema targetNamespace="http://www.esa.int/xml/schemas/mass/serviceresult" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sr="http://www.esa.int/xml/schemas/mass/serviceresult" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" elementFormDefault="qualified" version="1.0"> <xsd:annotation> <xsd:appinfo>srfeatures.xsd v3.0 2004-04</xsd:appinfo> <xsd:documentation>GML v2 Schema for Service Result features.</xsd:documentation> </xsd:annotation> <!--============================================================== Import constructs from the GML Feature and Geometry schemas ==============================================================--> <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="feature.xsd"/> <!--============================================================== Type definitions

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 107

==============================================================--> <xsd:element name="featureCollection" type="sr:featureCollectionType" substitutionGroup="gml:_FeatureCollection"/> <!--============================================================== Privat element Declarations ==============================================================--> <xsd:element name="Feature" type="sr:FeatureType" substitutionGroup="gml:_Feature"/> <!--============================================================== Type definitions ==============================================================--> <xsd:complexType name="featureCollectionType"> <xsd:complexContent> <xsd:extension base="gml:AbstractFeatureCollectionType"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="FeatureType"> <xsd:complexContent> <xsd:extension base="gml:AbstractFeatureType"> <xsd:sequence> <xsd:element name="id" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="tooltip" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute1" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute2" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute3" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute4" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute5" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute6" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute7" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute8" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute9" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute10" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute11" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute12" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute13" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute14" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute15" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute16" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute17" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute18" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute19" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute20" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute21" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute22" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute23" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute24" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute25" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute26" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute27" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute28" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute29" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute30" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute31" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute32" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute33" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute34" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute35" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute36" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute37" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute38" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute39" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute40" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute41" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute42" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute43" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute44" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute45" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute46" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute47" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute48" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute49" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="attribute50" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="Geometry" type="gml:GeometryPropertyType" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:schema>

7.3.1.2 GML 212 Service Result Example

<?xml version="1.0" encoding="UTF-8"?> <featureCollection xmlns=" http://www.esa.int/xml/schemas/mass/serviceresult" xmlns:sr=" http://www.esa.int/xml/schemas/mass/serviceresult" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.esa.int/xml/schemas/mass/serviceresult http://services.eoportal.org/schemas/1.6/gml/GML2/serviceresult.xsd"> <!-- location of serviceresult tbc <gml:boundedBy>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 108

<gml:Box srsName="EPSG:4326"> <gml:coordinates> 30.1164,27.1715 30.9852,28.2876 </gml:coordinates> </gml:Box> </gml:boundedBy> <gml:featureMember> <sr:Feature> <sr:id>21122940201010846021X1353814</sr:id> <sr:attribute1>Platform,SPOT</sr:attribute1> <sr:attribute2>Satellite Number,2</sr:attribute2> <sr:attribute3>Sensor Id,1</sr:attribute3> <sr:attribute4>Orbit,155</sr:attribute4> <sr:attribute5>Orbit Direction,descending</sr:attribute5> <sr:attribute6>Frame,112</sr:attribute6> <sr:attribute7>Track,294</sr:attribute7> <sr:attribute8>Short Name,21122940201010846021X1353814</sr:attribute8> <sr:attribute9>Start Date,2002-01-01T08:46:58Z</sr:attribute9> <sr:attribute10>End Date,2002-01-01T08:46:06Z</sr:attribute10> <sr:Geometry> <gml:Polygon srsName="EPSG:4326"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates> 30.8422,27.6679 30.9852,28.1949 30.3877,28.2876 30.2476,27.7602 30.8422,27.6679 </gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </sr:Geometry> </sr:Feature> </gml:featureMember> <gml:featureMember> <sr:Feature> <sr:id>21122950201010846101X1353814</sr:id> <sr:attribute1>Platform,SPOT</sr:attribute1> <sr:attribute2>Satellite Number,2</sr:attribute2> <sr:attribute3>Sensor Id,1</sr:attribute3> <sr:attribute4>Orbit,155</sr:attribute4> <sr:attribute5>Orbit Direction,descending</sr:attribute5> <sr:attribute6>Frame,112</sr:attribute6> <sr:attribute7>Track,295</sr:attribute7> <sr:attribute8>Short Name,21122950201010846101X1353814</sr:attribute8> <sr:attribute9>Start Date,2002-01-01T08:46:06Z</sr:attribute9> <sr:attribute10>End Date,2002-01-01T08:46:14Z</sr:attribute10> <sr:Geometry> <gml:Polygon srsName="EPSG:4326"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates> 30.7084,27.1715 30.8505,27.6985 30.2557,27.7909 30.1164,27.2634 30.7084,27.1715 </gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </sr:Geometry> </sr:Feature> </gml:featureMember> <gml:featureMember> <sr:Feature> <sr:id>21185690201010846101X1353814</sr:id> <sr:attribute1>Platform,GPS</sr:attribute1> <sr:Geometry> <gml:Point srsName="EPSG:4326"> <gml:coordinates> 30.9,27.8 </gml:coordinates> </gml:Point> </sr:Geometry> </sr:Feature> </gml:featureMember> </featureCollection>

7.3.2 Service Result Features GML 311 application schema

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 109

7.3.2.1 GML311 Serviceresult.xsd

<?xml version="1.0" encoding="UTF-8"?> <!--============================================================== File: serviceresult.xsd Version: v4.0.0 2006-09-28 Author: Stefaan Desender Company: G.I.M. Geographic Information Management nv ==============================================================--> <xsd:schema targetNamespace="http://www.esa.int/xml/schemas/mass/serviceresult" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sr="http://www.esa.int/xml/schemas/mass/serviceresult" xmlns:gml="http://www.opengis.net/gml" xmlns:gmlsf="http://www.opengis.net/gmlsf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <xsd:annotation> <xsd:appinfo>srfeatures.xsd v4.0.0 2006-09-28</xsd:appinfo> <xsd:appinfo source="gml/profiles/gmlsfProfile/gmlsfLevels.xsd"> <gmlsf:ComplianceLevel>0</gmlsf:ComplianceLevel> </xsd:appinfo> <xsd:documentation>GML v3 Schema for Service Result features.</xsd:documentation> </xsd:annotation> <!--============================================================== Import constructs from the GML Feature and Geometry schemas ==============================================================--> <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="gml/3.1.1/base/gml.xsd"/> <!--============================================================== Global element Declarations ==============================================================--> <xsd:element name="ServiceResult" type="sr:ServiceResultType" substitutionGroup="gml:_FeatureCollection"/> <!--============================================================== Private element Declarations ==============================================================--> <xsd:element name="Feature" type="sr:FeatureType" substitutionGroup="gml:_Feature"/> <!--============================================================== Type definitions ==============================================================--> <xsd:complexType name="ServiceResultType"> <xsd:complexContent> <xsd:restriction base="gml:AbstractFeatureCollectionType"> <xsd:sequence> <xsd:element ref="gml:boundedBy" minOccurs="0"/> <xsd:element ref="gml:featureMember" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute ref="gml:id" use="required"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:element name="featureMember" substitutionGroup="gml:featureMember"> <xsd:complexType> <xsd:complexContent> <xsd:restriction base="gml:FeaturePropertyType"> <xsd:sequence> <xsd:element ref="sr:Feature"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:complexType name="RestrictedAbstractFeatureType" abstract="true"> <xsd:complexContent> <xsd:restriction base="gml:AbstractFeatureType"> <xsd:sequence> <xsd:element ref="gml:boundedBy" minOccurs="0"/> </xsd:sequence> <xsd:attribute ref="gml:id" use="required"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="FeatureType"> <xsd:complexContent> <xsd:extension base="sr:RestrictedAbstractFeatureType"> <xsd:sequence> <xsd:element name="id" type="xsd:token" minOccurs="0"/> <xsd:element name="tooltip" type="xsd:normalizedString" minOccurs="0"/> <xsd:element name="attribute1" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute2" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute3" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute4" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute5" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute6" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute7" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute8" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute9" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute10" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute11" type="sr:AttributeType" minOccurs="0"/> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 110

<xsd:element name="attribute12" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute13" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute14" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute15" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute16" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute17" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute18" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute19" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute20" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute21" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute22" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute23" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute24" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute25" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute26" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute27" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute28" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute29" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute30" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute31" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute32" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute33" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute34" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute35" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute36" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute37" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute38" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute39" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute40" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute41" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute42" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute43" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute44" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute45" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute46" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute47" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute48" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute49" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="attribute50" type="sr:AttributeType" minOccurs="0"/> <xsd:element name="geometry" type="sr:GeometryPropertyType"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="GeometryPropertyType"> <xsd:sequence> <xsd:choice> <xsd:element ref="gml:Point"/> <xsd:element ref="gml:MultiPoint"/> <xsd:element ref="gml:LineString"/> <xsd:element ref="gml:MultiCurve"/> <xsd:element ref="gml:Polygon"/> <xsd:element ref="gml:MultiSurface"/> </xsd:choice> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AttributeType"> <xsd:simpleContent> <xsd:extension base="xsd:normalizedString"> <xsd:attribute name="label" type="xsd:normalizedString" use="optional"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:schema>

7.3.2.2 GML311 Serviceresult features example

<?xml version="1.0" encoding="UTF-8"?> <ServiceResult xmlns="http://www.esa.int/xml/schemas/mass/serviceresult" xmlns:sr="http://www.esa.int/xml/schemas/mass/serviceresult" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.esa.int/xml/schemas/mass/serviceresult http://services.eoportal.org/schemas/1.6/gml/GML3.1.1/aoifeatures.xsd" gml:id="ServiceResultCollection1"> <gml:boundedBy> <gml:Envelope srsName="EPSG:4326"> <gml:pos>30.1164 27.1715</gml:pos> <gml:pos>30.9852 28.2876</gml:pos> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 111

</gml:Envelope> </gml:boundedBy> <gml:featureMember> <sr:Feature gml:id="F21122940201010846021X1353814"> <sr:id>21122940201010846021X1353814</sr:id> <sr:tooltip>SPOT: 21122940201010846021X1353814</sr:tooltip> <sr:attribute1>Platform,SPOT</sr:attribute1> <sr:attribute2>Satellite Number,2</sr:attribute2> <sr:attribute3>Sensor Id,1</sr:attribute3> <sr:attribute4>Orbit,155</sr:attribute4> <sr:attribute5>Orbit Direction,descending</sr:attribute5> <sr:attribute6>Frame,112</sr:attribute6> <sr:attribute7>Track,294</sr:attribute7> <sr:attribute8>Short Name,21122940201010846021X1353814</sr:attribute8> <sr:attribute9>Start Date,2002-01-01T08:46:58Z</sr:attribute9> <sr:attribute10>End Date,2002-01-01T08:46:06Z</sr:attribute10> <sr:geometry> <gml:Polygon srsName="EPSG:4326" gml:id="P1"> <gml:exterior> <gml:LinearRing> <gml:pos>30.8422 27.6679 </gml:pos> <gml:pos>30.9852 28.1949 </gml:pos> <gml:pos>30.3877 28.2876 </gml:pos> <gml:pos>30.2476 27.7602 </gml:pos> <gml:pos>30.8422 27.6679 </gml:pos> </gml:LinearRing> </gml:exterior> </gml:Polygon> </sr:geometry> </sr:Feature> </gml:featureMember> <gml:featureMember> <sr:Feature gml:id="F21122950201010846101X1353814"> <sr:id>21122950201010846101X1353814</sr:id> <sr:tooltip>ENVISAT: 21122950201010846101X1353814</sr:tooltip> <sr:attribute1>Platform,ENVISAT</sr:attribute1> <sr:attribute2>Satellite Number,2</sr:attribute2> <sr:attribute3>Sensor Id,1</sr:attribute3> <sr:attribute4>Orbit,155</sr:attribute4> <sr:attribute5>Orbit Direction,descending</sr:attribute5> <sr:attribute6>Frame,112</sr:attribute6> <sr:attribute7>Track,295</sr:attribute7> <sr:attribute8>Short Name,21122950201010846101X1353814</sr:attribute8> <sr:attribute9>Start Date,2002-01-01T08:46:06Z</sr:attribute9> <sr:attribute10>End Date,2002-01-01T08:46:14Z</sr:attribute10> <sr:geometry> <gml:Polygon srsName="EPSG:4326" gml:id="P2"> <gml:exterior> <gml:LinearRing> <gml:posList srsDimension="2"> 30.7084 27.1715 30.8505 27.6985 30.2557 27.7909 30.1164 27.2634 30.7084 27.1715 </gml:posList> </gml:LinearRing> </gml:exterior> </gml:Polygon> </sr:geometry> </sr:Feature> </gml:featureMember> </ServiceResult>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 112

7.4

eoli.xsd

The eoli 2.6 schema has been defined by ESA. See [RD1] for the online reference.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 113

7.5

oi.xsd

The following schema has been defined by ESA [RD14]. It is also available on services.eoportal.org/schemas/.

<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by F. Di Loreto (DATAMAT) (ESA - European Space Agency) --> <xsd:schema targetNamespace="http://www.esa.int/oi" xmlns="http://www.esa.int/oi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="V1.7"> <!--XML OpenGIS extended for UOS v 1.10--> <!--===================================== Root element--> <xsd:element name="originPart"> <xsd:annotation> <xsd:documentation>This represent the targetPart elements within the Z39.50- CIP- Order ExtendedRequest</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="action"> <xsd:annotation> <xsd:documentation>Indicates the type of operation that is requested to be performed for the order request. It has associated a list of enumeratives defining 5 possible kinds of order requests</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="ActionEnum"/> </xsd:simpleType> </xsd:element> <xsd:element name="orderSpecification" type="OrderSpecification"> <xsd:annotation> <xsd:documentation>This level corresponds to the OrderDescriptor level of MUIS-C and to Detail Order Level of DE.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C OrderDescriptor 'OrderId' and DE implicit order 'Project+OrdCtr+RefDuID'. It coincides with OHS_OrderId for order directed from OHS towards CUS (i.e. composed with Account+sequential number internal to the account for MUIS and N/A for DE Interface). It coincides again with OHS_OrderId for order directed from OHS towards PROMISE ( i.e. composed with Account+MUIS-C OrderDescriptor 'OrderId' for MUIS, Project+OrdCtrDuID for DE). </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="statusUpdateOption" type="StatusUpdateOptionEnum" minOccurs="0"> <xsd:annotation> <xsd:documentation>Specify if the update of the status shall be notified automatically or manually. It shall be used to implement DE functionality of requesting a status. For MUIS-C the option will always be set to automatic with value 'OGC_interface'</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="userInformation" type="UserInformation" minOccurs="0"> <xsd:annotation> <xsd:documentation>Only the userId and the Billing.CustomerReference are used in this context. That is because only the shipping address is needed, not at this level but at DeliveryUnit level</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="otherInfo" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="sourceUserId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C OrderDescriptor 'UserId' parameter</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderAccount" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps the DE #UORD 'Project' parameter and the MUIS-C OrderDescriptor 'OrderAccount' parameter.</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 114

</xsd:simpleType> </xsd:element> <xsd:element name="answerCounter" type="xsd:int" minOccurs="0"> <xsd:annotation> <xsd:documentation>Counts the Provider Order Status files sent to DE for this detail order</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <!--===================================== Order level --> <xsd:complexType name="OrderSpecification"> <xsd:annotation> <xsd:documentation>This type maps mailny MUIS-C OrderDescriptor structure and DE #DORD (Detailed Order definition) interface.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="identificationInfo" type="IdentificationInformation"> <xsd:annotation> <xsd:documentation>It contains identificators of the order</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderingCentreId" type="xsd:string"> <xsd:annotation> <xsd:documentation>Always ESA/UOS for MEH purposes</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="deliveryUnits" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>List of Delivery Units associated to the order</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="DeliveryUnitSpec"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="orderPrice" type="PriceInfo" minOccurs="0"> <xsd:annotation> <xsd:documentation>At this level MUIS-C maps OrderDescriptor 'OrderPrice', 'OrderListPrice' and 'OrderExpectedPrice'. DE maps only the expectedPrice in the #DORD interface.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderCancellationDate" type="DateTime.iso8601" minOccurs="0"> <xsd:annotation> <xsd:documentation>Maps the MUIS-C OrderDescriptor LatestCancelDate. NOt present in DE interfaces.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="otherInfo" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="orderType" type="OrderTypeEnum" minOccurs="0"> <xsd:annotation> <xsd:documentation>it Maps MUIS-C OrderDescriptor 'OrderType'. Not used in DE interfaces.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderClass" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C OrderDescriptor "OrderClass"</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="orderScope" type="OrderScopeEnum" minOccurs="0"> <xsd:annotation> <xsd:documentation>Scope of the order. Not present in MUIS-C. Used in DE within #DORD to improve service ("Scope").</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="applicationType" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps the DE #DORD 'Appl Type' parameter</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 115

<xsd:maxLength value="3"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="orderSource" type="OrderSourceEnum" minOccurs="0"> <xsd:annotation> <xsd:documentation>The System from which the order has been posted. It maps the MUIS-C OrderDescriptor 'OrderSource[-CollectionId]' and DE UORD 'Prov' parameter. The CollectionId is a MUIS-C parameter given within TargetService compound paramater. The given enumerative list is extensible.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderDateTime" type="DateTime.iso8601" minOccurs="0"> <xsd:annotation> <xsd:documentation>Maps MUIS-C OrderDescriptor "OrderDateTime" and DE #DORD "Date/Time:".</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderStatusInfo" type="OrderStatusInfo" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C OrderItem 'OrderStatus' and 'OrderStatusDescription' parameters</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderRemark" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps information depending on the interfaces: 1) customer2orderDesk 2) orderDesk2Customer 3) orderDesk2Processing 4) processing2OrderDesk. It maps MUIS-C "OrderUserRemarks" in OrderDescriptor and DE #UORD 'Remarks'</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderCondition" type="OrderCondition" minOccurs="0"> <xsd:annotation> <xsd:documentation>Logical condition to be applied to all order items. Present only in MUIS-C OrderDescriptor</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="partialDeliveryAccepted" type="xsd:boolean" minOccurs="0"> <xsd:annotation> <xsd:documentation>True if DeliveryUnits can be delivered separately. Present in MUIS-C OrderDescriptor and in DE #DORD interface ("PD").</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="partialFulfillmentPercentage" minOccurs="0"> <xsd:annotation> <xsd:documentation>Different from 100 if partial fullfillment is acceptable for the user. Allowed values are from 0 to 100, 100 means MUIS-C 'FALSE' (100% have to be fulfilled, no prtial fulfilment accepted), any other value means MUIS-C 'TRUE'. In DE it expresses the minimum percentage of completeness of the order to consider the order as fulfilled.</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="1"/> <xsd:maxInclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="contactPoint" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It mapping depends on usage: 1) customer (DE, cat1) to OHS: customerContactPoint (DE #DORD 'CD' (Prov_Who)) 2) OHS 2 customer: orderDeskContactPoint (DE #DORD 'SD' (Supplier Deputy)) 3) OHS 2 processing: (CUS/PROMISE/ENVISAT): orderDeskContactPoint 4) processing 2 OHS: processingContactPoint</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OrderCondition"> <xsd:annotation> <xsd:documentation>Describes a logical condition to be applied to all order items. It maps MUIS-C OrderDescriptor "OrderCondition"</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="startDate" type="DateTime.iso8601" minOccurs="0"/> <xsd:element name="endDate" type="DateTime.iso8601" minOccurs="0"/> <xsd:element name="observationInterval" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:unsignedLong"> <xsd:maxInclusive value="4294967296"/> </xsd:restriction> </xsd:simpleType> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 116

</xsd:element> <xsd:element name="numberOfObservations" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:unsignedLong"> <xsd:maxInclusive value="4294967296"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="areaOfInterest" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:choice> <xsd:element name="gPolygon" type="GPolygon"/> <xsd:element name="circle" type="Circle"> <xsd:annotation> <xsd:documentation>It maps the DE #AREA 'Radius' parameter</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> <xsd:element name="clusterAreaName" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #AREA Area(s) (Cluster_Area_Name). It is not used in MUIS-C</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="areaName" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #AREA Area(s) (Area_Name). It is not used in MUISC</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="thematicKeyword" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="productCodeId" type="ProductCodeEnum" minOccurs="0"/> <xsd:element name="coverageRequired" type="CoverageRequiredEnum" minOccurs="0"/> <xsd:element name="maxNumOfProductsPerObservation" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:unsignedInt"> <xsd:maxInclusive value="65535"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="deliveryPolicy" type="DeliveryPolicyEnum" minOccurs="0"/> <xsd:element name="specificConditions" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Split MUIS-C SPECIFIC_CONDITIONS single string at each '\n' encountered defining multiple strings.</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="0"/> <xsd:maxLength value="1023"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="correlationConditions" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Split MUIS-C CORRELATION_CONDITIONS string at '\n'</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="0"/> <xsd:maxLength value="1023"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <!--===================================== DeliveryUnit level --> <xsd:complexType name="DeliveryUnitSpec"> <xsd:annotation> <xsd:documentation>This section maps MUIS-C DeliveryUnitDescriptor structure. DE interface does not have a specific structure mapping this section and most of the relevant information contained here can be found in #DORD interface.</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="deliveryUnitId" type="DeliveryUnitId"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 117

<xsd:annotation> <xsd:documentation>Identifier of the DeliveryUnit. It maps MUIS-C DeliveryUnitDescriptor "DeliveryUnitId" and DE #DORD "Ref DuId#".</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="deliveryUnitPrice" type="PriceInfoLowLevel" minOccurs="0"> <xsd:annotation> <xsd:documentation>At this level MUIS-C maps delivery firmPrice, listPrice and expectedPrice. DE does not maps this information at this level.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="deliveryMethod" type="DeliveryMethod" minOccurs="0"> <xsd:annotation> <xsd:documentation>Represents the delivery method requested for the DeliveryUnit. It maps MUIS-C DeliveryUnitdescriptor "DeliveryMethod" plus the relevant UserInformation (DeliveryAddress / DeliveryEmailAddress / etc..). In DE this information are presented at #DORD level for what concern the information related to FTP address an mail / email address, at #ITEM level for what concern the delivery method that shall be used.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="billing" type="Billing" minOccurs="0"> <xsd:annotation> <xsd:documentation>Information related to billing method. It maps MUIS-C DeliveryUnitdescriptor PaymentMethod plus related payment ionformation such as Credit card info. DE does not have this kind of information in its interfaces.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="packages" type="PackageSpec" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="otherInfo" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="deliveryUnitStatus" type="OrderStatusInfo" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C DeliveryUnitDescriptor 'DeliveryUnitStatus' and 'DeliveryUnitStatusDescription' parameters</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="deliveryUnitRemark" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>Its mapping depends on the interface: 1)customer2OrderDesk 2)orderDesk2Customer 3)orderDesk2Processing 4)processing2OrderDesk. With the first meaning it maps also DE #DORD 'Remarks'</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="foreseenDeliveryDate" type="DateTime.iso8601" minOccurs="0"/> <xsd:element name="latestAcceptedDeliveryDate" type="DateTime.iso8601" minOccurs="0"> <xsd:annotation> <xsd:documentation>Date by when the delivery unit has to be delivered. It maps MUIS-C DeliveryUnitDescriptor "LatestAcceptedDeliveryDate" and DE #ITEM "Deadline"</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="additionalParcelLabelInfo" minOccurs="0"> <xsd:annotation> <xsd:documentation>Additional info to be inserted on the physical package. Used only by DE #DORD interface.</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"/> </xsd:simpleType> </xsd:element> <xsd:element name="qualityOfService" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #ITEM 'SL' (ServiceLevel)</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="priority" type="xsd:int" minOccurs="0"> <xsd:annotation> <xsd:documentation>Priority of the order. It maps MUIS-C OrderItem "OrderItemPriority" and DE #ITEM "Pr".</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="userCode" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>If present it will be passed to CUS in order to manage multiple addresses for the same user.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="addressNumber" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>If present it will be passed to CUS in order to manage multiple addresses for the same user.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 118

</xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <!--===================================== Package level--> <xsd:complexType name="PackageSpec"> <xsd:sequence> <xsd:element name="packageId" type="PackageId"> <xsd:annotation> <xsd:documentation>Identify the specific package. It maps MUIS-C PackageDescriptor PackageId. DE does not have the package level within its interface but it maps DE #ITEM 'Set'.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="package"> <xsd:complexType> <xsd:choice> <xsd:element name="predefinedPackage" type="PredefinedPackage"> <xsd:annotation> <xsd:documentation>It is not used for MEH.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="adHocPackage" type="AdHocPackage"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="packageMedium" type="xsd:string"> <xsd:annotation> <xsd:documentation>Identification of a medium. It maps MUIS-C 'DeliveryMedium' and 'MediumFormattingOption' in OrderItemDescriptor and DE #ITEM "Med"</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="packageKByteSize" type="xsd:integer" minOccurs="0"/> <xsd:element name="packagePrice" type="PriceInfoLowLevel" minOccurs="0"> <xsd:annotation> <xsd:documentation>Package price </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="otherInfo" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="packageRemark" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>Its mapping depends on the interface: 1)customer2orderDesk 2)orderDesk2Customer 3)orderDesk2Processing 4)processing2OrderDesk</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="packageLabel" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #DORD 'Additional media label'.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="packageCopies" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C PackageDescriptor 'packageCopies' and the number that could be inside DE #ITEM 'Set' parameter</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="mediaInPackage" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AdHocPackage"> <xsd:sequence> <xsd:element name="orderItem" type="OrderItem" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PredefinedPackage"> <xsd:sequence> <xsd:element name="collectionId" type="xsd:string"/> <xsd:element name="orderItem" maxOccurs="unbounded"> <xsd:complexType> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 119

<xsd:complexContent> <xsd:extension base="OrderItem"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="otherInfo" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <!--===================================== OrderItem level --> <xsd:complexType name="OrderItem"> <xsd:sequence> <xsd:element name="orderItemId" type="OrderItemId"/> <xsd:element name="productId" type="ProductId"> <xsd:annotation> <xsd:documentation>It identifies the ordered product.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="productPrice" type="PriceInfoLowLevel" minOccurs="0"/> <xsd:element name="productDeliveryOptions" type="ProductDeliveryOptions" minOccurs="0"> <xsd:annotation> <xsd:documentation>It contains delivery options for the product.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="processingOptions" type="ProcessingOptions" minOccurs="0"> <xsd:annotation> <xsd:documentation>It specifies the processing options to be applied on the product before delivery.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="sceneSelectionOptions" type="SceneSelectionOptions" minOccurs="0"> <xsd:annotation> <xsd:documentation>It specifies the selection of the scene from the product that is to be delivered.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderStatusInfo" type="OrderItemStatusInfo" minOccurs="0"> <xsd:annotation> <xsd:documentation>It indicates the status of the order item</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="otherInfo" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="productInfo" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="acquisitionStation" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Acquisition station code. It maps MUIS-C AcquisitionDescriptor "AcquisitionStation" and DE #ITEM "Station(s)" </xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="spatialCoverage" type="SpatialCoverage" minOccurs="0"/> <xsd:element name="passCoverage" type="PassCoverage" minOccurs="0"/> <xsd:element name="passEquatorXLongitude" type="xsd:float" minOccurs="0"/> <xsd:element name="passDirection" type="PassDirectionEnum" minOccurs="0"/> <xsd:element name="verticalCoverage" type="VerticalSelection" minOccurs="0"/> <xsd:element name="regionId" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="missionPhaseId" minOccurs="0"> <xsd:annotation> <xsd:documentation>Indication of the mission phase. It maps MUIS-C AcquisitionDescriptor "MissionPhaseId" and last char of DE #ITEM "Mission"</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="productStatus" type="ProductStatusEnum" minOccurs="0"> <xsd:annotation> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 120

<xsd:documentation>Status of the product: It maps MUIS-C OrderItem "ProductStatus"</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="productSource" type="ProductSource" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Source (terminalCollectionId/Supplier) for the product. It maps MUIS-C OrderItemDescriptor "ProductSource"</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="rejectionInfo" type="RejectionInfo" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #ITEM 'RejC' and 'RejN'</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="replacementInfo" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It contains an customerOrderItemId</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="replacesInfo" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It contains an OHS_OrderItemId</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="processingFacility" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>Suggested facility</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderItemRemark" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>Its mapping depends on the interface: 1)customer2OrderDesk 2)orderDesk2Customer 3)orderDesk2Processing 4)processing2OrderDesk</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="qualityLevel" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>Quality information. It maps DE #DORD 'ICUD D' (Quality_Level)</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <!--===================================== User level --> <xsd:complexType name="UserInformation"> <xsd:sequence> <xsd:element name="userId"> <xsd:annotation> <xsd:documentation>It maps the DE #UORD 'User Id' parameter and the MUIS-C OrderDescriptor 'CustomerId'</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="userName" type="Name" minOccurs="0"> <xsd:annotation> <xsd:documentation>Not needed by MUIS-C. Used by DE in #DORD</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="userAddress" type="PostalAddress" minOccurs="0"> <xsd:annotation> <xsd:documentation>Not needed in MUIS-C at OrderDescriptor level. used by DE #DORD interface. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="companyRef" type="CompanyReference" minOccurs="0"> <xsd:annotation> <xsd:documentation> Not needed in MUIS-C. used by DE #DORD interface. For its definition the MUIS-C related attribute length has been used. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="telNumber" minOccurs="0"> <xsd:annotation> <xsd:documentation>Telephone Number</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 121

<xsd:maxLength value="18"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="faxNumber" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="18"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="emailAddress" minOccurs="0"> <xsd:annotation> <xsd:documentation/> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="72"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="networkAddress" minOccurs="0"> <xsd:annotation> <xsd:documentation>Not used at this level</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"/> </xsd:simpleType> </xsd:element> <xsd:element name="vatRegistrationNo" type="VatRegistrationNo" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #DORD 'VAT' parameter</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <!--===================================== Complex types definition --> <xsd:complexType name="AlongShiftSpecification"> <xsd:sequence> <xsd:element name="shiftUnitId" type="xsd:string"> <xsd:annotation> <xsd:documentation>A=Absolute, S=Seconds</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="shift" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AlongSizeSpecification"> <xsd:sequence> <xsd:element name="alongSizeUnitId" type="xsd:string"> <xsd:annotation> <xsd:documentation>A=Absolute, S=Seconds</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="alongSize" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Billing"> <xsd:sequence> <xsd:element name="paymentMethod"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="PaymentMethod"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="customerPONumber" type="xsd:string" minOccurs="0"/> <xsd:element name="VATRegistrationNo" type="VatRegistrationNo" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BoundingRectangle"> <xsd:sequence> <xsd:element name="northWestPoint" type="Point"/> <xsd:element name="southEastPoint" type="Point"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BoundingRectangleSelection"> <xsd:sequence> <xsd:element name="westBoundingCoordinate" type="xsd:string"/> <xsd:element name="eastBoundingCoordinate" type="xsd:string"/> <xsd:element name="northBoundingCoordinate" type="xsd:string"/> <xsd:element name="southBoundingCoordinate" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Circle"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 122

<xsd:sequence> <xsd:element name="center" type="Point"/> <xsd:element name="radius" type="xsd:integer"> <xsd:annotation> <xsd:documentation>The unit for radius is the kilometer ('km')</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CompanyReference"> <xsd:sequence> <xsd:element name="organisation" minOccurs="0"> <xsd:annotation> <xsd:documentation>Organisation Name</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="0"/> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="department" minOccurs="0"> <xsd:annotation> <xsd:documentation>Department or Section</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="0"/> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CreditCardInfo"> <xsd:sequence> <xsd:element name="creditCardInstitute"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="nameOfCard"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="cardNumber"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="expirationDate" type="DateTime.iso8601"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="DeliveryMethod"> <xsd:choice> <xsd:element name="eMail" type="EmailInfo"/> <xsd:element name="ftp" type="FtpDelivery"/> <xsd:element name="mail" type="DeliveryAddress"/> <xsd:element name="on-line" type="xsd:string"/> <xsd:element name="otherInfo" type="xsd:string"/> </xsd:choice> </xsd:complexType> <xsd:complexType name="DeliveryUnitId"> <xsd:sequence> <xsd:element name="OHS_DeliveryUnitId" type="xsd:string" minOccurs="0"/> <xsd:element name="customerDeliveryUnitId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps the MUIS-C DeliveryUnitDescriptor 'DeliveryUnitId' parameter</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="processingDeliveryUnitId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It is the ProcessingDeliveryUnitId. The identificator assigned by processing facility.</xsd:documentation> </xsd:annotation> </xsd:element> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 123

</xsd:sequence> </xsd:complexType> <xsd:complexType name="DeliveryAddress"> <xsd:sequence> <xsd:element name="postalAddress" type="PostalAddress"/> <xsd:element name="recipient" type="Name" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C DeiveryAddress 'c/o' and InvoiceAddress 'c/o'.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="companyRef" type="CompanyReference" minOccurs="0"/> <xsd:element name="telNumber" minOccurs="0"> <xsd:annotation> <xsd:documentation>Telephone Number</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="18"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="EmailInfo"> <xsd:sequence> <xsd:element name="address"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="72"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="attachmentType" type="AttachmentTypeEnum" minOccurs="0"> <xsd:annotation> <xsd:documentation>Maps different types of attachment supported by DE</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="FormattedSceneSelectionOptions"> <xsd:annotation> <xsd:documentation> Scene selected over a browse image</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="sceneType" type="xsd:string"> <xsd:annotation> <xsd:documentation>It is an extensible list</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="horizontalSelection" minOccurs="0"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="HorizontalSelection"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="verticalSelection" type="VerticalSelection" minOccurs="0"/> <xsd:element name="temporalSelection" type="TemporalSelection" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="FtpDelivery"> <xsd:sequence> <xsd:element name="transferDirection" type="TransferDirectionEnum"/> <xsd:element name="ftpAddress"> <xsd:annotation> <xsd:documentation>ftp URL containing also DE interface directory, username, password information</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255"/> <xsd:minLength value="0"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="emailNotificationAddress" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="GPolygon"> <xsd:sequence> <xsd:element name="point" type="Point" minOccurs="3" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HorizontalSelection"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 124

<xsd:choice> <xsd:element name="rectangleSceneSelection" type="RectangleSceneSelection"/> <xsd:element name="boundingRectangleSelection" type="BoundingRectangleSelection"> <xsd:annotation> <xsd:documentation>Not used for MEH</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="polygonSelection" type="PolygonSelection"/> <xsd:element name="circleSelection" type="Circle"> <xsd:annotation> <xsd:documentation>Not used for MEH</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> </xsd:complexType> <xsd:complexType name="IdentificationInformation"> <xsd:sequence> <xsd:element name="customerOrderId" type="xsd:string"> <xsd:annotation> <xsd:documentation>It maps MUIS-C OrderDescriptor 'OrderId' and DE #DORD 'Ref DuId#' parameter</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="OHS_OrderId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It identifies the order in OHS</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orderUserReference" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps the MUIS-C OrderDescriptor 'OrderUserReference' (it is the end user orderId)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="orderName" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps the MUIS-C OrderDescriptor 'OrderName' parameter</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="30"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="processingOrderId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It is identificator assigned by processing facility.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OrderItemId"> <xsd:sequence> <xsd:element name="OHS_OrderItemId" type="xsd:string"/> <xsd:element name="customerOrderItemId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation> It map the MUIS-C OrderItemDescriptor "OrderItemId" and the DE #ITEM "Item".</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="processingOrderItemId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It is processingOrderItemId, the identifier of the orderItem inside the processing system.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OrderStatusInfo"> <xsd:sequence> <xsd:element name="orderState" type="OrderStatusEnum" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C Status </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="additionalStatusInfo" minOccurs="0"> <xsd:annotation> <xsd:documentation>it maps MUIS-C StatusDescription </xsd:documentation> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 125

</xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="0"/> <xsd:maxLength value="255"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OrderItemStatusInfo"> <xsd:sequence> <xsd:element name="orderState"> <xsd:annotation> <xsd:documentation>It maps the MUIS-C status and DE #ITEM 'St' (Status)</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:choice> <xsd:element name="staticState" type="OrderItemStatusStaticEnum"/> <xsd:element name="dynamicState" type="OrderItemStatusDynamicEnum"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="additionalStatusInfo" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C OrderItemDescriptor "OrderItemStatusDescription" and DE #ITEM "RejN" (RejectionNote)</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="timeStatusUpdate" type="DateTime.iso8601" minOccurs="0"> <xsd:annotation> <xsd:documentation>Date/Time of this status change</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PackageId"> <xsd:sequence> <xsd:element name="OHS_PackageId" type="xsd:string" minOccurs="0"/> <xsd:element name="customerPackageId" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps the MUIS-C PackageDescriptor PackageId' parameter</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="processingPackageId" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PassCoverage"> <xsd:sequence> <xsd:element name="passStartEquatorXDeltaTime"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="passStopEquatorXDeltaTime"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PaymentMethod"> <xsd:sequence> <xsd:element name="billInvoice" type="DeliveryAddress" minOccurs="0"/> <xsd:choice minOccurs="0"> <xsd:element name="prepay" type="xsd:string"/> <xsd:element name="depositAccount" type="xsd:string"/> <xsd:element name="privateKnown" type="xsd:string"/> <xsd:element name="privateNotKnown" type="xsd:string"/> <xsd:element name="creditCard"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="CreditCardInfo"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="creditCard-pre-supplied" type="xsd:string"/> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 126

<xsd:element name="quota" type="xsd:string"/> </xsd:choice> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Point"> <xsd:sequence> <xsd:element name="latitude" type="xsd:string"> <xsd:annotation> <xsd:documentation>Its format is: [+|-]nn.nn </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="longitude" type="xsd:string"> <xsd:annotation> <xsd:documentation>Its format is: nnn.nn</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PolygonSelection"> <xsd:sequence> <xsd:element name="geoPolygon" type="GPolygon" minOccurs="0"/> <xsd:element name="mapProjection" type="MapProjectionEnum" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PostalAddress"> <xsd:sequence> <xsd:element name="streetAddress"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="city"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="state"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="postalCode"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="12"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="country"> <xsd:annotation> <xsd:documentation>ISO-3166 2-char is used (even if 3 chars are available)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="3"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="postBox" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="12"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PriceInfo"> <xsd:annotation> <xsd:documentation>Price Information. It maps both MUIS-C price (Order, DeliveryUnit, Package or OrderItem) and DE (#DORD, #ITEM) price and royalty information. </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="priceExpirationDate" type="DateTime.iso8601" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C OrderDescriptor 'OfferExpirationDate' parameter</xsd:documentation> </xsd:annotation> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 127

</xsd:element> <xsd:element name="additionalPriceInfo" type="xsd:string" minOccurs="0"/> <xsd:element name="price" type="PriceType" minOccurs="0"/> <xsd:element name="listPrice" type="PriceType" minOccurs="0"/> <xsd:element name="expectedPrice" type="PriceType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PriceInfoLowLevel"> <xsd:sequence> <xsd:element name="additionalPriceInfo" type="xsd:string" minOccurs="0"/> <xsd:element name="price" type="PriceType" minOccurs="0"/> <xsd:element name="listPrice" type="PriceType" minOccurs="0"/> <xsd:element name="expectedPrice" type="PriceType" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PriceType"> <xsd:sequence> <xsd:element name="refCurrency" type="Currency.iso4217"/> <xsd:element name="refAmount"> <xsd:simpleType> <xsd:restriction base="xsd:unsignedLong"> <xsd:maxInclusive value="4294967296"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="userCurrency" type="Currency.iso4217" minOccurs="0"/> <xsd:element name="userAmount" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:unsignedLong"> <xsd:maxInclusive value="4294967296"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ProcessingOptions"> <xsd:choice> <xsd:element name="formattedProcessingOptions" type="ProcessingOptionSelection" maxOccurs="unbounded"/> </xsd:choice> </xsd:complexType> <xsd:complexType name="ProcessingOptionSelection"> <xsd:sequence> <xsd:element name="processingOptionName" type="xsd:string"/> <xsd:element name="processingOptionSelectedValues" type="xsd:string" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ProductDeliveryOptions"> <xsd:sequence> <xsd:element name="productByteSize" type="xsd:integer" minOccurs="0"> <xsd:annotation> <xsd:documentation>It contains the size of the product in bytes. It maps the MUIS-C parameter "DataSize" in OrderItemDescriptor</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="productFormat" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It contains the MUIS-C "Format" Processing Option</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="productCompression" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>It contains the MUIS-C "Compression" Processing Option.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="otherInfo" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>Not Used</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ProductId"> <xsd:sequence> <xsd:element name="productCodeId" type="ProductCodeEnum"> <xsd:annotation> <xsd:documentation>Product type code. It maps MUIS-C AcquisitionDescriptor "ProductCodeId" and DE #ITEM "Product Code"</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="missionId" type="MissionIdEnum" minOccurs="0"> <xsd:annotation>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 128

<xsd:documentation>Unique code for the satellite/mission. It maps the MUIS-C Acquisitiondescriptor 'Satellite' (PlatformId,SatelliteNumber) and DE #ITEM 'Mission'</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="sensorId" type="SensorIdEnum" minOccurs="0"> <xsd:annotation> <xsd:documentation>Identification of the sensor. It maps MUIS-C AcquisitionDescriptor "SensorId" and the second part of DE #ITEM "Mission" </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="orbit" minOccurs="0"> <xsd:annotation> <xsd:documentation>Absolute orbit number. It maps MUIS-C AcquisitionDescriptor "Orbit" and DE #ITEM "Orbit" </xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:unsignedInt"> <xsd:maxInclusive value="16777216"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="track" minOccurs="0"> <xsd:annotation> <xsd:documentation>WRS Track number. It maps MUIS-C AcquisitionDescriptor "Track" and DE #ITEM "Track"</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:unsignedInt"> <xsd:maxInclusive value="65535"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="frame" minOccurs="0"> <xsd:annotation> <xsd:documentation>WRS frame number. It maps MUIS-C AcquisitionDescriptor "Frame" and DE #ITEM "Frame" </xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:unsignedInt"> <xsd:maxInclusive value="65535"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="swathId" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="temporalCoverage" type="TemporalSelection" minOccurs="0"> <xsd:annotation> <xsd:documentation>Start date/time for the temporal coverage. It maps MUIS-C AcquisitionDescriptor "TemporalCoverage(Start)" and DE #ITEM "Date"</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="sceneCentre" type="Point" minOccurs="0"> <xsd:annotation> <xsd:documentation>Selected scene centre coordinates.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="productOrderId" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps MUIS-C AcquisitionDescriptor 'ProductOrderId' and DE #ITEM 'Scene'</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ProductSource"> <xsd:sequence> <xsd:element name="provider" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="facility" minOccurs="0"> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 129

<xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="collectionId" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="supplier" minOccurs="0"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Name"> <xsd:sequence> <xsd:element name="title" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #DORD 'TITLE' parameter</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="15"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="firstName" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #DORD 'FIRST_NAME' parameter</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="lastName" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #DORD 'LAST_NAME' parameter</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="RectangleSceneSelection"> <xsd:sequence> <xsd:element name="acrossGrid"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="alongGridUnitType" type="xsd:string"/> <xsd:element name="alongGrid"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="acrossSize"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="alongSize"> <xsd:simpleType> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 130

<xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="acrossCenter"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="alongCenter"> <xsd:simpleType> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="-2147483648"/> <xsd:maxInclusive value="2147483647"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="alongOrigin" type="AlongOriginEnum" default="0" minOccurs="0"> <xsd:annotation> <xsd:documentation>Used only by MUIS-C </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="RejectionInfo"> <xsd:annotation> <xsd:documentation>It maps DE #ITEM 'RejC' and 'RejN'</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="rejectionCode" type="xsd:string" minOccurs="0"/> <xsd:element name="rejectionNote" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="SceneSelectionOptions"> <xsd:sequence> <xsd:element name="formattedSceneSelectionOptions" type="FormattedSceneSelectionOptions" minOccurs="0"> <xsd:annotation> <xsd:documentation>Scene selected over a browse image</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="unformattedSceneSelectionOptions" type="UnformattedSceneSelectionOptions" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="SpatialCoverage"> <xsd:choice> <xsd:element name="boundingRectangle" type="BoundingRectangle"/> <xsd:element name="circle" type="Circle"/> <xsd:element name="gPolygon" type="GPolygon"/> </xsd:choice> </xsd:complexType> <xsd:complexType name="TemporalSelection"> <xsd:sequence> <xsd:element name="startDateTime"> <xsd:simpleType> <xsd:restriction base="DateTime.iso8601"/> </xsd:simpleType> </xsd:element> <xsd:element name="endDateTime" type="DateTime.iso8601"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="UnformattedSceneSelectionOptions"> <xsd:sequence> <xsd:element name="sceneCentre" type="Point" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps #ITEM 'Lat' and 'Long' (Centre Latitude and Longitude of floating frame) and the MUIS-C OrderItemDescriptor 'OrderItemSceneCentre'</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="subSceneIdentification" type="xsd:string" minOccurs="0"> <xsd:annotation> <xsd:documentation>(e.g. 'quarter number')</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="alongShiftSpecification" type="AlongShiftSpecification" minOccurs="0"> <xsd:annotation> <xsd:documentation>It maps DE #ITEM 'DN' </xsd:documentation> </xsd:annotation> </xsd:element> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 131

<xsd:element name="alongSizeSpecification" type="AlongSizeSpecification" minOccurs="0"> <xsd:annotation> <xsd:documentation>Used for multi-scenes product. It maps DE #ITEM 'NOF' (Number_Of_frames)</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="VerticalSelection"> <xsd:sequence> <xsd:element name="lowAltitude" type="xsd:int"> <xsd:annotation> <xsd:documentation>The unit for lowAltitude is the Meter ('m')</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="highAltitude" type="xsd:int"> <xsd:annotation> <xsd:documentation>The unit for highAltitude is the Meter ('m')</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <!--===================================== Simple types definition --> <xsd:simpleType name="Currency.iso4217"> <xsd:restriction base="xsd:string"> <xsd:maxLength value="3"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="DateTime.iso8601"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <xsd:simpleType name="VatRegistrationNo"> <xsd:restriction base="xsd:string"> <xsd:maxLength value="30"/> </xsd:restriction> </xsd:simpleType> <!--Element Section--> <!--===================================== Simple types and base elements start from here after --> <xsd:simpleType name="ActionEnum"> <xsd:annotation> <xsd:documentation>List of valid actions allowed</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="orderEstimate"/> <xsd:enumeration value="orderQuoteAndSubmit"/> <xsd:enumeration value="orderMonitor"/> <xsd:enumeration value="orderCancel"/> <xsd:enumeration value="orderDetail"/> <xsd:enumeration value="orderAccount"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="AlongOriginEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="0"/> <xsd:enumeration value="s"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="AttachmentTypeEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Mime"/> <xsd:enumeration value="Uuencoded"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="CoverageRequiredEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Full optimized (best) coverage"/> <xsd:enumeration value="Full coverage required"/> <xsd:enumeration value="any coverage"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="DeliveryPolicyEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Only at end of last observation"/> <xsd:enumeration value="At end of each observation"/> <xsd:enumeration value="As product are becoming available"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="MapProjectionEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Plate-Caree"/> <xsd:enumeration value="Geodesic"/> <xsd:enumeration value="AcquisitionFootprint"/> <xsd:enumeration value="UTM"/> <xsd:enumeration value="GAUSS_CONFORMAL"/> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 132

<xsd:enumeration value="GAUSS_KRUGER"/> <xsd:enumeration value="NONE"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="MissionIdEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="ENVISAT"/> <xsd:enumeration value="ERS-1"/> <xsd:enumeration value="ERS-2"/> <xsd:enumeration value="JERS-1"/> <xsd:enumeration value="Landsat-1"/> <xsd:enumeration value="Landsat-2"/> <xsd:enumeration value="Landsat-3"/> <xsd:enumeration value="Landsat-4"/> <xsd:enumeration value="Landsat-5"/> <xsd:enumeration value="Landsat-7"/> <xsd:enumeration value="MOS-1B"/> <xsd:enumeration value="NIMBUS-7"/> <xsd:enumeration value="NOAA-7"/> <xsd:enumeration value="NOAA-8"/> <xsd:enumeration value="NOAA-9"/> <xsd:enumeration value="NOAA-10"/> <xsd:enumeration value="NOAA-11"/> <xsd:enumeration value="NOAA-12"/> <xsd:enumeration value="NOAA-14"/> <xsd:enumeration value="NOAA-15"/> <xsd:enumeration value="NOAA-16"/> <xsd:enumeration value="NOAA-17"/> <xsd:enumeration value="NOAA-18"/> <xsd:enumeration value="SeaStar"/> <xsd:enumeration value="IRS-P3"/> <xsd:enumeration value="AQUA"/> <xsd:enumeration value="TERRA"/> <xsd:enumeration value="SPOT-4"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OrderItemStatusDynamicEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="BeingEstimated"/> <xsd:enumeration value="BeingQuoted"/> <xsd:enumeration value="BeingProcessed"/> <xsd:enumeration value="BeingCancelled"/> <xsd:enumeration value="BeingOnHold"/> <xsd:enumeration value="BeingDeleted"/> <xsd:enumeration value="BeingProcessed (WaitScheduling)"/> <xsd:enumeration value="BeingProcessed (Planned)"/> <xsd:enumeration value="BeingProcessed (WaitPlanning)"/> <xsd:enumeration value="BeingProcessed (Acquired)"/> <xsd:enumeration value="BeingProcessed (DataBeingTransferred)"/> <xsd:enumeration value="BeingProcessed (DataReadyAtProcessingFacility)"/> <xsd:enumeration value="BeingProcessed (WaitProduction)"/> <xsd:enumeration value="BeingProcessed (InProduction)"/> <xsd:enumeration value="BeingProcessed (ProductionCompleted)"/> <xsd:enumeration value="BeingProcessed (BeingShipped)"/> <xsd:enumeration value="BeingProcessed (RejectBeingAnalysed)"/> <xsd:enumeration value="BeingProcessed (QualityControl)"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OrderItemStatusStaticEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Estimated"/> <xsd:enumeration value="NotValid"/> <xsd:enumeration value="Cancelled"/> <xsd:enumeration value="Completed"/> <xsd:enumeration value="Terminated"/> <xsd:enumeration value="Deleted"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OrderScopeEnum"> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> <xsd:enumeration value="interferometry"/> <xsd:enumeration value="multi-temporal"/> <xsd:enumeration value="mosaic"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OrderSourceEnum"> <xsd:annotation> <xsd:documentation>List of systems from which the order can be posted. This list is extensible</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="MUIS"/> <xsd:enumeration value="OHS"/> <xsd:enumeration value="DESCW"/> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 133

<xsd:enumeration value="Eurimage"/> <xsd:enumeration value="Spotimage"/> <xsd:enumeration value="EMMA"/> <xsd:enumeration value="SARCOM"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OrderStatusEnum"> <xsd:annotation> <xsd:documentation>List of Valid Statii for the Delivery Unit as defined in MUISC</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="BeingEstimated"/> <xsd:enumeration value="Estimated"/> <xsd:enumeration value="BeingQuoted"/> <xsd:enumeration value="NotValid"/> <xsd:enumeration value="BeingProcessed"/> <xsd:enumeration value="Cancelled"/> <xsd:enumeration value="BeingCancelled"/> <xsd:enumeration value="Completed"/> <xsd:enumeration value="BeingOnHold"/> <xsd:enumeration value="Terminated"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="OrderTypeEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="product order"/> <xsd:enumeration value="open order"/> <xsd:enumeration value="acquisition request"/> <xsd:enumeration value="accounting"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="PassDirectionEnum"> <xsd:annotation> <xsd:documentation>List of valid Pass Direction Values</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="A"/> <xsd:enumeration value="D"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ProductCodeEnum"> <xsd:annotation> <xsd:documentation>List of ProductCodeId (to be provided by ESA)</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="SAR"/> <xsd:enumeration value="SAR_RAW"/> <xsd:enumeration value="SAR_PRI"/> <xsd:enumeration value="SAR_GEC"/> <xsd:enumeration value="SAR_GTC"/> <xsd:enumeration value="SAR_SLC"/> <xsd:enumeration value="ATS_GBT"/> <xsd:enumeration value="ATS_GST"/> <xsd:enumeration value="ATS_PST"/> <xsd:enumeration value="SWM_FDC"/> <xsd:enumeration value="WSC_FDC"/> <xsd:enumeration value="ALT_FDC"/> <xsd:enumeration value="ALT_OPR"/> <xsd:enumeration value="ALT_WAP"/> <xsd:enumeration value="ALT_SSH"/> <xsd:enumeration value="ALT_TOP"/> <xsd:enumeration value="ORB_PRL"/> <xsd:enumeration value="ORB_PRC"/> <xsd:enumeration value="ORB_EGM"/> <xsd:enumeration value="MWS_VLC"/> <xsd:enumeration value="MWS_MBT"/> <xsd:enumeration value="GOM_L13"/> <xsd:enumeration value="GOM_L22"/> <xsd:enumeration value="JSAR"/> <xsd:enumeration value="OPS"/> <xsd:enumeration value="TM"/> <xsd:enumeration value="ETM"/> <xsd:enumeration value="MSS_SYC"/> <xsd:enumeration value="AVHRR"/> <xsd:enumeration value="CZCS"/> <xsd:enumeration value="SeaWiFS"/> <xsd:enumeration value="MOS_1B"/> <xsd:enumeration value="MODIS_1B"/> <xsd:enumeration value="ASA_EC__0P"/> <xsd:enumeration value="ASA_MS__0P"/> <xsd:enumeration value="ASA_IM"/> <xsd:enumeration value="ASA_IM__0P"/> <xsd:enumeration value="ASA_IMS_1P"/> <xsd:enumeration value="ASA_IMP_1P"/> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 134

<xsd:enumeration value="ASA_IMG_1P"/> <xsd:enumeration value="ASA_IMM_1P"/> <xsd:enumeration value="ASA_IM__BP"/> <xsd:enumeration value="ASAR_WS"/> <xsd:enumeration value="ASA_WS__0P"/> <xsd:enumeration value="ASA_WSM_1P"/> <xsd:enumeration value="ASA_WS__BP"/> <xsd:enumeration value="ASA_GM"/> <xsd:enumeration value="ASA_GM__0P"/> <xsd:enumeration value="ASA_GM1_1P"/> <xsd:enumeration value="ASA_GM__BP"/> <xsd:enumeration value="ASA_AP"/> <xsd:enumeration value="ASA_APH_0P"/> <xsd:enumeration value="ASA_APV_0P"/> <xsd:enumeration value="ASA_APC_0P"/> <xsd:enumeration value="ASA_APM_1P"/> <xsd:enumeration value="ASA_APS_1P"/> <xsd:enumeration value="ASA_APP_1P"/> <xsd:enumeration value="ASA_APG_1P"/> <xsd:enumeration value="ASA_AP__BP"/> <xsd:enumeration value="ASA_WV"/> <xsd:enumeration value="ASA_WV__0P"/> <xsd:enumeration value="ASA_WVI_1P"/> <xsd:enumeration value="ASA_WVS_1P"/> <xsd:enumeration value="ASA_WVW_2P"/> <xsd:enumeration value="ATS_NL__0P"/> <xsd:enumeration value="ATS_TOA_1P"/> <xsd:enumeration value="ATS_NR__2P"/> <xsd:enumeration value="ATS_AR__2P"/> <xsd:enumeration value="ATS_MET_2P"/> <xsd:enumeration value="ATS_AST_BP"/> <xsd:enumeration value="RA2_CAL_0P"/> <xsd:enumeration value="RA2_ME__0P"/> <xsd:enumeration value="RA2_MW"/> <xsd:enumeration value="RA2_MW__1P"/> <xsd:enumeration value="RA2_MWS_2P"/> <xsd:enumeration value="RA2_MWG_2P"/> <xsd:enumeration value="RA2_WWV_2PR"/> <xsd:enumeration value="RA2_FDG_2P"/> <xsd:enumeration value="RA2_IDG_2P"/> <xsd:enumeration value="RA2_GDR_2P"/> <xsd:enumeration value="MWR_NL__0P"/> <xsd:enumeration value="GOM_"/> <xsd:enumeration value="GOM_NL__0P"/> <xsd:enumeration value="GOM_MM__0P"/> <xsd:enumeration value="GOM_TRA_1P"/> <xsd:enumeration value="GOM_LIM_1P"/> <xsd:enumeration value="GOM_RR__2P"/> <xsd:enumeration value="GOM_EXT_2P"/> <xsd:enumeration value="GOM_NL__2P"/> <xsd:enumeration value="MER_CA__0P"/> <xsd:enumeration value="MER_RV__0P"/> <xsd:enumeration value="MER_RR"/> <xsd:enumeration value="MER_RR__0P"/> <xsd:enumeration value="MER_RR__1P"/> <xsd:enumeration value="MER_RR__2P"/> <xsd:enumeration value="MER_LRC_2P"/> <xsd:enumeration value="MER_RRC_2P"/> <xsd:enumeration value="MER_RRV_2P"/> <xsd:enumeration value="MER_RR__BP"/> <xsd:enumeration value="MER_FR"/> <xsd:enumeration value="MER_FR__0P"/> <xsd:enumeration value="MER_FR__1P"/> <xsd:enumeration value="MER_FR__2P"/> <xsd:enumeration value="MIP_RW__0P"/> <xsd:enumeration value="MIP_LS__0P"/> <xsd:enumeration value="MIP_NL"/> <xsd:enumeration value="MIP_NL__0P"/> <xsd:enumeration value="MIP_NL__1P"/> <xsd:enumeration value="MIP_NL__2P"/> <xsd:enumeration value="MIP_NLE_2P"/> <xsd:enumeration value="SCI_NL"/> <xsd:enumeration value="SCI_NL__0P"/> <xsd:enumeration value="SCI_NL__1P"/> <xsd:enumeration value="SCI_NL__2P"/> <xsd:enumeration value="SCI_OL__2P"/> <xsd:enumeration value="SCI_RV__2P"/> <xsd:enumeration value="DOR_NAV_0P"/> <xsd:enumeration value="DOR_DOP_0P"/> <xsd:enumeration value="DOR_DOP_1P"/> <xsd:enumeration value="TLM_HK__0P"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ProductStatusEnum"> <xsd:annotation> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 135

<xsd:documentation>Lit of valid Product Status supported</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Visible"/> <xsd:enumeration value="Planned"/> <xsd:enumeration value="Acquired"/> <xsd:enumeration value="Archived"/> <xsd:enumeration value="Produced"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="SensorIdEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="AATSR"/> <xsd:enumeration value="AMI/SAR/Image"/> <xsd:enumeration value="AMI/SAR/wave"/> <xsd:enumeration value="AMI/scatterometer"/> <xsd:enumeration value="ASAR"/> <xsd:enumeration value="ASAR/IM (Image Mode)"/> <xsd:enumeration value="ASAR/AP (Alternating Polarization Mode)"/> <xsd:enumeration value="ASAR/WS (Wide Swath Mode)"/> <xsd:enumeration value="ASAR/GM (Global Monitoring Mode)"/> <xsd:enumeration value="ASAR/WV (Wave Mode)"/> <xsd:enumeration value="ATSR"/> <xsd:enumeration value="ATSR-2"/> <xsd:enumeration value="AVHRR"/> <xsd:enumeration value="CZCS"/> <xsd:enumeration value="DORIS"/> <xsd:enumeration value="ETM+"/> <xsd:enumeration value="GOME"/> <xsd:enumeration value="GOMOS"/> <xsd:enumeration value="HRVIR"/> <xsd:enumeration value="JERS SAR"/> <xsd:enumeration value="MERIS"/> <xsd:enumeration value="MESSR"/> <xsd:enumeration value="MIPAS"/> <xsd:enumeration value="MODIS"/> <xsd:enumeration value="MOS"/> <xsd:enumeration value="MSR"/> <xsd:enumeration value="MSS"/> <xsd:enumeration value="OPS"/> <xsd:enumeration value="RA-2/MWR"/> <xsd:enumeration value="RA/LRR"/> <xsd:enumeration value="RA/MWR"/> <xsd:enumeration value="RBV"/> <xsd:enumeration value="SCIAMACHY"/> <xsd:enumeration value="SeaWiFS"/> <xsd:enumeration value="TM"/> <xsd:enumeration value="VTIR"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="StatusUpdateOptionEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="manual"/> <xsd:enumeration value="automatic"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="TransferDirectionEnum"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="push"/> <xsd:enumeration value="pull"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>

7.6

Regions Definition Schema and Example

As a service provider you can define your own set of geographical regions from which a user can select one to serve as his Area Of Interest (AOI). The user can either select the region on the map display or from a set of list boxes. The regions can optionally be hierarchically structured in a set of layers or levels (e.g. Level 1 = Top Level are the continents, Level 2 refers to individual countries, Level 3 to provinces and Level 4 to communes). For each of these layers you can set the map scale range for which this level is visible. You can upload your custom regions list during the configuration of the service in the SSE Portal. If you do

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 136

not specify your own custom list, the SSE portal's default regions list containing the administrative boundaries will be used. The custom regions list needs to be provided as one zipped file containing a series of shape files and one XML file adhering to the regions.xsd schema. The ZIP file should not have relative paths for the files it contains. The size of the ZIP file is limited to 10MB. The XML file contains two sections: the layerCollection describes how (symbology) and when to display each layer (= level- scale-dependent display), while the regionCollection holds the name, level every region, together with the mutual hierarchical relationships. One region can have multiple parent-regions and multiple child-regions with the limitation that each region can only be part of one level. For describing the geometry, there needs to be a single shape files for each level. Polygon and MultiPolygon feature types are allowed in the EPSG:4326 coordinate reference system. The ".shp", ".shx" and ".dbf" files should all be present. Other shape-related files like ".prx" may be present but will be ignored. The shape files should contain the following attributes: code, label (=name) and level whereby the code of each feature should correspond to the fid attributes within the XML file. The label and level also present within the XML file are duplicated as shape attributes for operational performance reasons.regions.xsd

<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by GIM (GIM) --> <!--============================================================== File: regions.xsd Version: v1.1.0 2005-04-01 Author: Kristof Vydt Company: G.I.M. Geographic Information Management nv ==============================================================--> <xs:schema xmlns:gml="http://www.opengis.net/gml" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:annotation> <xs:appinfo>regions.xsd v1.1.0 2005-04-01</xs:appinfo> <xs:documentation>XML Schema for AOI Tool upload of hierarchical regions</xs:documentation> </xs:annotation> <!--============================================================== Import constructs from the GML Feature and Geometry schemas ==============================================================--> <xs:import namespace="http://www.opengis.net/gml" schemaLocation="feature.xsd"/> <!--============================================================== Global element Declarations ==============================================================--> <!-- REGION DOCUMENT --> <xs:element name="regionsDocument"> <xs:annotation> <xs:documentation>Combine all info for a hierarchical list of regions.</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="layerCollection" type="layerCollectionType"/> <xs:element name="regionCollection" type="regionCollectionType"/> </xs:sequence> <xs:attribute name="timeStamp" type="xs:dateTime" use="optional"/> <xs:attribute name="resourceLabel" type="xs:string" use="optional"/> </xs:complexType> </xs:element> <!--============================================================== Type definitions ==============================================================--> <!-- LAYER COLLECTION --> <xs:complexType name="layerCollectionType">

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 137

<xs:annotation> <xs:documentation>Combines all configuration settings.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="layer" type="layerType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <!-- LAYER --> <xs:complexType name="layerType"> <xs:annotation> <xs:documentation>Holds the settings for one hierarchical level.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="minmaprange" type="xs:decimal" default="0" minOccurs="0"/> <xs:element name="maxmaprange" type="xs:decimal" default="200" minOccurs="0"/> <xs:element name="color" type="colorType" default="0" minOccurs="0"/> <xs:element name="fillcolor" type="colorType" default="-1" minOccurs="0"/> <xs:element name="style" type="styleType" default="0" minOccurs="0"/> <xs:element name="weight" type="weightType" default="1" minOccurs="0"/> <xs:element name="hscolor" type="colorType" default="65280" minOccurs="0"/> <xs:element name="hsfillcolor" type="colorType" default="-1" minOccurs="0"/> <xs:element name="hsstyle" type="styleType" default="0" minOccurs="0"/> <xs:element name="hsweight" type="weightType" default="2" minOccurs="0"/> </xs:sequence> <xs:attribute name="level" type="xs:unsignedByte" use="required"/> <xs:attribute name="label" type="xs:string" use="optional"/> <!-- new since v1.1.0: use geometry tags in regionType or (file)name attribute in layerType --> <xs:attribute name="name" type="xs:string" use="optional"/> <xs:attribute name="filename" type="xs:string" use="optional"/> </xs:complexType> <!-- COLOR --> <xs:simpleType name="colorType"> <xs:annotation> <xs:documentation>Positive integer for colored, 0 for black, -1 for transparant.</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"> <xs:minInclusive value="-1"/> <xs:maxInclusive value="16777215"/> </xs:restriction> </xs:simpleType> <!-- STYLE --> <xs:simpleType name="styleType"> <xs:annotation> <xs:documentation>GeoMedia style value.</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="10"/> </xs:restriction> </xs:simpleType> <!-- WEIGHT --> <xs:simpleType name="weightType"> <xs:annotation> <xs:documentation>Thickness of lines and points.</xs:documentation> </xs:annotation> <xs:restriction base="xs:integer"> <xs:minInclusive value="1"/> <xs:maxInclusive value="10"/> </xs:restriction> </xs:simpleType> <!-- REGION COLLECTION --> <xs:complexType name="regionCollectionType"> <xs:annotation> <xs:documentation>Combines all region features.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="featureMember" type="featureMemberType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 138

<!-- FEATURE MEMBER --> <xs:complexType name="featureMemberType"> <xs:annotation> <xs:documentation>Based on GML.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="region" type="regionType"/> </xs:sequence> </xs:complexType> <!-- REGION --> <xs:complexType name="regionType"> <xs:annotation> <xs:documentation>Holds one region.</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="level" type="xs:unsignedByte"/> <!-- new since v1.1.0: use geometry tags in regionType or (file)name attribute in layerType --> <xs:element name="geometry" minOccurs="0"> <xs:complexType> <xs:choice> <xs:element ref="gml:Polygon"/> <xs:element ref="gml:MultiPolygon"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="relationships" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="relationship" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="relation" type="xs:string" use="required" fixed="part-of"/> <xs:attribute name="target-name" type="xs:string" use="optional"/> <xs:attribute name="target-identifier" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <!--TODO:make geometry type gml:geometryProperty --> <!-- relationships is based on ADL Gazetteer Protocol gazetteer-standard-report.xsd --> </xs:sequence> <xs:attribute name="fid" type="xs:string" use="required"/> </xs:complexType> </xs:schema>

7.6.1 Regions Example

<regionsDocument timeStamp="2004-10-25T10:54:14" resourceLabel="Fishing areas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schemas.gim.be/mass/X/regions.xsd"> <layerCollection> <layer level="1" label="Level 1" name = "Level 1" filename = "Level1.shp"> <minmaprange>55</minmaprange> <maxmaprange>1000</maxmaprange> <color>0</color> <fillcolor>-1</fillcolor> <style>0</style> <weight>1</weight> <hscolor>65280</hscolor> <hsfillcolor>-1</hsfillcolor> <hsstyle>0</hsstyle> <hsweight>2</hsweight> </layer> <layer level="2" label="...">

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 139

... </layer> ... </layerCollection> <regionCollection> <featureMember> <region fid="2701"> <name>BARENTS SEA</name> <level>2</level> <relationships> <relationship relation="part-of" target-identifier="27"/> </relationships> </region> </featureMember> <featureMember> ... </featureMember> ... </regionCollection> </regionsDocument>

7.7

OGC Styled Layer Descriptor Language example

<StyledLayerDescriptor version="1.0.0" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- a named layer is the basic building block of an sld document --> <NamedLayer> <Name>sr</Name> <title>Example SLD document applicable to Service Result Features of the Service Support Environment</title> <abstract>This is for testing only.</abstract> <UserStyle> <FeatureTypeStyle> <FeatureTypeName>Point</FeatureTypeName> <Rule> <MinScaleDenominator>1000000</MinScaleDenominator> <MaxScaleDenominator>100000000</MaxScaleDenominator> <Name>All</Name> <PointSymbolizer> <Graphic> <Mark> <WellKnownName>star</WellKnownName> <Fill> <CssParameter name="fill">#FFFF00</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#0000FF</CssParameter> <CssParameter name="stroke-width">0.7</CssParameter> </Stroke> </Mark> <Size>20</Size> </Graphic> </PointSymbolizer> </Rule>

<Rule> <Name>SPACEBEL</Name> <MaxScaleDenominator>1000000</MaxScaleDenominator> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>id</ogc:PropertyName> <ogc:Literal>SPACEBEL</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> <Graphic> <Size> <ogc:Literal>100</ogc:Literal> </Size> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 140

<Opacity> <ogc:Literal>1.0</ogc:Literal> </Opacity> <Rotation> <ogc:Literal>0.0</ogc:Literal> </Rotation> <ExternalGraphic> <Format>image/gif</Format> <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://schemas.gim.be/mass/3.0/Samples/spacebel.gif"/> </ExternalGraphic> </Graphic> </PointSymbolizer> </Rule> <Rule> <Name> GIM</Name> <MaxScaleDenominator>1000000</MaxScaleDenominator> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>id</ogc:PropertyName> <ogc:Literal>GIM</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> <Graphic> <Size> <ogc:Literal>100</ogc:Literal> </Size> <Opacity> <ogc:Literal>1.0</ogc:Literal> </Opacity> <Rotation> <ogc:Literal>0.0</ogc:Literal> </Rotation> <ExternalGraphic> <Format>image/gif</Format> <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://schemas.gim.be/mass/3.0/Samples/gim.gif"/> </ExternalGraphic> </Graphic> </PointSymbolizer> </Rule> <Rule> <Name>ESRIN</Name> <MaxScaleDenominator>5000000</MaxScaleDenominator> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>id</ogc:PropertyName> <ogc:Literal>ESRIN</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> <Graphic> <Size> <ogc:Literal>200</ogc:Literal> </Size> <Opacity> <ogc:Literal>1.0</ogc:Literal> </Opacity> <Rotation> <ogc:Literal>0.0</ogc:Literal> </Rotation> <ExternalGraphic> <Format>image/gif</Format> <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://schemas.gim.be/mass/3.0/Samples/esrin.gif"/> </ExternalGraphic> </Graphic> </PointSymbolizer> </Rule> <Rule> <Name>CSE</Name> <MaxScaleDenominator>5000000</MaxScaleDenominator> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>id</ogc:PropertyName> <ogc:Literal>CSE</ogc:Literal> </ogc:PropertyIsEqualTo> ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 141

</ogc:Filter> <PointSymbolizer> <Graphic> <Size> <ogc:Literal>100</ogc:Literal> </Size> <Opacity> <ogc:Literal>1.0</ogc:Literal> </Opacity> <Rotation> <ogc:Literal>0.0</ogc:Literal> </Rotation> <ExternalGraphic> <Format>image/gif</Format> <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://schemas.gim.be/mass/3.0/Samples/cse.gif"/> </ExternalGraphic> </Graphic> </PointSymbolizer> </Rule> <Rule> <Name>VITO</Name> <MaxScaleDenominator>1000000</MaxScaleDenominator> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>id</ogc:PropertyName> <ogc:Literal>VITO</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> <Graphic> <Size> <ogc:Literal>200</ogc:Literal> </Size> <Opacity> <ogc:Literal>1.0</ogc:Literal> </Opacity> <Rotation> <ogc:Literal>0.0</ogc:Literal> </Rotation> <ExternalGraphic> <Format>image/gif</Format> <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://schemas.gim.be/mass/3.0/Samples/vito.gif"/> </ExternalGraphic> </Graphic> </PointSymbolizer> </Rule> <Rule> <Name>Selected</Name> <PointSymbolizer> <Graphic> <Mark> <WellKnownName>circle</WellKnownName> <Fill> <CssParameter name="fill">#FF0000</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#FF0000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> </Mark> <Size>50</Size> </Graphic> </PointSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 142

7.8

sse_eoli Schema

As described in section 3.2.2.3, the sse_eoli schema defines the messages exchanged between the portal and the eoli worflows. These messages encapsulate the EOLI messages in a generic structure. The multiCataloguesInputOutput message from portal to the workflow contains the eoli searchRequest message, the different collections for which this request has to be submitted and the area of interest as provided by the WebMapViewer (see Figure 39). The search EOLI workflow integrates the area of interest information inside eoli searchRequest message. The parentedId element contains the collection identifier.

Figure 39: multiCataloguesSearchInputMsg

In the other direction (workflow to portal), the EOLI workflow merges the different records (metadata) returned for the different collections into a single structure multiCataloguesSearchOutputMsg (see Figure 40). It also generates the WebMapViewer GML representation of the returned records in "the viewEmbeddedResult" element.

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 143

Figure 40: multiCataloguesSearchoutputMsg

The "retrievedData" element (see Figure 41) is a generic structure to encapsulate the specific records of the remote catalogue, EOLI in this case. The workflow copies in a common place independent of the catalogue protocol, the product id (sse:id) and the catalogue id (sse:parented). These elements are needed by the SSE portal to identify the product in a generic way. The "sse:overlap element" is computed by the portal based on GML stored in the "viewEmbeddedResultElement".

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 144

Figure 41: retrievedData

The approach of defining an internal schema on top of the remote catalogue schema has been applied following the same canevas for the other catalogues icds supported by the service registration such as the OGC catalogues defined for EO products [RD30] and [RD31]. For each of these catalogues interface, there are two defined schemas file. One is a stub of the other. This avoids to import all subschemas (e.g. GML schemas) in the SSE toolbox. The sub schemas are published at services.eoportal.org/schemas/1.6.... The full schemas are present on each SSE servers in the http://sse_url/wsdl/sseSchemas/internalIcd/catalogue/ The following schema is the sse_eoli schema:

<xsd:schema xmlns="http://www.esa.int/sse_eoli" xmlns:sse="http://www.esa.int/mass" xmlns:aoi="http://www.esa.int/xml/schemas/mass/aoifeatures" xmlns:eoli="http://earth.esa.int/XML/eoli" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.esa.int/sse_eoli" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0"> <xsd:import namespace="http://www.esa.int/mass" schemaLocation="sse_basic.xsd"/> <xsd:import namespace="http://www.esa.int/xml/schemas/mass/aoifeatures" schemaLocation="../../gml/WebmapViewer/GML2/aoifeatures.xsd"/> <xsd:import namespace="http://earth.esa.int/XML/eoli" schemaLocation="eoli.xsd"/> <!--standard/common basic elements --> <!-- Search types --> <xsd:element name="searchOutput" type="SearchOutputType"> <xsd:annotation> <xsd:documentation>element that contains the Search/Present Results</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="SearchOutputType"> <xsd:annotation>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 145

<xsd:documentation>standard information that contains the specific output of a Search or Present operation</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> <xsd:element name="hits" type="xsd:nonNegativeInteger" default="0" minOccurs="0"/> <xsd:element name="cursor" type="xsd:positiveInteger" nillable="false" minOccurs="0"/> <xsd:element ref="sse:parentId" minOccurs="0"/> <xsd:element ref="retrievedData" minOccurs="0"/> <xsd:element ref="sse:viewEmbeddedResult" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="retrievedData" type="RetrievedDataType"> <xsd:annotation> <xsd:documentation>element that represents the collection of retrieved data from a Search or a Present</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="PortalMetadataType"> <xsd:sequence> <xsd:element ref="sse:id"/> <xsd:element ref="sse:parentId"/> <xsd:element name="metadata" type="eoli:MetadataType"/> <xsd:element ref="sse:overlap"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="RetrievedDataType"> <xsd:annotation> <xsd:documentation>type of the retrieved data</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element name="portalMetadata" type="PortalMetadataType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="presentation" type="eoli:PresentationType"/> </xsd:complexType> <!-types needed for the internal interface between the portal and the search/present workflow --> <xsd:element name="multiCataloguesSearchInputMsg" type="MultiCataloguesSearchInputType"/> <xsd:complexType name="MultiCataloguesSearchInputType"> <xsd:annotation> <xsd:documentation>type for input xml message used to do search on multiple catalogues</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="sse:searchCollections"/> <xsd:element ref="aoi:areaOfInterest" minOccurs="0"/> <xsd:element ref="eoli:searchRequest" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:element name="multiCataloguesSearchOutputMsg" type="MultiCataloguesSearchOutputType"/> <xsd:complexType name="MultiCataloguesSearchOutputType"> <xsd:annotation> <xsd:documentation>type for ouput xml message resulted from a multiple search</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="sse:statusInfo"/> <xsd:element ref="searchOutput" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

ICD.DOC

SSE ICD

Ref. Issue Rev. Page

: ME-ICD-0001-SPB : 1-13/02/04 : 10-26/07/11 : 146

<xsd:element name="searchOutputs"> <xsd:complexType> <xsd:sequence> <xsd:element ref="eoli:collectionId"/> <xsd:element ref="searchOutput"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-internal interface for present operation --> <xsd:element name="processPresentInputMsg" type="ProcessPresentInputType"> <xsd:annotation> <xsd:documentation>input message element for the processPresent SOAP request</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="ProcessPresentInputType"> <xsd:annotation> <xsd:documentation>type of the input message of a service's processPresent soap operation</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="eoli:presentRequest"/> </xsd:sequence> </xsd:complexType> <xsd:element name="processPresentOutputMsg" type="ProcessPresentOutputType"> <xsd:annotation> <xsd:documentation>output message element for the processPresent SOAP response</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:complexType name="ProcessPresentOutputType"> <xsd:annotation> <xsd:documentation>type of the ouput message of a service's present soap operation</xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="searchOutput"/> </xsd:sequence> </xsd:complexType> </xsd:schema>

ICD.DOC

Information

Microsoft Word - ME-ICD-0001-SPB v1.10 _SSE Interface Control Document_.doc

150 pages

Find more like this

Report File (DMCA)

Our content is added by our users. We aim to remove reported files within 1 working day. Please use this link to notify us:

Report this file as copyright or inappropriate

495282


You might also be interested in

BETA
Oracle Database Release Notes
Microsoft Word - SampleChapter
Microsoft Word - ME-ICD-0001-SPB v1.10 _SSE Interface Control Document_.doc
Application Programming and SQL Guide