/[volute]/trunk/projects/grid/uws/doc/UWS.html
ViewVC logotype

Diff of /trunk/projects/grid/uws/doc/UWS.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 981 by harripa, Thu Nov 6 14:02:08 2008 UTC revision 982 by harripa, Mon Apr 20 15:07:43 2009 UTC
# Line 1  Line 1 
1  <?xml version="1.0" encoding="ISO-8859-1"?>  <?xml version="1.0" encoding="ISO-8859-1"?><!-- $Id:$
 <!-- $Id:$  
2  Universal Worker Service WD  Universal Worker Service WD
3  Note that this file should be xhtml with div to mark sections  Note that this file should be xhtml with div to mark sections
4  Paul Harrison -->  Paul Harrison -->
5  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <!DOCTYPE html
6  <html xmlns="http://www.w3.org/1999/xhtml">    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7  <head>  <html xmlns="http://www.w3.org/1999/xhtml"><head xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" profile="http://www.w3.org/1999/xhtml/vocab"><title>Universal Worker Service Specification</title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/><meta name="Title" content="IVOA WG Internal Draft"/><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/><meta name="author" content="Paul Harrison, paul.harrison@manchester.ac.uk"/><meta name="maintainedBy" content="Paul Harrison, paul.harrison@manchester.ac.uk"/><link href="http://www.ivoa.net/misc/ivoa_a.css" rel="stylesheet" type="text/css"/><link rel="stylesheet" href="http://www.ivoa.net/misc/ivoa_wd.css" type="text/css"/><style type="text/css" xml:space="preserve"/><link href="ivoadoc/XMLPrint.css" rel="stylesheet" type="text/css"/></head><body bgcolor="#FFFFFF">
 <title>Universal Worker Service Specification</title>  
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />  
 <meta name="Title" content="IVOA WG Internal Draft" />  
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
 <meta name="author" content="Paul Harrison, paul.harrison@manchester.ac.uk" />  
 <meta name="maintainedBy" content="Paul Harrison, paul.harrison@manchester.ac.uk" />  
 <link href="http://www.ivoa.net/misc/ivoa_a.css" rel="stylesheet" type="text/css" />  
 <link rel="stylesheet" href="http://www.ivoa.net/misc/ivoa_wd.css" type="text/css" />  
 <style type="text/css"></style>  
 <link href="XMLPrint.css" rel="stylesheet" type="text/css" />  
 </head>  
 <body bgcolor="#FFFFFF">  
8  <div class="head">  <div class="head">
9  <table>  <table><tr><td rowspan="1" colspan="1"><a href="http://www.ivoa.net/" shape="rect"><img alt="IVOA" src="http://www.ivoa.net/icons/ivoa_logo_small.jpg"/></a></td></tr></table>
10    <tr>  <h1>Universal Worker Service<br clear="none"/>
     <td><a href="http://www.ivoa.net/"><img alt="IVOA" src="http://www.ivoa.net/icons/ivoa_logo_small.jpg" /></a></td>  
   </tr>  
 </table>  
 <h1>Universal Worker Service<br/>  
11    Version @VERSION@</h1>    Version @VERSION@</h1>
12  <h2 >IVOA  <h2>IVOA
13    Internal Working Draft @RELEASEDATE@</h2>    Internal Working Draft @RELEASEDATE@</h2>
14  <dl>  <dl><dt>Working Group</dt><dd><a href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices" shape="rect">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></dd><dt><b>This version:</b></dt><dd> 0.4</dd><dt><b>Latest version:</b></dt><dd> not issued outside
15    <dt>Working Group</dt>      GWS-WG</dd><dt><b>Previous version(s):</b></dt><dd> Internal Working Draft
   <dd><a href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></dd>  
   <dt><b>This version:</b></dt>  
   <dd> 0.4</dd>  
   <dt><b>Latest version:</b></dt>  
   <dd> not issued outside  
     GWS-WG</dd>  
   <dt><b>Previous version(s):</b></dt>  
   <dd> Internal Working Draft  
16      v0.1, 2005-01-24      v0.1, 2005-01-24
17    Internal Working Draft    Internal Working Draft
18    v0.2, 2006-05-11 Internal    v0.2, 2006-05-11 Internal
19      Working Draft v.0.3, 2007-04-26  Internal      Working Draft v.0.3, 2007-04-26  Internal
20      Working Draft v.04  2008-05-10</dd>      Working Draft v.04  2008-05-10</dd><dt><b>Author(s):</b></dt><dd>  Paul
21      <dt><b>Author(s):</b></dt>      Harrison, Guy Rixon</dd></dl>
   <dd>  Paul  
     Harrison, Guy Rixon</dd>  
 </dl>  
22    
23  <h2>Abstract</h2>  <h2>Abstract</h2>
24  <p >The Universal Worker Service pattern  <p>The Universal Worker Service pattern
25    (UWS) defines how to manage asynchronous execution of jobs on a    (UWS) defines how to manage asynchronous execution of jobs on a
26    service. Any application of the pattern defines a family of related    service. Any application of the pattern defines a family of related
27    services with a common service contract. Four possible applications    services with a common service contract. Four possible applications
28    are described.</p>    are described.</p>
29  <h2> Status of This Document</h2>  <h2> Status of This Document</h2>
30  <p >This is an  working draft of  <p>This is an  working draft of
31    the GWS-WG. The first release of this document was on 2005-01-24    the GWS-WG. The first release of this document was on 2005-01-24
32    within the working group; This version is the first public WD.</p>    within the working group; This version is the first public WD.</p>
33  <p  ><em >This  <p><em>This
34    is an IVOA Working Draft for review by IVOA members and other    is an IVOA Working Draft for review by IVOA members and other
35    interested parties. It is a draft document and may be updated,    interested parties. It is a draft document and may be updated,
36    replaced, or made obsolete by other documents at any time. It is    replaced, or made obsolete by other documents at any time. It is
37    inappropriate to use IVOA Working Drafts as reference materials or to    inappropriate to use IVOA Working Drafts as reference materials or to
38    cite them as other than &ldquo;work in progress&rdquo;.</em></p>    cite them as other than &#8220;work in progress&#8221;.</em></p>
39  <p> <em >A list of </em><span style="background: transparent"><a  href="http://www.ivoa.net/Documents/"><i>current  <p> <em>A list of </em><span style="background: transparent"><a href="http://www.ivoa.net/Documents/" shape="rect"><i>current
40    IVOA Recommendations and other technical documents</i></a></span><em > can be found at http://www.ivoa.net/Documents/.</em></p>    IVOA Recommendations and other technical documents</i></a></span><em> can be found at http://www.ivoa.net/Documents/.</em></p>
41  <h2 class="prologue-heading-western"  >Acknowledgements</h2>  <h2 class="prologue-heading-western">Acknowledgements</h2>
42  <p >The need for the UWS pattern was  <p>The need for the UWS pattern was
43    inspired by AstroGrid&rsquo;s Common Execution Architecture and    inspired by AstroGrid&#8217;s Common Execution Architecture and
44    particularly by discussions with Noel Winstanley. The ideas about    particularly by discussions with Noel Winstanley. The ideas about
45    statefulness are distilled from debates in the Global Grid Forum in    statefulness are distilled from debates in the Global Grid Forum in
46    respect of the Open Grid Services Infrastructure that was the    respect of the Open Grid Services Infrastructure that was the
47    fore-runner of Web Services Resource Framework. The REST binding came    fore-runner of Web Services Resource Framework. The REST binding came
48    initially from suggestions by Norman Gray. The pattern was further    initially from suggestions by Norman Gray. The pattern was further
49    refined following Pat Dowler's feedback from the implementation of a TAP prototype.</p>    refined following Pat Dowler's feedback from the implementation of a TAP prototype.</p>
50  <p class="prologue-heading-western"  >ISSUES TO BE  <p class="prologue-heading-western">ISSUES TO BE
51    RESOLVED</p>    RESOLVED</p>
52  <ol>  <ol><li>
53    <li>      <p>Possible blocking behaviour on
54      <p >Possible blocking behaviour on        getResults &#8211; or what behaviour for for allowing results to appear
       getResults &ndash; or what behaviour for for allowing results to appear  
55        before the app is finished to allow streaming.</p>        before the app is finished to allow streaming.</p>
56    </li>    </li><li>
57    <li>      <p>Perhaps remove the SOAP binding
58      <p >Perhaps remove the SOAP binding        section &#8211;  although the most basic of the WS-* standards, it not
       section &ndash;  although the most basic of the WS-* standards, it not  
59        clear how well supported WS-Addressing is in tools, and how best to        clear how well supported WS-Addressing is in tools, and how best to
60        use it for UWS to really achieve interoperability (see <a  href="http://wiki.apache.org/ws/StackComparison">http://wiki.apache.org/ws/StackComparison</a> for a SOAP stack comparison). Possibly re-introduce SOAP binding in        use it for UWS to really achieve interoperability (see <a href="http://wiki.apache.org/ws/StackComparison" shape="rect">http://wiki.apache.org/ws/StackComparison</a> for a SOAP stack comparison). Possibly re-introduce SOAP binding in
61        a later version (2.x?) of the UWS standard, when there is more        a later version (2.x?) of the UWS standard, when there is more
62        experience.</p>        experience.</p>
63    </li>    </li></ol>
 </ol>  
64  </div>  </div>
65  <h2  >Contents</h2>  <h2>Contents</h2>
66  <div id="TOC">  <div id="TOC">
67  <?toc ?>  <div xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" id="toc" class="toc"><ul><li><a href="#Introduction"><span class="secnum">1. </span>Introduction</a><ul><li><a href="#SynchronousStateless"><span class="secnum">1.1. </span> Synchronous, stateless services</a></li><li><a href="#IVOOutGrow"><span class="secnum">1.2. </span> Some IVO activities that outgrow synchronous, stateless services</a></li><li><a href="#AsynchronousServices"><span class="secnum">1.3. </span> Asynchronous and stateful services</a></li><li><a href="#JDL"><span class="secnum">1.4. </span> Job description language, service contracts and universality</a></li></ul></li><li><a href="#UWSpattern"><span class="secnum">2. </span> Universal Worker Service pattern</a><ul><li><a href="#UWSObjects"><span class="secnum">2.1. </span> Objects within a UWS</a><ul><li><a href="#Joblist"><span class="secnum">2.1.1. </span>
68            Job list </a></li><li><a href="#Job"><span class="secnum">2.1.2. </span>Job</a></li><li><a href="#ExecutionPhase"><span class="secnum">2.1.3. </span> Execution Phase</a></li><li><a href="#ExecutionDuration"><span class="secnum">2.1.4. </span> Execution Duration</a></li><li><a href="#DestructionTime"><span class="secnum">2.1.5. </span> Destruction Time</a></li><li><a href="#Quote"><span class="secnum">2.1.6. </span>Quote</a></li><li><a href="#Error"><span class="secnum">2.1.7. </span>Error</a></li><li><a href="#ResultsList"><span class="secnum">2.1.8. </span>Results List</a></li></ul></li><li><a href="#Bindings"><span class="secnum">2.2. </span>Bindings</a><ul><li><a href="#d1e603"><span class="secnum">2.2.1. </span>Representations of resources</a></li><li><a href="#d1e634"><span class="secnum">2.2.2. </span>State changing requests</a></li><li><a href="#d1e708"><span class="secnum">2.2.3. </span>Message pattern</a></li></ul></li><li><a href="#SOAPbinding"><span class="secnum">2.3. </span> SOAP binding</a></li></ul></li><li><a href="#SecurityConsiderations"><span class="secnum">3. </span>Security Considerations</a></li><li><a href="#ApplicationsOfUWS"><span class="secnum">4. </span> Applications of UWS (informative)</a><ul><li><a href="#Imageservice"><span class="secnum">4.1. </span> Image service with data staging</a></li><li><a href="#ADQLservice"><span class="secnum">4.2. </span> ADQL service with cursor</a></li><li><a href="#ParameterizedApplications"><span class="secnum">4.3. </span> Parameterized applications</a></li></ul></li><li><a href="#SynchronousService"><span class="secnum">5. </span> Implementing a Synchronous Service on top of UWS (informative)</a></li><li><a href="#Updates"><span class="secnum">A. </span> Updates from previous versions</a><ul><li><a href="#d1e1112"><span class="secnum">A.1. </span>At Version 0.5</a></li></ul></li><li><a href="#References"><span class="secnum">B. </span>References</a></li><li><a href="#UWSSchema"><span class="secnum">C. </span> Appendix A Schema</a></li><li><a href="#UWSWSDL"><span class="secnum">D. </span> Appendix B WSDL 1.0 for SOAP binding</a></li></ul></div>
69  </div>  </div>
70  <div class="body">  <div class="body">
71  <div class="section">  <div class="section"><h2><a name="Introduction"/><span class="secnum">1. </span>Introduction</h2>
72  <h1><a name="Introduction" id="Introduction"></a>Introduction</h1>    <p>The Universal Worker Service (UWS)
   <p >The Universal Worker Service (UWS)  
73      pattern defines how to build <i>asynchronous</i>, <i>stateful</i>, <i>job-oriented</i> services<i> </i>(the italicized terms are defined      pattern defines how to build <i>asynchronous</i>, <i>stateful</i>, <i>job-oriented</i> services<i> </i>(the italicized terms are defined
74      in sub-sections of this introduction). It does so in a way that      in sub-sections of this introduction). It does so in a way that
75      allows for wide-scale reuse of software and support from software      allows for wide-scale reuse of software and support from software
76      toolkits.</p>      toolkits.</p>
77    <p >Section 2 of this document describes    <p>Section 2 of this document describes
78      the pattern and lists the aspects that are common to all its      the pattern and lists the aspects that are common to all its
79      applications. Any such application would involve a service contract      applications. Any such application would involve a service contract
80      that embodies the pattern and fixes the issues left undefined in the      that embodies the pattern and fixes the issues left undefined in the
# Line 113  Line 82 
82      WSDL) for the application. It is intended that each such contract      WSDL) for the application. It is intended that each such contract
83      cover a family of related applications, such that the implementations      cover a family of related applications, such that the implementations
84      may be widely reused.</p>      may be widely reused.</p>
85    <p >Section 3 outlines several possible    <p>Section 3 outlines several possible
86      applications of the pattern. These use-cases may be expanded into      applications of the pattern. These use-cases may be expanded into
87      full IVOA standards that are siblings of the current document.</p>      full IVOA standards that are siblings of the current document.</p>
88    <p >Section 4 describes the preferred    <p>Section 4 describes the preferred
89      method of creating a synchronous facade to a UWS system.</p>      method of creating a synchronous facade to a UWS system.</p>
90    <div class="section">    <div class="section"><h3><a name="SynchronousStateless"/><span class="secnum">1.1. </span> Synchronous, stateless services</h3>
91      <h2 ><a name="SynchronousStateless" id="SynchronousStateless"></a> Synchronous, stateless services</h2>      <p>Simple web services are <i>synchronous</i> and <i>stateless</i>. Synchronous means that the client waits for
     <p >Simple web services are <i>synchronous</i> and <i>stateless</i>. Synchronous means that the client waits for  
