blob: 06794e858f8f638320b7f57bea1624df263e7a3d [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://schemas.niku.com/2002/service" xmlns="http://schemas.niku.com/2002/service" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="typeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="xbl"/>
<xsd:enumeration value="pmd"/>
<xsd:enumeration value="wsil"/>
<xsd:enumeration value="xmlFile"/>
<xsd:enumeration value="java"/>
<xsd:enumeration value="data"/>
<xsd:enumeration value="xsl"/>
<xsd:enumeration value="rss"/>
<xsd:enumeration value="htmlData"/>
<xsd:enumeration value="nsql"/>
<xsd:enumeration value="odf"/>
<xsd:enumeration value="odfUpdate"/>
<xsd:enumeration value="odfDelete"/>
<xsd:enumeration value="jbl"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="stateType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="init"/>
<xsd:enumeration value="put"/>
<xsd:enumeration value="get"/>
<xsd:enumeration value="getMergePut"/>
<xsd:enumeration value="merge"/>
<xsd:enumeration value="clear"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="transactionType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="none"/>
<xsd:enumeration value="dbTransaction"/>
<xsd:enumeration value="userTransaction"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="XSDType">
<xsd:annotation>
<xsd:documentation xml:lang="en"/>
</xsd:annotation>
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="type" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="service" abstract="true">
<xsd:annotation>
<xsd:documentation xml:lang="en"/>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="bindings" type="BindingsType" minOccurs="0"/>
<xsd:element name="caches" type="CachesType" minOccurs="0"/>
<xsd:element name="sessionHandler" type="SessionHandlerType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="request" type="XSDType" minOccurs="0" maxOccurs="1"/>
<xsd:element name="response" type="XSDType" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="xsd" type="xsd:string" use="optional"/>
<xsd:attribute name="type" type="typeType" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Identifies the type of namespace being used for this description, e.g.
xbl - Niku's XBL files
pmd - Niku's PMD files
wsil - W3C's WSIL files
xmlFile - xml file located on the harddrive
java - java class supporting ServiceControlBinding interface
data - take the input XML, validate it and then return it to the client.
xsl - transform the input XML via the supplied XSL
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="componentId" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">ComponentId of the service.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="description" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Location of the description XML file.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="validation" type="xsd:string">
<xsd:annotation>
<xsd:documentation xml:lang="en">Location of the Data Validation XML file used for complex field validation.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="dynamicValidation" type="xsd:string">
<xsd:annotation>
<xsd:documentation xml:lang="en"/>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="resource" type="xsd:string">
<xsd:annotation>
<xsd:documentation xml:lang="en">Location of any resource bundles that should be used by the service.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="sessionKey" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Unique session identifier used to retreive the state information for the service.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="sessionId" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Deprecated. Use sessionKey.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="state" type="stateType" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Specifies the session state for the services that require state information to persist across multiple service calls.
init - is the default state and has no interaction with the cache whatsoever.
put - Places the input document within the cache prior to any service processing.
get - Retrieves the cached document from the cache and merges it (the body section only, NOT the header section ) into the input document. Again prior to any service processing.
getMergePut - Retrieves the cached document from the cache and merges it (the body section only, NOT the header section ) into the input document and then places the new version
of the document back into the cache. Again prior to any service processing.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="retrieveService">
<xsd:annotation>
<xsd:documentation xml:lang="en">
This is used for services that retrieve XML.
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="service">
<xsd:attribute name="transaction" type="transactionType" use="optional" default="none">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Specifies the transaction state for the services that require transactions.
none - no transaction is required.
dbTransaction - database transaction is required, e.g. set autoCommit = false on a JDBC connection.
userTransaction - JTA/JTS UserTransaction is required.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="processService">
<xsd:annotation>
<xsd:documentation xml:lang="en">
This is used for services that process XML.
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="service">
<xsd:attribute name="transaction" type="transactionType" use="optional" default="dbTransaction">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Specifies the transaction state for the services that require transactions.
none - no transaction is required.
dbTransaction - database transaction is required, e.g. set autoCommit = false on a JDBC connection.
userTransaction - JTA/JTS UserTransaction is required.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="BindingsType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a list of service bindings.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="binding" type="BindingType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BindingType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a reference to the service binding.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="location" type="xsd:string"/>
<xsd:attribute name="componentId" type="xsd:string">
<xsd:annotation>
<xsd:documentation xml:lang="en">The component in which the binding file is located. If not specified, it will default to the componentId of the service</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="CachesType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a list of caches that should be cleared after the service has been executed.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="cache" type="CacheType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CacheType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies a cache or a specific element in a cache to be cleared. If netiher cacheKey nor cacheKeyLocation is specified all caches will be cleared. The location attributes are XPath expressions that point to a Node Set in the output document of the service call.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="cacheKey" type="xsd:string" use="optional"/>
<xsd:attribute name="cacheKeyLocation" type="xsd:string" use="optional"/>
<xsd:attribute name="key" type="xsd:string" use="optional"/>
<xsd:attribute name="keyLocation" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="SessionHandlerType">
<xsd:annotation>
<xsd:documentation xml:lang="en"></xsd:documentation>
</xsd:annotation>
<xsd:attribute name="state" type="stateType" use="required"/>
<xsd:attribute name="select" type="xsd:string" use="optional"/>
<xsd:attribute name="test" type="xsd:string" use="optional"/>
<xsd:attribute name="default" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:schema>