HTML documentation
authorAleš Křenek <ljocha@ics.muni.cz>
Wed, 29 Jun 2005 09:01:16 +0000 (09:01 +0000)
committerAleš Křenek <ljocha@ics.muni.cz>
Wed, 29 Jun 2005 09:01:16 +0000 (09:01 +0000)
org.glite.jp.ws-interface/Makefile
org.glite.jp.ws-interface/src/JobProvenancePS.xml
org.glite.jp.ws-interface/src/JobProvenanceTypes.xml
org.glite.jp.ws-interface/src/doc.xml [new file with mode: 0644]
org.glite.jp.ws-interface/src/puke-ug.xsl [new file with mode: 0644]

index 595f7ea..ee80ab4 100644 (file)
@@ -15,6 +15,8 @@ VPATH=${top_srcdir}/interface:${top_srcdir}/src
 STAGETO=interface
 
 XSLTPROC=xsltproc
+XMLLINT:=xmllint
+docbookxls:=http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
 
 #WSDL=JobProvenancePS.wsdl JobProvenanceIS.wsdl JobProvenanceTypes.wsdl 
 WSDL=JobProvenancePS.wsdl JobProvenanceTypes.wsdl 
@@ -52,3 +54,8 @@ clean:
        
 %.wsdl: %.xml
        ${XSLTPROC} ../src/puke-wsdl.xsl $< >$@
+
+JobProvenancePS.html: doc.xml JobProvenancePS.xml JobProvenanceTypes.xml puke-ug.xsl
+       ${XSLTPROC} --novalid ../src/puke-ug.xsl $< >doc-html.xml
+       ${XMLLINT} --valid --noout doc-html.xml
+       ${XSLTPROC} --stringparam  chapter.autolabel 0 ${docbookxls} doc-html.xml >$@
index 0a5f921..3d7b0e7 100644 (file)
@@ -7,60 +7,97 @@
        elemPrefix="jpe"
        xmlns:jpt="http://glite.org/wsdl/types/jp">
 
+       <version>CVS revision: <![CDATA[ $Header$ ]]></version>
+
        <import namespace="http://glite.org/wsdl/services/jp" location="JobProvenanceTypes.wsdl"/>
 
+       <doc>
+               <para>
+               The Job Provenance (JP) Primary Storage Service is responsible
+               to keep the JP data
+               (definition of submitted jobs, execution conditions and environment,
+               and important points of the job life cycle) in a compact and
+               economic form.
+               </para>
+
+               <para>
+               The JP Primary storage, as described in section 8.4 of
+               the 
+               <ulink url="https://edms.cern.ch/document/594698/">
+               Architecture deliverable DJRA1.1 
+               </ulink>
+               provides public interfaces for data storing,
+               retrieval based on basic metadata, and registration of Index servers for
+               incremental feed.
+               </para>
+
+               <para>
+               Command interface to JP is completely covered by the WS interface covered here.
+               Bulk file transfers are done via specialised protocols, currently gsiftp only.
+               </para>
+       </doc>
+
        <fault name="genericFault"/>
 
        <operations>
                <op name="RegisterJob">
-                       <input name="job" type="xsd:string"></input>
-                       <input name="owner" type="xsd:string"></input>
-                       <fault name="genericFault" type="genericFault"></fault>
+                       Register job with the JP primary storage.
+                       <input name="job" type="xsd:string">Jobid of the registered job.</input>
+                       <input name="owner" type="xsd:string">Owner of the job (DN of X509 certificate).</input>
+                       <fault name="genericFault" type="genericFault">Any error.</fault>
                </op>
        
                <op name="StartUpload">
-                       <input name="job" type="xsd:string"></input>
-                       <input name="class" type="xsd:string"></input>
-                       <input name="name" type="xsd:string"></input>
-                       <input name="commitBefore" type="xsd:dateTime"></input>
-                       <input name="contentType" type="xsd:string"></input>
-                       <output name="destination" type="xsd:string"></output>
-                       <output name="commitBefore" type="xsd:dateTime"></output>
-                       <fault name="genericFault" type="genericFault"></fault>
+                       Start uploading a file.
+                       <input name="job" type="xsd:string">Jobid to which this file is related.</input>
+                       <input name="class" type="xsd:string">
+                               Type of the file (URI). The server must have a plugin handing this type.
+                       </input>
+                       <input name="name" type="xsd:string">Name of the file (used to distinguish among more files of the same type).</input>
+                       <input name="commitBefore" type="xsd:dateTime">The client promisses to finish the upload before this time.</input>
+                       <input name="contentType" type="xsd:string">MIME type of the file.</input>
+                       <output name="destination" type="xsd:string">URL where the client should upload the file.</output>
+                       <output name="commitBefore" type="xsd:dateTime">Server's view on when the upload must be finished.</output>
+                       <fault name="genericFault" type="genericFault">Any error.</fault>
                </op>
        
                <op name="CommitUpload">