92        each request to be fulfilled; if the client disconnects from the        each request to be fulfilled; if the client disconnects from the
93        service then the activity is abandoned. <i>Stateless</i> means that        service then the activity is abandoned. <i>Stateless</i> means that
94        the service does not remember results of a previous activity (or, at        the service does not remember results of a previous activity (or, at
95        least, the client cannot ask the service about them).</p>        least, the client cannot ask the service about them).</p>
96      <p >Synchronous, stateless services work      <p>Synchronous, stateless services work
97        well when two criteria apply.</p>        well when two criteria apply.</p>
98      <ol>      <ol><li>
99        <li>          <p>The length of each activity is
100          <p >The length of each activity is            less than the &#8220;attention span&#8221; of the connection.</p>
101            less than the &ldquo;attention span&rdquo; of the connection.</p>        </li><li>
102        </li>          <p>The results of each activity are
       <li>  
         <p >The results of each activity are  
103            compact enough to be easily passed back to the client via the            compact enough to be easily passed back to the client via the
104            connection on which the request was made (and possibly pushed back            connection on which the request was made (and possibly pushed back
105            to the service as parameters of the next activity).</p>            to the service as parameters of the next activity).</p>
106        </li>        </li></ol>
107        </ol>      <p>There are various limits to the
     <p >There are various limits to the  
108        attention span.</p>        attention span.</p>
109      <ul>      <ul><li>
110        <li>          <p>HTTP assumes that the start of a
         <p >HTTP assumes that the start of a  
111            reply quickly follows its request, even if the body of the reply            reply quickly follows its request, even if the body of the reply
112            takes a long time to stream. If the service takes too long to            takes a long time to stream. If the service takes too long to
113            compute the results and to start the reply, then HTTP times out at            compute the results and to start the reply, then HTTP times out at
114            the request is lost.</p>            the request is lost.</p>
115        </li>        </li><li>
116        <li>          <p>A client runs computer which
         <p >A client runs computer which  
117            will not stay on-line indefinitely.</p>            will not stay on-line indefinitely.</p>
118        </li>        </li><li>
119        <li>          <p>A network with finite
         <p >A network with finite  
120            reliability will eventually break communications during an activity.</p>            reliability will eventually break communications during an activity.</p>
121        </li>        </li><li>
122        <li>          <p>A service is sometimes shut down
         <p >A service is sometimes shut down  
123            for maintenance.</p>            for maintenance.</p>
124        </li>        </li></ul>
125        </ul>      <p>Synchronous, stateless services, in
     <p >Synchronous, stateless services, in  
126        short, do not scale well.</p>        short, do not scale well.</p>
127    </div>    </div>
128    <div class="section">    <div class="section"><h3><a name="IVOOutGrow"/><span class="secnum">1.2. </span> Some IVO activities that outgrow synchronous, stateless services</h3>
129      <h2><a name="IVOOutGrow" id="IVOOutGrow"></a> Some IVO activities that outgrow synchronous, stateless services</h2>      <p>These cases are examples. They are
     <p >These cases are examples. They are  
130        not a complete list!</p>        not a complete list!</p>
131      <ol>      <ol><li>
132        <li>          <p>An ADQL [1] service gives access
         <p >An ADQL [1] service gives access  
133            to a large object-catalogue. Most queries run in less than a minute,            to a large object-catalogue. Most queries run in less than a minute,
134            but some legitimate queries involve a full-table traverse and take            but some legitimate queries involve a full-table traverse and take
135            hours or days. The service needs to run these special cases in a            hours or days. The service needs to run these special cases in a
136            low-priority queue.</p>            low-priority queue.</p>
137        </li>        </li><li>
138        <li>          <p>An object-finding service runs
         <p >An object-finding service runs  
139            the SExtractor application on a list of images. Normally, the list            the SExtractor application on a list of images. Normally, the list
140            is short and the request is quickly satisfied. Occasionally, a list            is short and the request is quickly satisfied. Occasionally, a list
141            of 10,000 images is sent in the expectation that the work will be            of 10,000 images is sent in the expectation that the work will be
142            finished over the weekend.</p>            finished over the weekend.</p>
143        </li>        </li><li>
144        <li>          <p>A cone-search [2] request on a
         <p >A cone-search [2] request on a  
145            rich catalogue raises 10,000,000 rows of results, but the client is            rich catalogue raises 10,000,000 rows of results, but the client is
146            connected via a slow link and cannot read all the results in a            connected via a slow link and cannot read all the results in a
147            reasonable time. The client needs the service to send the results            reasonable time. The client needs the service to send the results
148            into storage over a faster link. This could mean sending them to            into storage over a faster link. This could mean sending them to
149            VOSpace, or simply holding them temporarily until the user can            VOSpace, or simply holding them temporarily until the user can
150            retrieve them on a fast link.</p>            retrieve them on a fast link.</p>
151        </li>        </li><li>
152        <li>          <p>An ADQL service allows users to
         <p >An ADQL service allows users to  
153            save query results into new tables such that they can be the target            save query results into new tables such that they can be the target
154            of later queries. However, space is limited and the results tables            of later queries. However, space is limited and the results tables
155            can only be kept for a short time. The client and service negotiate            can only be kept for a short time. The client and service negotiate
156            the lifetime of the results tables.</p>            the lifetime of the results tables.</p>
157        </li>        </li><li>
158        <li>          <p>A service performs image
         <p >A service performs image  
159            stacking on a list of fields. Each field can be processed by a            stacking on a list of fields. Each field can be processed by a
160            synchronous service but the list is long and the user wants to            synchronous service but the list is long and the user wants to
161            retrieve the results of the early fields before the last fields are            retrieve the results of the early fields before the last fields are
162            processed.</p>            processed.</p>
163        </li>        </li></ol>
       </ol>  
164    </div>    </div>
165    <div class="section">    <div class="section"><h3><a name="AsynchronousServices"/><span class="secnum">1.3. </span> Asynchronous and stateful services</h3>
166      <h2 ><a name="AsynchronousServices" id="AsynchronousServices"></a> Asynchronous and stateful services</h2>      <p>Services can be made to scale better
     <p >Services can be made to scale better  
167        by making them <i>asynchronous</i> and <i>stateful</i>. Asynchronous        by making them <i>asynchronous</i> and <i>stateful</i>. Asynchronous
168        means that a client makes two or more separate requests to the        means that a client makes two or more separate requests to the
169        service in the course of one activity, and that the client and        service in the course of one activity, and that the client and
# Line 219  Line 171 
171        those requests. Stateful means that the service stores state        those requests. Stateful means that the service stores state
172        information about the activity and the client addresses requests to        information about the activity and the client addresses requests to
173        this state.</p>        this state.</p>
174      <p >Web services that are asynchronous      <p>Web services that are asynchronous
175        are almost always stateful. Most of special extra arrangements for        are almost always stateful. Most of special extra arrangements for
176        asynchronous activities are actually managing the state of the        asynchronous activities are actually managing the state of the
177        activity.</p>        activity.</p>
178      <p >There is an important class of      <p>There is an important class of
179        stateful services where the state is peculiar to one job or session        stateful services where the state is peculiar to one job or session
180        and the job is &ldquo;owned&rdquo; by one user. These, for the purpose of        and the job is &#8220;owned&#8221; by one user. These, for the purpose of
181        this document, are called <i>job-oriented</i> services. There are        this document, are called <i>job-oriented</i> services. There are
182        stateful services that are not job-oriented (e.g. a service managing        stateful services that are not job-oriented (e.g. a service managing
183        a shared, client-writeable DB table), but UWS does not apply to        a shared, client-writeable DB table), but UWS does not apply to
184        these.</p>        these.</p>
185      <p >For the purpose of this discussion,      <p>For the purpose of this discussion,
186        let the term <i>job</i> refer to the work specified by the JDL        let the term <i>job</i> refer to the work specified by the JDL
187        instructions and the term <i>resource</i> refer to the state of the        instructions and the term <i>resource</i> refer to the state of the
188        job as recorded by the service. Both have a finite duration. The <i>lifetime</i> of the resource &ndash; i.e. the time from inception        job as recorded by the service. Both have a finite duration. The <i>lifetime</i> of the resource &#8211; i.e. the time from inception
189        until the service forgets the state &ndash; is generally finite and must        until the service forgets the state &#8211; is generally finite and must
190        be at least as long the duration of the job.</p>        be at least as long the duration of the job.</p>
191    </div>    </div>
192    <div class="section">    <div class="section"><h3><a name="JDL"/><span class="secnum">1.4. </span> Job description language, service contracts and universality</h3>
193      <h2 ><a name="JDL" id="JDL"></a> Job description language, service contracts and universality</h2>      <p>Consider the web-service operation
     <p >Consider the web-service operation  
194        that starts off a job. This operation must express what is to be done        that starts off a job. This operation must express what is to be done
195        in the activity: it must carry parameters in some form.</p>        in the activity: it must carry parameters in some form.</p>
196      <p >The parameters may be expressed as a      <p>The parameters may be expressed as a
197        list. E.g., a cone search service takes a list of three parameters:        list. E.g., a cone search service takes a list of three parameters:
198        RA, DEC, RADIUS. Alternatively, the parameters may be arranged as an        RA, DEC, RADIUS. Alternatively, the parameters may be arranged as an
199        XML document (e.g. ADQL, CEA). The rules for setting and arranging        XML document (e.g. ADQL, CEA). The rules for setting and arranging
200        the parameters for a job are called the<i> Job-Description Language </i>(JDL).</p>        the parameters for a job are called the<i> Job-Description Language </i>(JDL).</p>
201      <p >The combination of the UWS pattern, a      <p>The combination of the UWS pattern, a
202        JDL and details of the job state visible to the client defines a        JDL and details of the job state visible to the client defines a
203        service contract; for a SOAP service, this contract can be captured        service contract; for a SOAP service, this contract can be captured
204        in WSDL. Changing the JDL changes the contract. Thus, it is not        in WSDL. Changing the JDL changes the contract. Thus, it is not
205        meaningful to &ldquo;implement UWS&rdquo; in isolation; any implementation        meaningful to &#8220;implement UWS&#8221; in isolation; any implementation
206        standard must specify the rest of the contract.</p>        standard must specify the rest of the contract.</p>
207      <p >If the JDL is very general, a single      <p>If the JDL is very general, a single
208        service-contract can be reused for many kinds of service. AstroGrid&rsquo;s        service-contract can be reused for many kinds of service. AstroGrid&#8217;s
209        CEA exploits this: one JDL covers all services offering parameterized        CEA exploits this: one JDL covers all services offering parameterized
210        applications and even ADQL services. In the limit, a        applications and even ADQL services. In the limit, a
211        sufficiently-general JDL turns a specialized worker service into a        sufficiently-general JDL turns a specialized worker service into a
212        universal worker service.</p>        universal worker service.</p>
213    </div>    </div>
214  </div>  </div>
215    <div class="section">    <div class="section"><h2><a name="UWSpattern"/><span class="secnum">2. </span> Universal Worker Service pattern</h2>
216      <h1><a name="UWSpattern" id="UWSpattern"></a> Universal Worker Service pattern</h1>      <div class="section"><h3><a name="UWSObjects"/><span class="secnum">2.1. </span> Objects within a UWS</h3>
217      <div class="section">        <p>A UWS consists logically in a set of
       <h2 ><a name="UWSObjects" id="UWSObjects"></a> Objects within a UWS</h2>  
       <p >A UWS consists logically in a set of  
218          objects that may be read and written to in order to control jobs.</p>          objects that may be read and written to in order to control jobs.</p>
219        <p >In a SOAP binding of UWS, these        <p>In a SOAP binding of UWS, these
220          components are exposed as properties of the object that lives at the          components are exposed as properties of the object that lives at the
221          endpoint registered for the service. In a REST binding, the          endpoint registered for the service. In a REST binding, the
222          components are distinct web-resources each with its own URI.</p>          components are distinct web-resources each with its own URI.</p>
223        <p> The following sub-sections explain the semantics of the objects. The        <p> The following sub-sections explain the semantics of the objects. The
224          UML diagram shows the relationships more succinctly.</p>          UML diagram shows the relationships more succinctly.</p>
225        <p><img src="Class_Diagram__UWS__UWSObjects.png" alt="UWS Objects Class Diagram" name="graphics2" width="418" height="369" border="0" align="top" id="graphics2" /></p>        <p><img src="Class_Diagram__UWS__UWSObjects.png" alt="UWS Objects Class Diagram" name="graphics2" width="418" height="369" border="0" align="top" id="graphics2"/></p>
226        <div class="section">        <div class="section"><h4><a name="Joblist"/><span class="secnum">2.1.1. </span>
227          <h3 ><a name="Joblist" id="Joblist"></a>          Job list </h4>
228          Job list </h3>          <p>The Job List is the outermost object:
         <p >The Job List is the outermost object:  
229            it contains all the other objects in the UWS. The immediate children            it contains all the other objects in the UWS. The immediate children
230            of the job list are Job objects (see next sub-section).</p>            of the job list are Job objects (see next sub-section).</p>
231          <p >The job list may be read to find the          <p>The job list may be read to find the
232            extant jobs.</p>            extant jobs.</p>
233          <p >The job list may be updated to add a          <p>The job list may be updated to add a
234            new job.</p>            new job.</p>
235          <p >The job list itself does not allow          <p>The job list itself does not allow
236            jobs to be deleted. Instead, when a job is destroyed by an action on            jobs to be deleted. Instead, when a job is destroyed by an action on
237            its job object, then the list updates itself accordingly.</p>            its job object, then the list updates itself accordingly.</p>
238        </div>        </div>
239        <div class="section">        <div class="section"><h4><a name="Job"/><span class="secnum">2.1.2. </span>Job</h4>
240          <h3 ><a name="Job" id="Job"></a>Job</h3>          <p>A Job object contains the state of
         <p >A Job object contains the state of  
241            one job. The state is a collection of other objects. Each Job            one job. The state is a collection of other objects. Each Job
242            aggregates</p>            aggregates</p>
243          <ul>          <ul><li>
244            <li>              <p>Exactly one Execution Phase.</p>
245              <p >Exactly one Execution Phase.</p>          </li><li>
246          </li>            <p>Exactly one Execution Duration.</p>
247          <li>          </li><li>
248            <p >Exactly one Execution Duration.</p>            <p>Exactly one Deletion Time</p>
249          </li>          </li><li>
250          <li>            <p>Exactly one Quote.</p>
251            <p >Exactly one Deletion Time</p>          </li><li>
252          </li>            <p>Exactly one Results List.</p>
253          <li>          </li><li>
254            <p >Exactly one Quote.</p>            <p>Zero or one Error.</p>
255          </li>          </li></ul>
         <li>  
           <p >Exactly one Results List.</p>  
         </li>  
         <li>  
           <p >Zero or one Error.</p>  
         </li>  
           </ul>  
256        </div>        </div>
257        <div class="section">        <div class="section"><h4><a name="ExecutionPhase"/><span class="secnum">2.1.3. </span> Execution Phase</h4>
258          <h3><a name="ExecutionPhase" id="ExecutionPhase"></a> Execution Phase</h3>          <p>The job is treated as a state machine
         <p >The job is treated as a state machine  
259            with the Execution Phase naming the state. The phases are</p>            with the Execution Phase naming the state. The phases are</p>
260          <ul>          <ul><li>
261            <li>              <p>PENDING: the job is accepted by
             <p >PENDING: the job is accepted by  
262                the service but not yet committed for execution by the client. In                the service but not yet committed for execution by the client. In
263                this state, the job quote can be read and evaluated. This is the                this state, the job quote can be read and evaluated. This is the
264                state into which a job enters when it is first created.</p>                state into which a job enters when it is first created.</p>
265          </li>          </li><li>
266          <li>            <p>QUEUED: the job is committed for
           <p >QUEUED: the job is committed for  
267              execution by the client but the service has not yet assigned it to a              execution by the client but the service has not yet assigned it to a
268              processor. No Results are produced in this phase.</p>              processor. No Results are produced in this phase.</p>
269          </li>          </li><li>
270          <li>            <p>EXECUTING: the job has been
           <p >EXECUTING: the job has been  
271              assigned to a processor. Results may be produced at any time during              assigned to a processor. Results may be produced at any time during
272              this phase.</p>              this phase.</p>
273          </li>          </li><li>
274          <li>            <p>COMPLETED: the execution of the
           <p >COMPLETED: the execution of the  
275              job is over. The Results may be collected.</p>              job is over. The Results may be collected.</p>
276          </li>          </li><li>
277          <li>            <p>ERROR: the job failed to
           <p >ERROR: the job failed to  
278              complete. No further work will be done nor Results produced. Results              complete. No further work will be done nor Results produced. Results
279              may be unavailable or available but invalid; either way the Results              may be unavailable or available but invalid; either way the Results
280              should not be trusted.</p>              should not be trusted.</p>
281          </li>          </li><li>
282          <li>            <p>ABORTED: the job has been
           <p >ABORTED: the job has been  
283              manually aborted by the user, or the system has aborted the job due              manually aborted by the user, or the system has aborted the job due
284              to lack of or overuse of resources.</p>              to lack of or overuse of resources.</p>
285          </li>          </li></ul>
           </ul>  
286        </div>        </div>
287        <div class="section">        <div class="section"><h4><a name="ExecutionDuration"/><span class="secnum">2.1.4. </span> Execution Duration</h4>
288          <h3 ><a name="ExecutionDuration" id="ExecutionDuration"></a> Execution Duration</h3>          <p>An Execution Duration object defines
         <p >An Execution Duration object defines  
289            the duration for which a job shall run.  This represents the            the duration for which a job shall run.  This represents the
290            &ldquo;computation time&rdquo; that a job is to be allowed, although because            &#8220;computation time&#8221; that a job is to be allowed, although because
291            a specific measure of CPU time may not be available in all            a specific measure of CPU time may not be available in all
292            environments, this duration is defined in real clock seconds. An            environments, this duration is defined in real clock seconds. An
293            execution duration of 0 implies unlimited execution duration.</p>            execution duration of 0 implies unlimited execution duration.</p>
294          <p >When the execution duration has been          <p>When the execution duration has been
295            exceeded the service will automatically abort the job, which has the            exceeded the service will automatically abort the job, which has the
296            same effect as when a manual &ldquo;Abort&rdquo; is requested.</p>            same effect as when a manual &#8220;Abort&#8221; is requested.</p>
297          <p >Specifically, when a job is aborted:</p>          <p>Specifically, when a job is aborted:</p>
298          <ul>          <ul><li>
299            <li>              <p>if the job is still executing,
             <p >if the job is still executing,  
300                the execution is aborted.</p>                the execution is aborted.</p>
301          </li>          </li><li>
302          <li>            <p>any previously generated results
           <p >any previously generated results  
303              of the job are retained.</p>              of the job are retained.</p>
304          </li>          </li></ul>
305            </ul>          <p>When a job is created, the service
         <p >When a job is created, the service  
306            sets the initial execution duration. The client may write to an            sets the initial execution duration. The client may write to an
307            Execution Duration to try to change the job's cpu time allocation.            Execution Duration to try to change the job's cpu time allocation.
308            The service may forbid changes, or may set limits on the allowed            The service may forbid changes, or may set limits on the allowed
309            execution duration.</p>            execution duration.</p>
310        </div>        </div>
311        <div class="section">        <div class="section"><h4><a name="DestructionTime"/><span class="secnum">2.1.5. </span> Destruction Time</h4>
312          <h3 ><a name="DestructionTime" id="DestructionTime"></a> Destruction Time</h3>          <p>The Destruction Time object
         <p >The Destruction Time object  
313            represents the instant when the job shall be destroyed. The            represents the instant when the job shall be destroyed. The
314            Destruction Time is an absolute time.</p>            Destruction Time is an absolute time.</p>
315          <p >Destroying a job implies;</p>          <p>Destroying a job implies;</p>
316          <ul>          <ul><li>
317            <li>              <p>if the job is still executing,
             <p >if the job is still executing,  
318                the execution is aborted.</p>                the execution is aborted.</p>
319          </li>          </li><li>
320          <li>            <p>any results from the job are
           <p >any results from the job are  
321              destroyed and storage reclaimed.</p>              destroyed and storage reclaimed.</p>
322          </li>          </li></ul>
323            </ul>          <ul><li value="1">
324          <ul>              <p>the service forgets that
           <li value="1">  
             <p >the service forgets that  
325                the job existed.</p>                the job existed.</p>
326          </li>          </li></ul>
327            </ul>          <p>The Destruction Time may be viewed as
         <p >The Destruction Time may be viewed as  
328            a measure of the amount of time that a service is prepared to            a measure of the amount of time that a service is prepared to
329            allocate storage for a job &ndash; typically this will be a longer            allocate storage for a job &#8211; typically this will be a longer
330            duration that the amount of CPU time that a service would allocate.</p>            duration that the amount of CPU time that a service would allocate.</p>
331          <p >When a job is created the service          <p>When a job is created the service
332            sets the initial Destruction Time. The client may write to the            sets the initial Destruction Time. The client may write to the
333            Destruction Time to try to change the life expectancy of the job. The            Destruction Time to try to change the life expectancy of the job. The
334            service may forbid changes, or may set limits on the allowed            service may forbid changes, or may set limits on the allowed
335            destruction time.</p>            destruction time.</p>
336        </div>        </div>
337        <div class="section">        <div class="section"><h4><a name="Quote"/><span class="secnum">2.1.6. </span>Quote</h4>
338          <h3 ><a name="Quote" id="Quote"></a>Quote</h3>          <p>A Quote object predicts when the job
         <p >A Quote object predicts when the job  
339            is likely to complete. The intention is that a client creates the            is likely to complete. The intention is that a client creates the
340            same job on several services, compares the quotes and then accepts            same job on several services, compares the quotes and then accepts
341            the best quote.</p>            the best quote.</p>
342          <p >Quoting for a computational job is          <p>Quoting for a computational job is
343            notoriously difficult. A UWS implementation must always provide a            notoriously difficult. A UWS implementation must always provide a
344            quote object, in order that the two-phase committal of jobs be            quote object, in order that the two-phase committal of jobs be
345            uniform across all UWS, but it may supply a &ldquo;don't know&rdquo; answer            uniform across all UWS, but it may supply a &#8220;don't know&#8221; answer
346            for the completion time.</p>            for the completion time.</p>
347        </div>        </div>
348        <div class="section">        <div class="section"><h4><a name="Error"/><span class="secnum">2.1.7. </span>Error</h4>
349          <h3 ><a name="Error" id="Error"></a>Error</h3>          <p>The error object gives a human
         <p >The error object gives a human  
350            readable error message (if any) for the underlying job. This object            readable error message (if any) for the underlying job. This object
351            is intended to be a detailed error message, and consequently might be            is intended to be a detailed error message, and consequently might be
352            a large piece of text such as a stack trace. When there is an error            a large piece of text such as a stack trace. When there is an error
353            running a job a summary of the error should be given using the            running a job a summary of the error should be given using the
354            optional errorSummary element of the JobSummary type.</p>            optional errorSummary element of the JobSummary type.</p>
355        </div>        </div>
356        <div class="section">        <div class="section"><h4><a name="ResultsList"/><span class="secnum">2.1.8. </span>Results List</h4>
357          <h3 ><a name="ResultsList" id="ResultsList"></a>Results List</h3>          <p>The Results List object is a
         <p >The Results List object is a  