-                       <input name="destination" type="xsd:string"></input>
-                       <fault name="genericFault" type="genericFault"></fault>
+                       Confirm a successfully finished file apload.
+                       <input name="destination" type="xsd:string">Destination URL returned by StartUpload before.</input>
+                       <fault name="genericFault" type="genericFault">Any error.</fault>
                </op>
        
                <op name="RecordTag">
-                       <input name="jobid" type="xsd:string"></input>
-                       <input name="tag" type="tagValue"></input>
-                       <fault name="genericFault" type="genericFault"></fault>
+                       Record an additional user tag.
+                       <input name="jobid" type="xsd:string">Job to which the tag is added.</input>
+                       <input name="tag" type="tagValue">Name and value of the tag.</input>
+                       <fault name="genericFault" type="genericFault">Any error.</fault>
                </op>
        
                <op name="FeedIndex">
-                       <input name="destination" type="xsd:string"></input>
-                       <input name="attributes" type="xsd:string" list="yes"></input>
-                       <input name="conditions" type="primaryQuery" list="yes"></input>
-                       <input name="history" type="xsd:boolean"></input>
-                       <input name="continuous" type="xsd:boolean"></input>
-                       <output name="feedId" type="xsd:string"></output>
-                       <output name="feedExpires" type="xsd:dateTime"></output>
-                       <fault name="genericFault" type="genericFault"></fault>
+                       Request for feeding a JP Index server (issued by this server).
+                       <input name="destination" type="xsd:string">Endpoint of the listening index server.</input>
+                       <input name="attributes" type="xsd:string" list="yes">Which attributes of jobs is the index server interested in.</input>
+                       <input name="conditions" type="primaryQuery" list="yes">Which jobs is the server interested in.</input>
+                       <input name="history" type="xsd:boolean">Data on jobs stored at PS in the past are required.</input>
+                       <input name="continuous" type="xsd:boolean">Data on jobs that will arrive in future are required.</input>
+                       <output name="feedId" type="xsd:string">Unique ID of the created feed session.</output>
+                       <output name="feedExpires" type="xsd:dateTime">When the session expires.</output>
+                       <fault name="genericFault" type="genericFault">Any error.</fault>
                </op>
        
                <op name="FeedIndexRefresh">
-                       <input name="feedId" type="xsd:string"></input>
-                       <output name="feedExpires" type="xsd:dateTime"></output>
-                       <fault name="genericFault" type="genericFault"></fault>
+                       Refresh an existing feed session.
+                       <input name="feedId" type="xsd:string">Existing feed session ID to be refreshed.</input>
+                       <output name="feedExpires" type="xsd:dateTime">New session expiration time.</output>
+                       <fault name="genericFault" type="genericFault">Any error.</fault>
                </op>
        
                <op name="GetJob">
-                       <input name="jobid" type="xsd:string"></input>
-                       <output name="files" type="jppsFile" list="yes" optional="yes"></output>
-                       <fault name="genericFault" type="genericFault"></fault>
+                       Return URL's of files for a given single job.
+                       <input name="jobid" type="xsd:string">The job.</input>
+                       <output name="files" type="jppsFile" list="yes" optional="yes">List of the stored files.</output>
+                       <fault name="genericFault" type="genericFault">Any error.</fault>
                </op>
        </operations>
 
index ebbede4..e04a4e7 100644 (file)
@@ -4,22 +4,26 @@
        ns="http://glite.org/wsdl/services/jp"
        typePrefix="jpt">
 
+       <version>CVS revision: <![CDATA[ $Header$ ]]></version>
+
        <types ns="http://glite.org/wsdl/types/jp">
 
                <enum name="queryOp">
+                       Operators used in queries. Most are self-explanatory.
                        <val name="EQUAL"></val>
                        <val name="UNEQUAL"></val>
                        <val name="LESS"></val>
                        <val name="GREATER"></val>