358            container for formal results of the job. Its children may be any            container for formal results of the job. Its children may be any
359            objects resulting from the computation that may be fetched from the            objects resulting from the computation that may be fetched from the
360            service when the job has completed.</p>            service when the job has completed.</p>
361          <p >Reading the Results List itself          <p>Reading the Results List itself
362            enumerates the available or expected result objects.</p>            enumerates the available or expected result objects.</p>
363          <p >The children of the Results List may          <p>The children of the Results List may
364            be read but not updated or deleted. The client may not add anything            be read but not updated or deleted. The client may not add anything
365            to the Results List.</p>            to the Results List.</p>
366        </div>        </div>
367      </div>      </div>
368      <div class="section">      <div class="section"><h3><a name="Bindings"/><span class="secnum">2.2. </span>Bindings</h3>
369        <h2 ><a name="Bindings" id="Bindings"></a>Bindings</h2>        <h3><a name="RESTbinding" id="RESTbinding" shape="rect"/> REST binding</h3>
370        <h3 ><a name="RESTbinding" id="RESTbinding"></a> REST binding</h3>        <h4>Resources and URIs</h4>
371        <h4 >Resources and URIs</h4>        <p>In a REST (Representational State
       <p >In a REST (Representational State  
372          Transfer) binding of UWS, each of the objects defined above is          Transfer) binding of UWS, each of the objects defined above is
373          available as a web resource with its own URI. These URIs must form a          available as a web resource with its own URI. These URIs must form a
374          hierarchy as follows:</p>          hierarchy as follows:</p>
375        <p >/{jobs}                               the Job List</p>        <p>/{jobs}                                the Job List</p>
376        <p >/{jobs}/(job-id)              a Job</p>        <p>/{jobs}/(job-id)               a Job</p>
377        <p >/{jobs}/(job-id)/phase        the Phase of        <p>/{jobs}/(job-id)/phase the Phase of
378          (job-id)</p>          (job-id)</p>
379        <p >/{jobs}/(job-id)/executionduration    the        <p>/{jobs}/(job-id)/executionduration     the
380          maximum execution duration of (job-id)</p>          maximum execution duration of (job-id)</p>
381        <p >/{jobs}/(job-id)/destruction  the        <p>/{jobs}/(job-id)/destruction  the
382          destruction instant for (job-id)</p>          destruction instant for (job-id)</p>
383        <p >/{jobs}/(job-id)/error                any error        <p>/{jobs}/(job-id)/error         any error
384          message associated with (job-id)</p>          message associated with (job-id)</p>
385        <p >/{jobs}/(job-id)/quote                the Quote for        <p>/{jobs}/(job-id)/quote         the Quote for
386          (job-id)</p>          (job-id)</p>
387        <p >/{jobs}/(job-id)/results      the Results        <p>/{jobs}/(job-id)/results       the Results
388          List for (job-id)</p>          List for (job-id)</p>
389        <p >The service implementor is free to        <p>The service implementor is free to
390          choose the names given in parentheses above; the other names are part          choose the names given in parentheses above; the other names are part
391          of the UWS standard.</p>          of the UWS standard.</p>
392        <p >The URI for the Job List, in its        <p>The URI for the Job List, in its
393          absolute form is the root URI for the whole UWS. This URI should be          absolute form is the root URI for the whole UWS. This URI should be
394          given as the access URL in the UWS' registration.</p>          given as the access URL in the UWS' registration.</p>
395        <div class="section">        <div class="section"><h4><a name="d1e603"/><span class="secnum">2.2.1. </span>Representations of resources</h4>
396          <h4 >Representations of resources</h4>          <p>For each of the resources, HTTP GET
         <p >For each of the resources, HTTP GET  
397            fetches a representation.</p>            fetches a representation.</p>
398          <p >The representation of the Job List is          <p>The representation of the Job List is
399            a list of links to extant jobs. The list may be empty if the UWS is            a list of links to extant jobs. The list may be empty if the UWS is
400            idle.</p>            idle.</p>
401          <p >The representation of a Job is a list          <p>The representation of a Job is a list
402            of links to its Phase, Execution Duration,  Destruction Time, Error,            of links to its Phase, Execution Duration,  Destruction Time, Error,
403            Quote and Results List.</p>            Quote and Results List.</p>
404          <p >The representation of a Results List          <p>The representation of a Results List
405            is a list of links to the resources representing the results. These            is a list of links to the resources representing the results. These
406            resources may have any URI and any MIME type. A sensible default for            resources may have any URI and any MIME type. A sensible default for
407            their URIs is to make them children of /{jobs}/(job-id)/results, but            their URIs is to make them children of /{jobs}/(job-id)/results, but
# Line 496  Line 413 
413            names then appear in the Results List in addition to the URIs. Not            names then appear in the Results List in addition to the URIs. Not
414            all results need to be named; sometimes the meaning of the result is            all results need to be named; sometimes the meaning of the result is
415            obvious from the context and the name is omitted.</p>            obvious from the context and the name is omitted.</p>
416          <p >HTTP allows multiple representations          <p>HTTP allows multiple representations
417            of a resource distinguished by their MIME types and selected by the            of a resource distinguished by their MIME types and selected by the
418            HTTP headers of a GET request. UWS exploits this to support both web            HTTP headers of a GET request. UWS exploits this to support both web
419            browsers and rich clients in the same tree of resources.</p>            browsers and rich clients in the same tree of resources.</p>
420          <p >A UWS should return HTML or XHTML to          <p>A UWS should return HTML or XHTML to
421            clients that accept these types. These clients are assumed to be web            clients that accept these types. These clients are assumed to be web
422            browsers and the UWS is generating its own user interface. The HTML            browsers and the UWS is generating its own user interface. The HTML
423            interface generated should allow full control of the UWS via the use            interface generated should allow full control of the UWS via the use
424            of HTML forms and appropriate links.</p>            of HTML forms and appropriate links.</p>
425          <p >Clients which are assumed to be part          <p>Clients which are assumed to be part
426            of remote applications that drive UWS without showing the details to            of remote applications that drive UWS without showing the details to
427            their users should accept only application/xml. A UWS must therefore            their users should accept only application/xml. A UWS must therefore
428            return XML representations of the resources.</p>            return XML representations of the resources.</p>
429          <p >The XML schemata for the lists of          <p>The XML schemata for the lists of
430            links, and for the Phase, Execution Duration and Quote documents, are            links, and for the Phase, Execution Duration and Quote documents, are
431            detailed in Appendix A of this specification. They  should not vary            detailed in Appendix A of this specification. They  should not vary
432            between UWS installations.</p>            between UWS installations.</p>
433        </div>        </div>
434        <div class="section">        <div class="section"><h4><a name="d1e634"/><span class="secnum">2.2.2. </span>State changing requests</h4>
435          <h4 >State changing requests</h4>          <p>Certain of the UWS' resources accept
436          <p >Certain of the UWS' resources accept            HTTP POST and DELETE messages to change the state of the service &#8211;
           HTTP POST and DELETE messages to change the state of the service &ndash;  
437            This is the fundamental way that a client controls the execution of a            This is the fundamental way that a client controls the execution of a
438            job. In most of the cases where a job subobject is set the response            job. In most of the cases where a job subobject is set the response
439            will have a http 303 &ldquo;See other&rdquo; status and a Location header            will have a http 303 &#8220;See other&#8221; status and a Location header
440            that points back to the main job summary obtained at the <span style="font-weight: medium">/{jobs}/(job-id)            that points back to the main job summary obtained at the <span style="font-weight: medium">/{jobs}/(job-id)
441              URI. The job summary contains the values of the main parameters              URI. The job summary contains the values of the main parameters
442              within the returned XML (or XHTML). This mode of operation was chosen              within the returned XML (or XHTML). This mode of operation was chosen
443              (as opposed to returning only the sub-object being altered) as it              (as opposed to returning only the sub-object being altered) as it
444              makes for a more natural user interface &ndash; especially in the case of              makes for a more natural user interface &#8211; especially in the case of
445              the XHMTL interface. A client that wants to obtain only the value of              the XHMTL interface. A client that wants to obtain only the value of
446              a particular sub-object can at any time request that sub-object with              a particular sub-object can at any time request that sub-object with
447            a HTTP GET.</span></p>            a HTTP GET.</span></p>
448          <h5 >Creating a Job</h5>          <h5>Creating a Job</h5>
449          <p >POSTing a request to the Job List          <p>POSTing a request to the Job List
450            creates a new job (unless the service rejects the request). The            creates a new job (unless the service rejects the request). The
451            response when a job is accepted must have code 303 &ldquo;See other&rdquo;            response when a job is accepted must have code 303 &#8220;See other&#8221;
452            and the Location header of the response must point to the created            and the Location header of the response must point to the created
453            job.</p>            job.</p>
454          <p >This initial POST will in most cases          <p>This initial POST will in most cases
455            carry parameters for the protocol that is using the UWS pattern, as            carry parameters for the protocol that is using the UWS pattern, as
456            detailed in section 3.</p>            detailed in section 3.</p>
457          <h5 >Deleting a Job</h5>          <h5>Deleting a Job</h5>
458          <p >Sending a HTTP DELETE to a Job          <p>Sending a HTTP DELETE to a Job
459            resource destroys that job, with the meaning noted in the definition            resource destroys that job, with the meaning noted in the definition
460            of the Job object, above. No other resource of the UWS may be            of the Job object, above. No other resource of the UWS may be
461            directly deleted by the client. The response to this request must            directly deleted by the client. The response to this request must
462            have code 303 &ldquo;See other&rdquo; and the Location header of the response            have code 303 &#8220;See other&#8221; and the Location header of the response
463            must point to the Job List at the /{jobs} URI.</p>            must point to the Job List at the /{jobs} URI.</p>
464          <p >Posting a request  with a parameter          <p>Posting a request  with a parameter
465            ACTION=DELETE to the Job also destroys the job, the response being as            ACTION=DELETE to the Job also destroys the job, the response being as
466            for a deletion. This action supports web browsers which typically            for a deletion. This action supports web browsers which typically
467            cannot send DELETE requests.</p>            cannot send DELETE requests.</p>
468          <h5 >Changing the Destruction          <h5>Changing the Destruction
469            Time</h5>            Time</h5>
470          <p >The Destruction Time may be changed          <p>The Destruction Time may be changed
471            by POSTing to  /{jobs}/(job-id)/destruction.  In this case, the body            by POSTing to  /{jobs}/(job-id)/destruction.  In this case, the body
472            of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and            of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and
473              contains the parameter named DESTRUCTION whose value is the new              contains the parameter named DESTRUCTION whose value is the new
474              destruction time in ISO8601 format; i.e. this request is what an HTML              destruction time in ISO8601 format; i.e. this request is what an HTML
475            form sends.</span></p>            form sends.</span></p>
476          <p  style="font-weight: medium">The          <p style="font-weight: medium">The
477            response to this request must have code 303 &ldquo;See other&rdquo; and the            response to this request must have code 303 &#8220;See other&#8221; and the
478            Location header of the response must point to the /{jobs}/(job-id)            Location header of the response must point to the /{jobs}/(job-id)
479            URI so that the client receives the value that the service has            URI so that the client receives the value that the service has
480            actually set the Destruction Time to within the Job summary response.</p>            actually set the Destruction Time to within the Job summary response.</p>
481          <h5 >Changing the Execution          <h5>Changing the Execution
482            Duration</h5>            Duration</h5>
483          <p >The Execution Duration may be changed          <p>The Execution Duration may be changed
484            by POSTing to  /{jobs}/(job-id)/termination.  In this case, the body            by POSTing to  /{jobs}/(job-id)/termination.  In this case, the body
485            of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and            of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and
486              contains the parameter named TERMINATION whose value is the new              contains the parameter named TERMINATION whose value is the new
487            executionduration in seconds.</span></p>            executionduration in seconds.</span></p>
488          <p  style="font-weight: medium">The          <p style="font-weight: medium">The
489            response to this request must have code 303 &ldquo;See other&rdquo; and the            response to this request must have code 303 &#8220;See other&#8221; and the
490            Location header of the response must point to the            Location header of the response must point to the
491            /{jobs}/(job-id)/URI so that the client receives the value that the            /{jobs}/(job-id)/URI so that the client receives the value that the
492            service has actually set the Execution Duration to &ndash; the service is            service has actually set the Execution Duration to &#8211; the service is
493            free to override the request if it needs.</p>            free to override the request if it needs.</p>
494          <h5  style="font-weight: medium">        Starting a Job</h5>          <h5 style="font-weight: medium">        Starting a Job</h5>
495          <p  style="font-weight: medium">A          <p style="font-weight: medium">A
496            job may be started by POSTing to the /{jobs}/(job-id)/phase URI. The            job may be started by POSTing to the /{jobs}/(job-id)/phase URI. The
497            POST contains a single parameter PHASE=RUN which instructs the UWS to            POST contains a single parameter PHASE=RUN which instructs the UWS to
498            attempt to start the job. The response to this request must have code            attempt to start the job. The response to this request must have code
499            303 &ldquo;See other&rdquo; and the Location header of the response must            303 &#8220;See other&#8221; and the Location header of the response must
500            point to the /{jobs}/(job-id) URI so that the client receives the            point to the /{jobs}/(job-id) URI so that the client receives the
501            phase that the job has been set to. Typically a UWS will put a job            phase that the job has been set to. Typically a UWS will put a job
502            into a QUEUED state on receipt of this command, but depending on how            into a QUEUED state on receipt of this command, but depending on how
503            busy the server is, the job might be put almost immediately (and            busy the server is, the job might be put almost immediately (and
504            without client intervention) into an EXECUTING state.</p>            without client intervention) into an EXECUTING state.</p>
505          <h5  style="font-weight: medium">Aborting a Job</h5>          <h5 style="font-weight: medium">Aborting a Job</h5>
506          <p  style="font-weight: medium">A          <p style="font-weight: medium">A
507            job may be aborted by POSTing to the /{jobs}/(job-id)/phase URI. The            job may be aborted by POSTing to the /{jobs}/(job-id)/phase URI. The
508            POST contains a single parameter PHASE=ABORT which instructs the UWS            POST contains a single parameter PHASE=ABORT which instructs the UWS
509            to attempt to abort the job. The response to this request must have            to attempt to abort the job. The response to this request must have
510            code 303 &ldquo;See other&rdquo; and the Location header of the response must            code 303 &#8220;See other&#8221; and the Location header of the response must
511            point to the /{jobs}/(job-id) URI so that the client receives the            point to the /{jobs}/(job-id) URI so that the client receives the
512            phase that the job has been set to.</p>            phase that the job has been set to.</p>
513        </div>        </div>
514        <div class="section">        <div class="section"><h4><a name="d1e708"/><span class="secnum">2.2.3. </span>Message pattern</h4>
515          <h4 >Message pattern</h4>          <p>The REST binding results in the
         <p >The REST binding results in the  
516            message pattern shown in figure 2.</p>            message pattern shown in figure 2.</p>
517          <p  ><i>Illustration 2:          <p><i>Illustration 2:
518          Typical calling sequence for the REST binding of UWS</i></p>          Typical calling sequence for the REST binding of UWS</i></p>
519          <p  ><img src="Sequence_Diagram__UWS__Rest_Message_Pattern__Rest_Message_Pattern__Rest_Message_Pattern.png" name="graphics3" width="1970" height="1024" border="0" align="left" id="graphics3" alt="rest message pattern" /><br />          <p><img src="Sequence_Diagram__UWS__Rest_Message_Pattern__Rest_Message_Pattern__Rest_Message_Pattern.png" name="graphics3" width="1970" height="1024" border="0" align="left" id="graphics3" alt="rest message pattern"/><br clear="none"/>
520            <br />            <br clear="none"/>
521            </p>            </p>
522        </div>        </div>
523      </div>      </div>
524    
525      <div class="section">      <div class="section"><h3><a name="SOAPbinding"/><span class="secnum">2.3. </span> SOAP binding</h3>
526        <h3 ><a name="SOAPbinding" id="SOAPbinding"></a> SOAP binding</h3>        <h4>Resources and URIs</h4>
527        <h4 >Resources and URIs</h4>        <p>For a SOAP-bound UWS there is only
       <p >For a SOAP-bound UWS there is only  
528          one web resource and therefore one URI. This resource corresponds          one web resource and therefore one URI. This resource corresponds
529          roughly to the Job List object of the UWS and all the other objects          roughly to the Job List object of the UWS and all the other objects
530          are accessed via methods on the Job List.</p>          are accessed via methods on the Job List.</p>
531        <p >The single URI of a SOAP-bound UWS        <p>The single URI of a SOAP-bound UWS
532          must be registered as its access URL.</p>          must be registered as its access URL.</p>
533        <p >Since the SOAP binding has only a        <p>Since the SOAP binding has only a
534          single URI it needs a different way to indicate the job to which a          single URI it needs a different way to indicate the job to which a
535          request applies. Job-specific requests and reponses must carry a SOAP          request applies. Job-specific requests and reponses must carry a SOAP
536          header containing a WS-Addressing structure. In this structure, the          header containing a WS-Addressing structure. In this structure, the
# Line 625  Line 539 
539          The identifier for a given job is stated in the response to the          The identifier for a given job is stated in the response to the
540          request that creates it; that request is one that does not need a          request that creates it; that request is one that does not need a
541          WS-Addressing header.</p>          WS-Addressing header.</p>
542        <p >The exact use of WS-Addressing will        <p>The exact use of WS-Addressing will
543          be stated in the WSDL for the SOAP binding which is TDB.</p>          be stated in the WSDL for the SOAP binding which is TDB.</p>
544        <h4 >Representations of objects</h4>        <h4>Representations of objects</h4>
545        <p >The SOAP binding allows the client to        <p>The SOAP binding allows the client to
546          retrieve representations of some of the UWS objects. Unlike the REST          retrieve representations of some of the UWS objects. Unlike the REST
547          binding, it does not allow all the objects to be represented.          binding, it does not allow all the objects to be represented.
548          Further, the SOAP binding only provides XML representations; it does          Further, the SOAP binding only provides XML representations; it does
549          not support HTML in any way.</p>          not support HTML in any way.</p>
550        <p >Representations may be got from the        <p>Representations may be got from the
551          following methods.</p>          following methods.</p>
552        <ul>        <ul><li>
553          <li>            <p>getJobs() - return the currently
           <p >getJobs() - return the currently  
554              known job identifiers</p>              known job identifiers</p>
555        </li>        </li><li>
556        <li>          <p>getSummary() - return a summary
         <p >getSummary() - return a summary  
557            of the job </p>            of the job </p>
558        </li>        </li><li>
559        <li>          <p>getExecutionDuration() - return
         <p >getExecutionDuration() - return  
560            the execution duration for a job </p>            the execution duration for a job </p>
561        </li>        </li><li>
562        <li>          <p>getDestructionTime() - get the
         <p >getDestructionTime() - get the  
563            destruction time for a job</p>            destruction time for a job</p>
564        </li>        </li><li>
565        <li>          <p>getQuote() - get the quote for a
         <p >getQuote() - get the quote for a  
566            job</p>            job</p>
567        </li>        </li><li>
568        <li>          <p>getPhase() - get the phase for a
         <p >getPhase() - get the phase for a  
569            job</p>            job</p>
570        </li>        </li><li>
571        <li>          <p>getResults() - get the Results
         <p >getResults() - get the Results  
572            for a job</p>            for a job</p>
573        </li>        </li><li>
574        <li>          <p>getError() - get the error
         <p >getError() - get the error  
575            associated with a job</p>            associated with a job</p>
576        </li>        </li></ul>
577          </ul>        <p>Note that there is no representation
       <p >Note that there is no representation  
578          of a Job as a whole. The method getResults() packs all the results in          of a Job as a whole. The method getResults() packs all the results in
579          one XML document and returns that document. The details of the          one XML document and returns that document. The details of the
580          available results are defined by applications of the UWS pattern.</p>          available results are defined by applications of the UWS pattern.</p>
581        <h4 >State-changing operations</h4>        <h4>State-changing operations</h4>
582        <p >The following methods of a UWS change        <p>The following methods of a UWS change
583          its state; most of them change the state of one particular job.</p>          its state; most of them change the state of one particular job.</p>
584        <ul>        <ul><li>
585          <li>            <p>createJob()</p>
586            <p >createJob()</p>        </li><li>
587        </li>          <p>setExecutionDuration()</p>
588        <li>        </li><li>
589          <p >setExecutionDuration()</p>          <p>setDestructionTime()</p>
590        </li>        </li><li>
591        <li>          <p>execute()</p>
592          <p >setDestructionTime()</p>        </li><li>
593        </li>          <p>abort()</p>
594        <li>        </li><li>
595          <p >execute()</p>          <p>destroy()</p>
596        </li>        </li></ul>
597        <li>        <p>The excute() method commits a job for
         <p >abort()</p>  
       </li>  
       <li>  
         <p >destroy()</p>  
       </li>  
         </ul>  
       <p >The excute() method commits a job for  
598          execution. The destroy() method destroys the target job.</p>          execution. The destroy() method destroys the target job.</p>
599        <p >The exact content posted to create a        <p>The exact content posted to create a
600          job is defined by applications of the UWS pattern.</p>          job is defined by applications of the UWS pattern.</p>
601        <h4 >Message pattern</h4>        <h4>Message pattern</h4>
602        <p >The SOAP binding has the message        <p>The SOAP binding has the message
603          pattern shown in figure 3.</p>          pattern shown in figure 3.</p>
604        <p >Note that the number of objects is        <p>Note that the number of objects is
605          much lower than in the REST binding and the number of messages lower          much lower than in the REST binding and the number of messages lower
606          by one. However, the complexity of each message is significantly          by one. However, the complexity of each message is significantly
607          greater. The overall complexity of the pattern is roughly the same in          greater. The overall complexity of the pattern is roughly the same in
608          each binding.</p>          each binding.</p>
609        <p ><img src="SOAPSequence.gif" align="top" alt="SOAP message pattern" /><br />        <p><img src="SOAPSequence.gif" align="top" alt="SOAP message pattern"/><br clear="none"/>
610          <br />          <br clear="none"/>
611                </p>                </p>
612      </div>      </div>
613    </div>    </div>
614    <div class="section">    <div class="section"><h2><a name="SecurityConsiderations"/><span class="secnum">3. </span>Security Considerations</h2>
615      <h1 ><a name="SecurityConsiderations" id="SecurityConsiderations"></a>Security Considerations</h1>      <p>TBC</p>
     <p >TBC</p>  
616    </div>    </div>
617    <div class="section">    <div class="section"><h2><a name="ApplicationsOfUWS"/><span class="secnum">4. </span> Applications of UWS (informative)</h2>
618      <h1 ><a name="ApplicationsOfUWS" id="ApplicationsOfUWS"></a> Applications of UWS (informative)</h1>      <p>The UWS pattern leaves undefined two
     <p >The UWS pattern leaves undefined two  
619        essential parts of the service contract: the content that must be        essential parts of the service contract: the content that must be
620        posted to create a job; and the pattern of results made available by        posted to create a job; and the pattern of results made available by
621        a completed job. An application of UWS completes a service contract        a completed job. An application of UWS completes a service contract
622        by defining these matters.</p>        by defining these matters.</p>
623      <p >There follow some use cases applying      <p>There follow some use cases applying
624        the UWS pattern. The descriptions are neither formal nor complete.        the UWS pattern. The descriptions are neither formal nor complete.
625        The intention is to show a range of ways that the pattern can be        The intention is to show a range of ways that the pattern can be
626        applied without burdening the reader with the level of detail needed        applied without burdening the reader with the level of detail needed
627        for a standard implementation.</p>        for a standard implementation.</p>
628      <p >Any of these cases could be worked up      <p>Any of these cases could be worked up
629        into a full IVOA standard by formalizing the description, adding        into a full IVOA standard by formalizing the description, adding
630        detail (schemata, WSDL) and generally making the specification more        detail (schemata, WSDL) and generally making the specification more
631        exact and complete. I suggest that each case so treated be broken out        exact and complete. I suggest that each case so treated be broken out
632        into a separate specification-document.</p>        into a separate specification-document.</p>
633      <div class="section">      <div class="section"><h3><a name="Imageservice"/><span class="secnum">4.1. </span> Image service with data staging</h3>
634        <h2 ><a name="Imageservice" id="Imageservice"></a> Image service with data staging</h2>        <p>Consider a service that computes
       <p >Consider a service that computes  
635          images from archive data. The computation takes significant time, so          images from archive data. The computation takes significant time, so
636          the service is asynchronous. The service keeps the computed images in          the service is asynchronous. The service keeps the computed images in
637          its own storage until the user downloads them; this is essentially          its own storage until the user downloads them; this is essentially
638          the model of SIAP [9].</p>          the model of SIAP [9].</p>
639        <p >The asynchronous image-service is a        <p>The asynchronous image-service is a
640          logical extension of a synchronous SIA service. Therefore it uses the          logical extension of a synchronous SIA service. Therefore it uses the
641          REST binding of UWS.</p>          REST binding of UWS.</p>
642        <p >The parameters for posting a new job        <p>The parameters for posting a new job
643          are as for SIAP 1.0:</p>          are as for SIAP 1.0:</p>
644        <ul>        <ul><li>
645          <li>            <p>POS, the position on the sky to
           <p >POS, the position on the sky to  
646              be searched;</p>              be searched;</p>
647        </li>        </li><li>
648        <li>          <p>SIZE, the size of the search
         <p >SIZE, the size of the search  
649            box;</p>            box;</p>
650        </li>        </li><li>
651        <li>          <p>FORMAT: the type of images to be
         <p >FORMAT: the type of images to be  
652            computed.</p>            computed.</p>
653        </li>        </li></ul>
654          </ul>        <p>Particular implementations are free
       <p >Particular implementations are free  