-                       <val name="WITHIN"></val>
+                       <val name="WITHIN">The attribute is between two specified values.</val>
                </enum>
 
                <struct name="tagValue">
-                       <elem name="name" type="xsd:string"></elem>
-                       <elem name="sequence" type="xsd:int" optional="yes"></elem>
-                       <elem name="timestamp" type="xsd:dateTime" optional="yes"></elem>
-                       <elem name="stringValue" type="xsd:string" optional="yes"></elem>
-                       <elem name="blobValue" type="xsd:base64Binary" optional="yes"></elem>
+                       A single value for a user tag.
+                       <elem name="name" type="xsd:string">Name of the tag.</elem>
+                       <elem name="sequence" type="xsd:int" optional="yes">Sequence of this value (if there are more occurences of this tag it may be used to order them.</elem>
+                       <elem name="timestamp" type="xsd:dateTime" optional="yes">When the tag was created.</elem>
+                       <elem name="stringValue" type="xsd:string" optional="yes">Value - printable string.</elem>
+                       <elem name="blobValue" type="xsd:base64Binary" optional="yes">Value - binary.</elem>
                </struct>
        
                <struct name="genericFault" fault="yes">
@@ -27,7 +31,7 @@
                        <elem name="code" type="xsd:int"></elem>
                        <elem name="text" type="xsd:string"></elem>
                        <elem name="description" type="xsd:string" optional="yes"></elem>
-                       <elem name="reason" type="jpt:genericFault" optional="yes"></elem>
+                       <elem name="reason" type="genericFault" optional="yes"></elem>
                </struct>
        
                <struct name="primaryQuery">
diff --git a/org.glite.jp.ws-interface/src/doc.xml b/org.glite.jp.ws-interface/src/doc.xml
new file mode 100644 (file)
index 0000000..78cb6a5
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<book/>
diff --git a/org.glite.jp.ws-interface/src/puke-ug.xsl b/org.glite.jp.ws-interface/src/puke-ug.xsl
new file mode 100644 (file)
index 0000000..ff70ccf
--- /dev/null
@@ -0,0 +1,156 @@
+<?xml version="1.0"?>
+
+<!-- $Header$ -->
+
+<xsl:stylesheet version="1.0"
+       xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output indent="yes" doctype-public="-//OASIS//DTD DocBook XML V4.4//EN"
+      doctype-system="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"/>
+
+<xsl:template match="book">
+       <chapter>
+               <title><xsl:value-of select="document('JobProvenancePS.xml')/service/@name"/></title>
+
+               <sect1>
+                       <title>Overview</title>
+                       <xsl:copy-of select="document('JobProvenancePS.xml')/service/doc/*"/>
+               </sect1>
+
+               <sect1>
+                       <title>Operations</title>
+                       <para> <emphasis><xsl:value-of select="document('JobProvenancePS.xml')/service/version"/></emphasis> </para>
+                               <!-- xsl:apply-templates select="operations/op" -->
+                               <xsl:apply-templates select="document('JobProvenancePS.xml')/service/operations/op">
+                                       <xsl:sort select="@name"/>
+                               </xsl:apply-templates>
+               </sect1>
+       
+               <sect1>
+                       <title>Types</title>
+                       <!--xsl:apply-templates select="types"/ -->
+                       <para> <emphasis><xsl:value-of select="document('JobProvenanceTypes.xml')/service/version"/></emphasis> </para>
+                       <xsl:apply-templates select="document('JobProvenanceTypes.xml')/service/types"/>
+               </sect1>
+       </chapter>
+</xsl:template>
+
+
+<xsl:template match="input|output|fault">
+       <varlistentry>
+               <term>
+                       <!--type-->
+                               <xsl:if test = "@list = 'yes'">list of </xsl:if>
+                               <xsl:choose>
+                                       <xsl:when test="not(starts-with(@type,'xsd:'))">
+                                               <link linkend="type:{@type}">
+                                                       <type><xsl:value-of select="@type "/> </type> </link>
+                                       </xsl:when>
+                                       <xsl:otherwise><type><xsl:value-of select="@type "/> </type> </xsl:otherwise>
+                               </xsl:choose>
+                       <!--/type-->
+                       <parameter> <xsl:value-of select=" @name"/></parameter>
+               </term>
+               <listitem>
+                       <simpara><xsl:value-of select="text()"/></simpara>
+               </listitem>
+       </varlistentry>
+</xsl:template>
+
+<xsl:template match="op" >
+       <sect2 id="op:{@name}">
+               <title><xsl:value-of select="@name"/></title>
+               <para><xsl:value-of select="text()"/></para>
+               <para>
+                       Inputs:
+                       <xsl:choose>
+                               <xsl:when test="count(./input)>0">
+                                       <variablelist>
+                                               <xsl:apply-templates select="./input"/>
+                                       </variablelist>
+                               </xsl:when>
+                               <xsl:otherwise>N/A</xsl:otherwise>
+                       </xsl:choose>
+               </para>
+               <para>
+                       Outputs:
+                       <xsl:choose>
+                               <xsl:when test="count(./output)>0">
+                                       <variablelist>
+                               <xsl:apply-templates select="./output"/>
+                                       </variablelist>
+                               </xsl:when>
+                               <xsl:otherwise>N/A</xsl:otherwise>
+                       </xsl:choose>
+               </para>
+       </sect2>
+</xsl:template>
+
+<xsl:template match="types">
+       <xsl:for-each select="flags|enum|struct|choice">
+               <xsl:sort select="@name"/>
+               <sect2 id="type:{@name}">
+                       <title> <xsl:value-of select="@name"/> </title>
+                       <para> <xsl:value-of select="text()"/> </para>
+                       <xsl:choose>
+                               <xsl:when test="name(.)='struct'">
+                                       <para> <emphasis>Structure</emphasis> (sequence complex type in WSDL)</para>
+                                       <para> Fields: ( <type>type </type> <structfield>name</structfield> description )</para>
+                               </xsl:when>
+                               <xsl:when test="name(.)='choice'">
+                                       <para> <emphasis>Union</emphasis> (choice complex type in WSDL)</para>
+                                       <para> Fields: ( <type>type </type> <structfield>name</structfield> description )</para>
+                               </xsl:when>
+                               <xsl:when test="name(.)='enum'">
+                                       <para> <emphasis>Enumeration</emphasis> (restriction of xsd:string in WSDL),
+                                               exactly one of the values must be specified.
+                                       </para>
+                                       <para> Values: </para>
+                               </xsl:when>
+                               <xsl:when test="name(.)='flags'">
+                                       <para> <emphasis>Flags</emphasis> (sequence of restricted xsd:string in WSDL),
+                                               any number of values can be specified together.
+                                       </para>
+                                       <para> Values: </para>
+                               </xsl:when>
+                       </xsl:choose>
+                       <variablelist>
+                               <xsl:for-each select="elem|val">
+                                       <varlistentry>
+                                               <term>
+                                                       <xsl:choose>
+                                                               <xsl:when test="name(.)='elem'">
+                                                                               <xsl:if test="@list = 'yes'">list of </xsl:if>
+                                                                               <xsl:choose>
+                                                                                       <xsl:when test="@type!='string' and @type!='int' and not(starts-with(@type,'xsd:'))">
+                                                                                               <link linkend="type:{@type}">
+                                                                                                       <type><xsl:value-of select="@type "/> </type>
+                                                                                               </link>
+                                                                                       </xsl:when>
+                                                                                       <xsl:otherwise><type><xsl:value-of select="@type "/></type></xsl:otherwise>
+                                                                               </xsl:choose>
+                                                                       <!-- <type><xsl:value-of select="@type"/></type> -->
+                                                                       <xsl:value-of select="' '"/>
+                                                                       <structfield><xsl:value-of select="@name"/></structfield>
+                                                               </xsl:when>
+                                                               <xsl:otherwise>
+                                                                       <constant><xsl:value-of select="@name"/></constant>
+                                                               </xsl:otherwise>
+                                                       </xsl:choose>
+                                               </term>
+                                               <listitem>
+                                                       <simpara>
+                                                               <xsl:if test="@optional = 'yes'"> (optional) </xsl:if>
+                                                               <!-- <xsl:if test="@list = 'yes'"> (multiple occurence) </xsl:if> -->
+                                                               <xsl:value-of select=" text()"/>
+                                                       </simpara>
+                                               </listitem>
+                                       </varlistentry>
+                               </xsl:for-each>
+                       </variablelist>
+               </sect2>
+       </xsl:for-each>
+</xsl:template>
+
+
+</xsl:stylesheet>