655          to add extra parameters.</p>          to add extra parameters.</p>
656        <p >These parameters are posted in a        <p>These parameters are posted in a
657          document of type <i>application/x-www-form-urlencoded</i><span style="font-style: normal">:          document of type <i>application/x-www-form-urlencoded</i><span style="font-style: normal">:
658          i.e. they can be sent from an HTML form.</span></p>          i.e. they can be sent from an HTML form.</span></p>
659        <p  style="font-style: normal">The        <p style="font-style: normal">The
660          images generated by the job are accessible as unnamed results. Each          images generated by the job are accessible as unnamed results. Each
661          image has its own URI and can be downloaded over HTTP at any time          image has its own URI and can be downloaded over HTTP at any time
662          until the destruction time of the job. The URIs for the images may be          until the destruction time of the job. The URIs for the images may be
663          discovered from the Results List in the normal UWS way.</p>          discovered from the Results List in the normal UWS way.</p>
664        <p  style="font-style: normal">SIAP        <p style="font-style: normal">SIAP
665          1.0 produces, for each query, a table of metadata describing the          1.0 produces, for each query, a table of metadata describing the
666          images. The asynchronous image-service produces a table to the same          images. The asynchronous image-service produces a table to the same
667          schema as a named result, called &ldquo;table&rdquo;.</p>          schema as a named result, called &#8220;table&#8221;.</p>
668        <p ><span style="font-style: normal">Image        <p><span style="font-style: normal">Image
669          results are added to the results list, and to the &ldquo;table&rdquo; result,          results are added to the results list, and to the &#8220;table&#8221; result,
670          as they are generated. Hence, a client that polls the service can          as they are generated. Hence, a client that polls the service can
671          discover, download and use some of the images before the job is          discover, download and use some of the images before the job is
672          finished. </span>If the client is satisfied with          finished. </span>If the client is satisfied with
# Line 783  Line 674 
674          destroying the job. However, destroying the job deletes the cached          destroying the job. However, destroying the job deletes the cached
675          images so the client has to download them <i>first</i>.</p>          images so the client has to download them <i>first</i>.</p>
676      </div>      </div>
677      <div class="section">      <div class="section"><h3><a name="ADQLservice"/><span class="secnum">4.2. </span> ADQL service with cursor</h3>
678        <h2 ><a name="ADQLservice" id="ADQLservice"></a> ADQL service with cursor</h2>        <p>ADQL [1] can serve as a JDL. Consider
       <p >ADQL [1] can serve as a JDL. Consider  
679          an ADQL service that supports long-running queries as asynchronous          an ADQL service that supports long-running queries as asynchronous
680          operations. In general, the results of the query may be a large set          operations. In general, the results of the query may be a large set
681          of data. They may be too large to download comfortably. We might like          of data. They may be too large to download comfortably. We might like
682          to cache these results on the service and to operate a cursor,          to cache these results on the service and to operate a cursor,
683          drawing down from the resource a few rows of the table at a time.</p>          drawing down from the resource a few rows of the table at a time.</p>
684        <p >The parameters of a job are as        <p>The parameters of a job are as
685          follows:</p>          follows:</p>
686        <ul>        <ul><li>
687          <li>            <p>ADQL: the query text</p>
688            <p >ADQL: the query text</p>        </li><li>
689        </li>          <p>FORMAT: the format for the
       <li>  
         <p >FORMAT: the format for the  
690            results</p>            results</p>
691        </li>        </li></ul>
692          </ul>        <p>These parameters are posted in a
       <p >These parameters are posted in a  
693          document of type <i>application/x-www-form-urlencoded</i><span style="font-style: normal">:          document of type <i>application/x-www-form-urlencoded</i><span style="font-style: normal">:
694          i.e. they can be sent from an HTML form.</span></p>          i.e. they can be sent from an HTML form.</span></p>
695        <p  style="font-style: normal">A        <p style="font-style: normal">A
696          successful query generates the following, named results.</p>          successful query generates the following, named results.</p>
697        <ul>        <ul><li>
698          <li>            <p style="font-style: normal"><i>table</i>:
           <p  style="font-style: normal"><i>table</i>:  
699              the whole result set as one file resource.</p>              the whole result set as one file resource.</p>
700        </li>        </li><li>
701        <li>          <p style="font-style: normal"><i>header</i>:
         <p  style="font-style: normal"><i>header</i>:  
702            the metadata for the output table.</p>            the metadata for the output table.</p>
703        </li>        </li><li>
704        <li>          <p style="font-style: normal"><i>cursor</i>:
         <p  style="font-style: normal"><i>cursor</i>:  
705            a selection of rows of output.</p>            a selection of rows of output.</p>
706        </li>        </li></ul>
707          </ul>        <p>The <i>cursor</i> result is
       <p >The <i>cursor</i> result is  
708          parameterized by the query parameters FIRST and LAST in the query          parameterized by the query parameters FIRST and LAST in the query
709          string of its URI: these parameters state the index of the first and          string of its URI: these parameters state the index of the first and
710          last row to be returned; e.g.</p>          last row to be returned; e.g.</p>
711        <p > http://whatever.org/adlqService/results/cursor?FIRST=1&amp;LAST=100</p>        <p> http://whatever.org/adlqService/results/cursor?FIRST=1&amp;LAST=100</p>
712        <p >If the parameters are missing, the        <p>If the parameters are missing, the
713          service decides which rows to emit.</p>          service decides which rows to emit.</p>
714      </div>      </div>
715      <div class="section">      <div class="section"><h3><a name="ParameterizedApplications"/><span class="secnum">4.3. </span> Parameterized applications</h3>
716        <h2 ><a name="ParameterizedApplications" id="ParameterizedApplications"></a> Parameterized applications</h2>        <p>There is a class of applications on
717        <p >There is a class of applications on          which a job may be defined by a list of simple parameters. &#8220;Simple&#8221;
         which a job may be defined by a list of simple parameters. &ldquo;Simple&rdquo;  
718          here means unstructured: a scalar value such as a number, a string of          here means unstructured: a scalar value such as a number, a string of
719          text or a Boolean value. If the parameters are allowed to name files,          text or a Boolean value. If the parameters are allowed to name files,
720          so that structured data are passed indirectly, then the class of          so that structured data are passed indirectly, then the class of
721          applications is very large indeed: almost any non-interactive          applications is very large indeed: almost any non-interactive
722          application can be driven in this way.</p>          application can be driven in this way.</p>
723        <p >Turning each application of choice        <p>Turning each application of choice
724          into a service (with or without UWS semantics) would be onerous.          into a service (with or without UWS semantics) would be onerous.
725          However, if the application&rsquo;s interface is entirely characterized,          However, if the application&#8217;s interface is entirely characterized,
726          through the JDL, in terms of typed input and output parameters, then          through the JDL, in terms of typed input and output parameters, then
727          one service contract will work for all the applications and a single          one service contract will work for all the applications and a single
728          implementation of the contract can be reused for all cases.</p>          implementation of the contract can be reused for all cases.</p>
729        <p >AstroGrid&rsquo;s Common Execution        <p>AstroGrid&#8217;s Common Execution
730          Architecture (CEA) [11] works in this way. It has just one service          Architecture (CEA) [11] works in this way. It has just one service
731          contract for all applications (including ADQL services; the ADQL          contract for all applications (including ADQL services; the ADQL
732          query is passed in the list of parameters). It has four          query is passed in the list of parameters). It has four
# Line 853  Line 735 
735          command-line applications, HTTP-get services or JDBC databases). CEA          command-line applications, HTTP-get services or JDBC databases). CEA
736          also specifies stateful, asynchronous services and makes use of          also specifies stateful, asynchronous services and makes use of
737          VOSpace.</p>          VOSpace.</p>
738        <p >Consider a CEA reworked to use the        <p>Consider a CEA reworked to use the
739          UWS pattern for consistency with other (future) IVOA standards. Call          UWS pattern for consistency with other (future) IVOA standards. Call
740          it CEA v2 to distinguish it from CEA v1 as currently maintained by          it CEA v2 to distinguish it from CEA v1 as currently maintained by
741          AstroGrid. For this example, consider the particular kind of CEA          AstroGrid. For this example, consider the particular kind of CEA
742          service that runs applications supplied as executable binaries.</p>          service that runs applications supplied as executable binaries.</p>
743        <p >A binary application-server has a        <p>A binary application-server has a
744          library of applications co-located with its service and defined in          library of applications co-located with its service and defined in
745          the service configuration set by the service provider. It does not          the service configuration set by the service provider. It does not
746          accept code from the client for local execution.</p>          accept code from the client for local execution.</p>
747        <p >The JDL in CEA v2 is similar to that        <p>The JDL in CEA v2 is similar to that
748          in CEA v1 [11]. It is a formal, XML vocabulary for expressing choice          in CEA v1 [11]. It is a formal, XML vocabulary for expressing choice
749          of application and parameter lists [12]. Parameters may be inputs or          of application and parameter lists [12]. Parameters may be inputs or
750          outputs of the job.</p>          outputs of the job.</p>
751        <p >To start a job, a document in this        <p>To start a job, a document in this
752          JDL is posted to the UWS. The document is sent in its native          JDL is posted to the UWS. The document is sent in its native
753          MIME-type, application/xml, so this is not an interface that can be          MIME-type, application/xml, so this is not an interface that can be
754          driven directly from an HTML form, although it can be driven from the          driven directly from an HTML form, although it can be driven from the
755          emerging Xforms technology.</p>          emerging Xforms technology.</p>
756        <p >The results of the job depend on the        <p>The results of the job depend on the
757          choice of application. They are all named results and the names and          choice of application. They are all named results and the names and
758          types are defined in the definition of the application. That          types are defined in the definition of the application. That
759          application-definition is registered, so the client knows before          application-definition is registered, so the client knows before
760          running the job what results to expect.</p>          running the job what results to expect.</p>
761        <p >CEA input-parameters may be indirect:        <p>CEA input-parameters may be indirect:
762          i.e. they may refer to data in on-line storage. In this case, the JDL          i.e. they may refer to data in on-line storage. In this case, the JDL
763          document contains the URIs for those data objects Alternatively, the          document contains the URIs for those data objects Alternatively, the
764          parameters may be direct, in which case the JDL contains the actual          parameters may be direct, in which case the JDL contains the actual
765          value of the parameters.</p>          value of the parameters.</p>
766        <p >Similarly, CEA results may be made        <p>Similarly, CEA results may be made
767          indirect. In this case, the results are named as parameters in the          indirect. In this case, the results are named as parameters in the
768          JDL where the values are the URIs to which the results are delivered.          JDL where the values are the URIs to which the results are delivered.
769          The application server can then stream the results to the specified          The application server can then stream the results to the specified
# Line 892  Line 774 
774          the URI.</p>          the URI.</p>
775      </div>      </div>
776    </div>    </div>
777    <div class="section">    <div class="section"><h2><a name="SynchronousService"/><span class="secnum">5. </span> Implementing a Synchronous Service on top of UWS (informative)</h2>
778      <h1 ><a name="SynchronousService" id="SynchronousService"></a> Implementing a Synchronous Service on top of UWS (informative)</h1>      <p>Whilst the provision of synchronous
     <p >Whilst the provision of synchronous  
779        services is not one of the design aims of the UWS pattern, there is        services is not one of the design aims of the UWS pattern, there is
780        clearly a desire in second generation IVOA services to still allow a        clearly a desire in second generation IVOA services to still allow a
781        simple synchronous calling pattern to be available to simple clients.        simple synchronous calling pattern to be available to simple clients.
782        What follows is a recommended recipe for putting a synchronous facade        What follows is a recommended recipe for putting a synchronous facade
783        on UWS;</p>        on UWS;</p>
784      <p >It is assumed that the core of the      <p>It is assumed that the core of the
785        service does provide a true UWS compliant set of endpoints rooted at        service does provide a true UWS compliant set of endpoints rooted at
786        /async (equivalent to the /{jobs} endpoint in the nomenclature used        /async (equivalent to the /{jobs} endpoint in the nomenclature used
787        above). The desired synchronous service is to be rooted at /sync.</p>        above). The desired synchronous service is to be rooted at /sync.</p>
788      <ol>      <ol><li>
789        <li>          <p>The job is started by either a
         <p >The job is started by either a  
790            GET (for compatibility with existing IVOA standards) or a POST            GET (for compatibility with existing IVOA standards) or a POST
791            (preferably) of form encoded parameters to the /sync endpoint.</p>            (preferably) of form encoded parameters to the /sync endpoint.</p>
792      </li>      </li><li>
793      <li>        <p>Internally the service creates a
       <p >Internally the service creates a  
794          job in the standard UWS system with the given parameters and sets          job in the standard UWS system with the given parameters and sets
795          the PHASE to RUN, noting the returned job identifier which we will          the PHASE to RUN, noting the returned job identifier which we will
796          call {job-id}. The /sync endpoint then responds with a STATUS 303          call {job-id}. The /sync endpoint then responds with a STATUS 303
797          (redirection) response to the URL /sync/{job-id}.</p>          (redirection) response to the URL /sync/{job-id}.</p>
798      </li>      </li><li>
799      <li>        <p>The /sync/{job-id} endpoint then
       <p >The /sync/{job-id} endpoint then  
800          blocks until it detects that the underlying job has finished at          blocks until it detects that the underlying job has finished at
801          which point it responds with a STATUS 303 (redirection) to the          which point it responds with a STATUS 303 (redirection) to the
802          /{jobs}/{job-id}/results/mainresult URL, where &ldquo;mainresult&rdquo; is          /{jobs}/{job-id}/results/mainresult URL, where &#8220;mainresult&#8221; is
803          the name of the primary result of the job.</p>          the name of the primary result of the job.</p>
804      </li>      </li></ol>
805        </ol>      <p>In this way the service appears to be
806      <p >In this way the service appears to be        a synchronous to the original client &#8211; assuming it obeys standard
       a synchronous to the original client &ndash; assuming it obeys standard  
807        HTTP redirection semantics, so a simple client like a web browser        HTTP redirection semantics, so a simple client like a web browser
808        could obtain the result with a single &ldquo;click&rdquo;. At the same time a        could obtain the result with a single &#8220;click&#8221;. At the same time a
809        more sophisticated, UWS aware, client could control the same job from        more sophisticated, UWS aware, client could control the same job from
810        the standard /{jobs} endpoint &ndash; indeed if the synchronous call        the standard /{jobs} endpoint &#8211; indeed if the synchronous call
811        timed out for some reason, then it would be possible for the original        timed out for some reason, then it would be possible for the original
812        client to retrieve the results by looking at the /{jobs}/{job-id} URL        client to retrieve the results by looking at the /{jobs}/{job-id} URL
813        tree, because it could make the association of the job-Id from the        tree, because it could make the association of the job-Id from the
814        URL it receives in step 2 above.</p>        URL it receives in step 2 above.</p>
815      <p >The purely synchronous client is      <p>The purely synchronous client is
816        restricted compared with the full UWS pattern in that there can only        restricted compared with the full UWS pattern in that there can only
817        be one result directly returned to the client, as noted in stage 3        be one result directly returned to the client, as noted in stage 3
818        above. This is usually not a problem for compatibility with existing        above. This is usually not a problem for compatibility with existing
# Line 943  Line 820 
820        containing references to the desired data.</p>        containing references to the desired data.</p>
821    </div>    </div>
822    
823  <div class="appendices">  <div class="appendices"><h2>Appendices</h2>
824    
825  <div class="section">  <div class="section"><h2><a name="Updates"/><span class="secnum">A. </span> Updates from previous versions</h2>
826    <h1 class="nonum"><a name="Updates" id="Updates"></a> Updates from previous versions</h1>    <div class="section"><h3><a name="d1e1112"/><span class="secnum">A.1. </span>At Version 0.5</h3>
827    <div class="section">      <ul><li>
828      <h2>At Version 0.5</h2>          <p>changed the POST parameter names
     <ul>  
       <li>  
         <p >changed the POST parameter names  
829            to be the same as the resource paths/</p>            to be the same as the resource paths/</p>
830          </li>          </li><li>
831          <li>            <p>added synchronous section.</p>
832            <p >added synchronous section.</p>          </li><li>
833          </li>            <p>updated SOAP binding section</p>
834          <li>          </li></ul>
           <p >updated SOAP binding section</p>  
         </li>  
         </ul>  
835    </div>    </div>
836  </div>  </div>
837  <div class="section">  <div class="section"><h2><a name="References"/><span class="secnum">B. </span>References</h2>
   <h1 ><a name="References" id="References"></a>References</h1>  
838        
839    <p >[1] M. Ohishi, A. Szalay    <p>[1] M. Ohishi, A. Szalay
840      (eds.), IVOA Astronomical Data query Language, <span style="background: transparent"><a  href="http://www.ivoa.net/Documents/latest/ADQL.html">http://www.ivoa.net/Documents/latest/ADQL.html</a></span></p>      (eds.), IVOA Astronomical Data query Language, <span style="background: transparent"><a href="http://www.ivoa.net/Documents/latest/ADQL.html" shape="rect">http://www.ivoa.net/Documents/latest/ADQL.html</a></span></p>
841    <p >[2]    <p>[2]
842      US NVO project, <i>NVO      US NVO project, <i>NVO
843      compliance: Simple Cone Search</i>, <span style="background: transparent"><a  href="http://us-vo.org/pubs/files/conesearch.html">http://us-vo.org/pubs/files/conesearch.html</a></span></p>      compliance: Simple Cone Search</i>, <span style="background: transparent"><a href="http://us-vo.org/pubs/files/conesearch.html" shape="rect">http://us-vo.org/pubs/files/conesearch.html</a></span></p>
844    <p ><a name="title" id="title"></a>[3]    <p><a name="title" id="title" shape="rect"/>[3]
845      D. Box, F. Curbera (eds.), <i>Web      D. Box, F. Curbera (eds.), <i>Web
846      Services Addressing (WS-Addressing)</i>, <span style="background: transparent"><a  href="http://www.w3.org/Submission/ws-addressing/">http://www.w3.org/Submission/ws-addressing/</a></span></p>      Services Addressing (WS-Addressing)</i>, <span style="background: transparent"><a href="http://www.w3.org/Submission/ws-addressing/" shape="rect">http://www.w3.org/Submission/ws-addressing/</a></span></p>
847    <p >[4]    <p>[4]
848      T. Banks (ed.), <i>Web      T. Banks (ed.), <i>Web
849      Service Resource Framework (WSRF) &ndash; Primer</i>, <span style="background: transparent"><a  href="http://docs.oasis-open.org/wsrf/wsrf-primer-1.2-primer-cd-01.pdf">http://docs.oasis-open.org/wsrf/wsrf-primer-1.2-primer-cd-01.pdf</a></span></p>      Service Resource Framework (WSRF) &#8211; Primer</i>, <span style="background: transparent"><a href="http://docs.oasis-open.org/wsrf/wsrf-primer-1.2-primer-cd-01.pdf" shape="rect">http://docs.oasis-open.org/wsrf/wsrf-primer-1.2-primer-cd-01.pdf</a></span></p>
850    <p >[5]    <p>[5]
851      S. Graham, A. Karmarkar, J. Mischkinsky, I. Robinson, I. Sedukhin      S. Graham, A. Karmarkar, J. Mischkinsky, I. Robinson, I. Sedukhin
852      (eds.), <i>Web      (eds.), <i>Web
853      Services Resource 1.2 (WS-Resource)</i>, <span style="background: transparent"><a  href="http://docs.oasis-open.org/wsrf/wsrf-ws_resource-1.2-spec-os.pdf">http://docs.oasis-open.org/wsrf/wsrf-ws_resource-1.2-spec-os.pdf</a></span></p>      Services Resource 1.2 (WS-Resource)</i>, <span style="background: transparent"><a href="http://docs.oasis-open.org/wsrf/wsrf-ws_resource-1.2-spec-os.pdf" shape="rect">http://docs.oasis-open.org/wsrf/wsrf-ws_resource-1.2-spec-os.pdf</a></span></p>
854    <p >[6]    <p>[6]
855      S. Graham,, J. Treadwell (eds.), <i>Web      S. Graham,, J. Treadwell (eds.), <i>Web
856      Services Resource Properties 1.2 (WS-ResourceProperties)</i>, <span style="background: transparent"><a  href="http://docs.oasis-open.org/wsrf/wsrf-ws_resource_properties-1.2-spec-os.pdf">http://docs.oasis-open.org/wsrf/wsrf-ws_resource_properties-1.2-spec-os.pdf</a></span></p>      Services Resource Properties 1.2 (WS-ResourceProperties)</i>, <span style="background: transparent"><a href="http://docs.oasis-open.org/wsrf/wsrf-ws_resource_properties-1.2-spec-os.pdf" shape="rect">http://docs.oasis-open.org/wsrf/wsrf-ws_resource_properties-1.2-spec-os.pdf</a></span></p>
857    <p >[7]    <p>[7]
858      L. Srinivasan, T. Banks (eds.), <i>Web      L. Srinivasan, T. Banks (eds.), <i>Web
859      Services Resource Lifetime 1.2 (WS-ResourceLifetime)</i>, <span style="background: transparent"><a  href="http://docs.oasis-open.org/wsrf/wsrf-ws_resource_lifetime-1.2-spec-os.pdf">http://docs.oasis-open.org/wsrf/wsrf-ws_resource_lifetime-1.2-spec-os.pdf</a></span></p>      Services Resource Lifetime 1.2 (WS-ResourceLifetime)</i>, <span style="background: transparent"><a href="http://docs.oasis-open.org/wsrf/wsrf-ws_resource_lifetime-1.2-spec-os.pdf" shape="rect">http://docs.oasis-open.org/wsrf/wsrf-ws_resource_lifetime-1.2-spec-os.pdf</a></span></p>
860    <p >[8]    <p>[8]
861      S. Graham, D. Hull, B. Murray, <i>Web      S. Graham, D. Hull, B. Murray, <i>Web
862      Services Base Notification 1.3</i>, <span style="background: transparent"><a  href="http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-pr-02.pdf">http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-pr-02.pdf</a></span></p>      Services Base Notification 1.3</i>, <span style="background: transparent"><a href="http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-pr-02.pdf" shape="rect">http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-pr-02.pdf</a></span></p>
863    <p >[9]    <p>[9]
864      D. Tody, R. Plante, <i>Simple      D. Tody, R. Plante, <i>Simple
865      Image Access Specification</i>, <span style="background: transparent"><a  href="http://www.ivoa.net/Documents/latest/SIA.html">http://www.ivoa.net/Documents/latest/SIA.html</a></span></p>      Image Access Specification</i>, <span style="background: transparent"><a href="http://www.ivoa.net/Documents/latest/SIA.html" shape="rect">http://www.ivoa.net/Documents/latest/SIA.html</a></span></p>
866    <p >[10]    <p>[10]
867      Grid and Web Services Working Group of IVOA, work in progress, <span style="background: transparent"><a  href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></span></p>      Grid and Web Services Working Group of IVOA, work in progress, <span style="background: transparent"><a href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices" shape="rect">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></span></p>
868    <p >[11]    <p>[11]
869      P. Harrison, <i>Proposal      P. Harrison, <i>Proposal
870      for a Common Execution Architecture</i>, <span style="background: transparent"><a  href="http://www.ivoa.net/Documents/latest/CEA.html">http://www.ivoa.net/Documents/latest/CEA.html</a></span></p>      for a Common Execution Architecture</i>, <span style="background: transparent"><a href="http://www.ivoa.net/Documents/latest/CEA.html" shape="rect">http://www.ivoa.net/Documents/latest/CEA.html</a></span></p>
871    <p >[12]    <p>[12]
872      P. Harrison, XML schema for namespace <i>http://www.astrogrid.org/schema/CommonExecutionArchitectureBase/v1</i>, <span style="background: transparent"><a  href="http://software.astrogrid.org/schema/cea/CommonExecutionArchitectureBase/v1.0/CommonExecutionArchitectureBase.xsd">http://software.astrogrid.org/schema/cea/CommonExecutionArchitectureBase/v1.0/CommonExecutionArchitectureBase.xsd</a></span></p>      P. Harrison, XML schema for namespace <i>http://www.astrogrid.org/schema/CommonExecutionArchitectureBase/v1</i>, <span style="background: transparent"><a href="http://software.astrogrid.org/schema/cea/CommonExecutionArchitectureBase/v1.0/CommonExecutionArchitectureBase.xsd" shape="rect">http://software.astrogrid.org/schema/cea/CommonExecutionArchitectureBase/v1.0/CommonExecutionArchitectureBase.xsd</a></span></p>
873    <p >[13] Boyer et al., Xforms 1.0 <a  href="http://www.w3.org/TR/xforms/">http://www.w3.org/TR/xforms/</a></p>    <p>[13] Boyer et al., Xforms 1.0 <a href="http://www.w3.org/TR/xforms/" shape="rect">http://www.w3.org/TR/xforms/</a></p>
874    <p >[14] Gudgin et.al, Web Services    <p>[14] Gudgin et.al, Web Services
875      Addressing 1.0 - WSDL Binding,<a  href="http://www.w3.org/TR/ws-addr-wsdl/">http://www.w3.org/TR/ws-addr-wsdl/</a></p>      Addressing 1.0 - WSDL Binding,<a href="http://www.w3.org/TR/ws-addr-wsdl/" shape="rect">http://www.w3.org/TR/ws-addr-wsdl/</a></p>
876    <p >[15] Gudgin et al. Web Services    <p>[15] Gudgin et al. Web Services
877      Addressing 1.0 &ndash; Core <a  href="http://www.w3.org/TR/ws-addr-core/">http://www.w3.org/TR/ws-addr-core/</a></p>      Addressing 1.0 &#8211; Core <a href="http://www.w3.org/TR/ws-addr-core/" shape="rect">http://www.w3.org/TR/ws-addr-core/</a></p>
878    <p >[16] Box et al., <a  href="http://www.w3.org/Submission/ws-addressing/">http://www.w3.org/Submission/ws-addressing/</a></p>    <p>[16] Box et al., <a href="http://www.w3.org/Submission/ws-addressing/" shape="rect">http://www.w3.org/Submission/ws-addressing/</a></p>
879  </div>  </div>
880  <div class="section">  <div class="section"><h2><a name="UWSSchema"/><span class="secnum">C. </span> Appendix A Schema</h2>
881    <h1 ><a name="UWSSchema" id="UWSSchema"></a> Appendix A Schema</h1>      <?incxml href="http://www.astrogrid.org/viewcvs/astrogrid/contracts/src/schema/cea/UWS/v0.9/UWS.xsd?view=co"?><div xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="viewxml"><div class="comment">&lt;!-- $Id: UWS.xsd,v 1.6 2008/10/01 11:54:02 pah Exp $ --&gt;</div><div class="comment">&lt;!-- proposal for basic UWS schema - Paul Harrison May 2008 --&gt;</div><div class="comment">&lt;!--
882      <?incxml href="http://www.astrogrid.org/viewcvs/astrogrid/contracts/src/schema/cea/UWS/v0.9/UWS.xsd?view=co"?>  
883    $Log: UWS.xsd,v $
884    Revision 1.6  2008/10/01 11:54:02  pah
885    fix up cvs header
886    
887    Revision 1.5  2008/09/25 00:22:35  pah
888    change termination time to execution duration
889    
890     --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:schema</span> <span class="attribute-name">targetNamespace</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS/v0.9.2"</span> <span class="attribute-name">elementFormDefault</span><span class="markup">=</span><span class="attribute-value">"qualified"</span> <span class="attribute-name">attributeFormDefault</span><span class="markup">=</span><span class="attribute-value">"unqualified"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:import</span> <span class="attribute-name">namespace</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/1999/xlink"</span> <span class="attribute-name">schemaLocation</span><span class="markup">=</span><span class="attribute-value">"../../../stc/STC/v1.30/XLINK.xsd"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!--
891          &lt;xs:import namespace="http://www.w3.org/1999/xlink"
892          schemaLocation="http://www.ivoa.net/xml/Xlink/xlink.xsd"/&gt;
893       --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ShortJobDescription"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"id"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobIdentifier"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"required"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"reference"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">standard xlink references</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"xlink:type"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"optional"</span> <span class="attribute-name">default</span><span class="markup">=</span><span class="attribute-value">"simple"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"xlink:href"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"optional"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attributeGroup</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ExecutionPhase"</span><span class="markup">&gt;</span><div class="comment">&lt;!--
894             need to think a little here about the implication of allowing a
895             "re-entrant" application that is capable of running
896             mini-jobs...probably this is indicated with a different state
897             varible entirely
898          --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
899                Enumeration of possible phases of job execution
900             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"PENDING"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
901                      The first phase a job is entered into - this is where a job is being set up but no request to run has occurred.
902                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"QUEUED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
903                      An job has been accepted for execution but is waiting
904                      in a queue
905                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"EXECUTING"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">An job is running</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"COMPLETED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
906                      An job has completed successfully
907                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"ERROR"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
908                      Some form of error has occurred
909                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"UNKNOWN"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
910                      The job is in an unknown state
911                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"HELD"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
912                      The job is HELD pending execution and will not
913                      automatically be executed (cf pending)
914                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"SUSPENDED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
915                      The job has been suspended by the system during
916                      execution
917                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"ABORTED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
918                      The job has been aborted, either by user request or by the server because of lack or overuse of resources.
919                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:restriction</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"JobSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobId"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobIdentifier"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:quote"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"startTime"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"endTime"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:executionDuration"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:destruction"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"errorSummary"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ErrorSummary"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"JobIdentifier"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
920                The identifier for the job
921             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"job"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
922                This is the information that is returned when a GET is made
923                for a single job resource - i.e. /(jobs)/(jobid)
924             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"phase"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ExecutionPhase"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
925                the execution phase - returned at /(jobs)/(jobid)/phase
926             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"quote"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
927                A Quote predicts when the job is likely to complete - returned at /(jobs)/(jobid)/quote
928                TODO - how to encode "don't know"
929             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"executionDuration"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:int"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"false"</span><span class="markup">&gt;</span><div class="comment">&lt;!-- TODO look if xs:duration here has any benefits --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
930                The duration (in seconds) for which the job should be allowed to run - a value of 0 is intended to mean unlimited - returned at /(jobs)/(jobid)/executionduration
931             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destruction"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
932                The time at which the whole job + records + results will be destroyed. returned at /(jobs)/(jobid)/destruction
933             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobList"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
934                  The list of job references returned at /(jobs)
935               </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
936                      ISSUE - do we want to have any sort of paging or
937                      selection mechanism in case the job list gets very
938                      large? Or is that an unnecessary complication...
939                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobref"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ShortJobDescription"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ResultReference"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
940                A reference to a UWS result
941             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!-- TODO why is this here - pah? --&gt;</div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"id"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"required"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"resultList"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
942                  The element returned for /(jobs)/(jobid)/results
943               </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"result"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ResultReference"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ErrorSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">
944                A short summary of the error
945             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"message"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"detail"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"type"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ErrorType"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">characterization of the type of the error</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attribute</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ErrorType"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"transient"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"fatal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:restriction</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:schema</span><span class="markup">&gt;</span></div><div class="comment">&lt;!--
946    
947     --&gt;</div></div>
948      <?incxml end?>      <?incxml end?>
949    
950  </div>  </div>
951  <div class="section">  <div class="section"><h2><a name="UWSWSDL"/><span class="secnum">D. </span> Appendix B WSDL 1.0 for SOAP binding</h2>
952    <h1 ><a name="UWSWSDL" id="UWSWSDL"></a> Appendix B WSDL 1.0 for SOAP binding</h1>    <p>Although it is not possible to
   <p >Although it is not possible to  
953      provide a complete WSDL 1.0 contract for a general UWS service      provide a complete WSDL 1.0 contract for a general UWS service
954      because WSDL requires the exact form of the createJob and getResults      because WSDL requires the exact form of the createJob and getResults
955      operations to be defined, the following WSDL is included as a      operations to be defined, the following WSDL is included as a
956      template for implementors to follow.</p>      template for implementors to follow.</p>
957      <?incxml href="http://www.astrogrid.org/viewcvs/astrogrid/contracts/src/schema/cea/UWSSOAP/0.9/UWSSOAP.wsdl?view=co"?>      <?incxml href="http://www.astrogrid.org/viewcvs/astrogrid/contracts/src/schema/cea/UWSSOAP/0.9/UWSSOAP.wsdl?view=co"?><div xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="viewxml"><div class="comment">&lt;!-- $Id: UWSSOAP.wsdl,v 1.1 2008/10/06 12:38:18 pah Exp $ --&gt;</div><div class="comment">&lt;!-- UWS SOAP binding template --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:definitions</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"UWS"</span> <span class="attribute-name">targetNamespace</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:types</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:schema</span> <span class="attribute-name">targetNamespace</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:import</span> <span class="attribute-name">namespace</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS/v0.9.2"</span> <span class="attribute-name">schemaLocation</span><span class="markup">=</span><span class="attribute-value">"../../UWS/v0.9/UWS.xsd"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"createJob"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:documentation</span><span class="markup">&gt;</span><span class="text">This should be properly specified in a real UWS implementation of a web service to constrain the job initialization parameters</span><span class="markup">&lt;/</span><span class="end-tag">xsd:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:any</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"createJobResponse"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobSummary"</span><span class="markup">&gt;</span><span class="text">
958           </span><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"listJobs"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
959              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"listJobsResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"job"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uwsws:ShortJobSummary"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"execute"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
960              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"executeResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"abort"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
961              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"abortResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"success"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xsd:boolean"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destroy"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
962              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destroyResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"success"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xsd:boolean"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getSummary"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
963              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getSummaryResponse"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobSummary"</span><span class="markup">&gt;</span><span class="text">
964           </span><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setExecutionDuration"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"duration"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xsd:int"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setExecutionDurationResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:executionDuration"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setDestructionTime"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"time"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xsd:dateTime"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setDestructionTimeResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:destruction"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getPhase"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
965              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getPhaseResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getExecutionDuration"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
966              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getExecutionDurationResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:executionDuration"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getDestructionTime"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
967              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getDestructionTimeResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:destruction"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getQuote"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><span class="text">
968              </span><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getQuoteResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:quote"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getResults"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"in"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xsd:string"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getResultsResponse"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:documentation</span><span class="markup">&gt;</span><span class="text">in an implemented UWS service this should be properly defined</span><span class="markup">&lt;/</span><span class="end-tag">xsd:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:any</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getError"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"in"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xsd:string"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getErrorResponse"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ErrorSummary"</span><span class="markup">&gt;</span><span class="text">
969           </span><span class="markup">&lt;/</span><span class="end-tag">xsd:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ShortJobSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xsd:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobId"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xsd:string"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xsd:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xsd:schema</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:types</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"createJobRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:createJob"</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"createJobResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:createJobResponse"</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"listJobsRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:listJobs"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"listJobsResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:listJobsResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"executeRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:execute"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"executeResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:executeResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"abortRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:abort"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"abortResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:abortResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destroyRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:destroy"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destroyResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:destroyResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getSummaryRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getSummary"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getSummaryResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getSummaryResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setExecutionDurationRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:setExecutionDuration"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setExecutionDurationResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:setExecutionDurationResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setDestructionTimeRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:setDestructionTime"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setDestructionTimeResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:setDestructionTimeResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getPhaseRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getPhase"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getPhaseResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getPhaseResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getExecutionDurationRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getExecutionDuration"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getExecutionDurationResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getExecutionDurationResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getDestructionTimeRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getDestructionTime"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getDestructionTimeResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getDestructionTimeResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getQuoteRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getQuote"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getQuoteResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getQuoteResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getResultsRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getResults"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getResultsResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getResultsResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getErrorRequest"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getError"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:message</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getErrorResponse"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:part</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span> <span class="attribute-name">element</span><span class="markup">=</span><span class="attribute-value">"uwsws:getErrorResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:message</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:portType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"UWS"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:documentation</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"createJob"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:documentation</span><span class="markup">&gt;</span><span class="text">create a new job</span><span class="markup">&lt;/</span><span class="end-tag">wsdl:documentation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:createJobRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:createJobResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"listJobs"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:documentation</span><span class="markup">&gt;</span><span class="text">list the jobs that the UWS server currently knows abou</span><span class="markup">&lt;/</span><span class="end-tag">wsdl:documentation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:listJobsRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:listJobsResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"execute"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:documentation</span><span class="markup">&gt;</span><span class="text">execute a job that has previously been create</span><span class="markup">&lt;/</span><span class="end-tag">wsdl:documentation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:executeRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:executeResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"abort"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:documentation</span><span class="markup">&gt;</span><span class="text">abort a job that is runnin</span><span class="markup">&lt;/</span><span class="end-tag">wsdl:documentation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:abortRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:abortResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destroy"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:documentation</span><span class="markup">&gt;</span><span class="text">destroy a job - i.e. remove all resources that a job has create</span><span class="markup">&lt;/</span><span class="end-tag">wsdl:documentation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:destroyRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:destroyResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getSummary"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getSummaryRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getSummaryResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setExecutionDuration"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:setExecutionDurationRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:setExecutionDurationResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setDestructionTime"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:setDestructionTimeRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:setDestructionTimeResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getPhase"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getPhaseRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getPhaseResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getExecutionDuration"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getExecutionDurationRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getExecutionDurationResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getDestructionTime"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getDestructionTimeRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getDestructionTimeResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getQuote"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getQuoteRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getQuoteResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getResults"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getResultsRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getResultsResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getError"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getErrorRequest"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span> <span class="attribute-name">message</span><span class="markup">=</span><span class="attribute-value">"uwsws:getErrorResponse"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:portType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:binding</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"UWSSOAP"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uwsws:UWS"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:binding</span> <span class="attribute-name">style</span><span class="markup">=</span><span class="attribute-value">"document"</span> <span class="attribute-name">transport</span><span class="markup">=</span><span class="attribute-value">"http://schemas.xmlsoap.org/soap/http"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"createJob"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/NewOperation"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"listJobs"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/listJobs"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"execute"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/execute"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"abort"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/abort"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destroy"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/destroy"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getSummary"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/getSummary"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setExecutionDuration"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/setExecutionDuration"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"setDestructionTime"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/setDestructionTime"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getPhase"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/getPhase"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getExecutionDuration"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/getExecutionDuration"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getDestructionTime"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/getDestructionTime"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getQuote"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/getQuote"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getResults"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/getResults"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:operation</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"getError"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:operation</span> <span class="attribute-name">soapAction</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS-WS/v0.9/getError"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:input</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:input</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:output</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:body</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"literal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:output</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:operation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:binding</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:service</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"UWS"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">wsdl:port</span> <span class="attribute-name">binding</span><span class="markup">=</span><span class="attribute-value">"uwsws:UWSSOAP"</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"UWSSOAP"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">soap:address</span> <span class="attribute-name">location</span><span class="markup">=</span><span class="attribute-value">"http://www.example.org/"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!-- specify that ws-addressing is used --&gt;</div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">wsaw:UsingAddressing</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:port</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:service</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">wsdl:definitions</span><span class="markup">&gt;</span></div></div>
970      <?incxml end ?>      <?incxml end ?>
971  </div>  </div>
972  </div>  </div>
# Line 1030  Line 976 
976  $Revision: 847 $ $Date: 2008-10-29 14:33:57 +0000 (Wed, 29. Oct 2008) $  $Revision: 847 $ $Date: 2008-10-29 14:33:57 +0000 (Wed, 29. Oct 2008) $
977  </p>  </p>
978    
979  </body>  </body></html>
 </html>  

Legend:
Removed from v.981  
changed lines
  Added in v.982

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26