<node>
<properties>
<!-- This updates the property value -->
<property key="xxxx">new value</property>
<!-- This sets the property value to an empty string -->
<property key="yyyy"/>
<!-- This deletes the property -->
<property key="zzzz" xsi:nill="true"/>
</properties>
</node>
Operation can change all editable properties|elements of a node, including elements of an extended node type.
<PropertyDescriptor readonly="true|false">
<key>xxxx</key>
<description>
Text description of the property
</description>
</PropertyDescriptor>
To make it easier for UI to decide which properties are editable, also added editable attribute to node properties.
<node>
<properties>
<property key="xxxx" editable="true|false">string value</property>
<property key="yyyy" editable="true|false">string value</property>
</properties>
</node>
<!--+
| The base class for all data nodes.
| The data transfer methods operate at this level.
+-->
<complexType name="DataNodeType">
<xsd:extension base="Node">
....
<xsi:attribute name="busy" value="true|false"/>
</xsd:extension>
</complexType>
Need to check syntax of XSD.
Note - it is possible that a node may change from ready => busy => ready if underlying system is performing housekeeping.
e.g. re-indexing DB or refactoring underlying filesystem
<!--+
| The base class for all node types.
+-->
<complexType name="NodeType">
....
</complexType>
<!--+
| The base class for all data nodes.
| The data transfer methods operate at this level.
+-->
<complexType name="DataNodeType">
<xsd:extension base="one-zero:NodeType">
....
</xsd:extension>
</complexType>
<!--+
| A placeholder class to indicate unstructured data.
| No additional elements.
+-->
<complexType name="UnstructuredDataType">
<xsd:extension base="one-zero:DataNodeType">
....
</xsd:extension>
</complexType>
<!--+
| A class to represent structured data.
| Additional elements TBD.
+-->
<complexType name="StructuredDataType">
<xsd:extension base="one-zero:DataNodeType">
....
</xsd:extension>
</complexType>
Namespace changes for new node types, reflecting service version.
<!--+
| A new type specific to 1.1 service contract.
+-->
<complexType name="TablularDataType">
<xsd:extension base="one-zero:StructuredDataType">
....
<xsd:element name="struct">
....
</xsd:element>
</xsd:extension>
</complexType>
Which would result in the following message XML for a 1.1 service.
<one-zero:node uri="xxx" status="ready" xsi:type="one-one:TablularDataType">
....
<one-one:struct> ... </one-one:struct>
</one-zero:node>
Which can be extended further in 1.2
<!--+
| A new type specific to 1.2 service contract.
+-->
<complexType name="CustomTablularDataType">
<xsd:extension base="one-one:TablularDataType">
....
<xsd:element name="custom">
....
</xsd:element>
</xsd:extension>
</complexType>
Which would result in the following message XML for a 1.2 service.
<one-zero:node uri="xxx" status="ready" xsi:type="one-two:CustomTablularDataType">
....
<one-one:struct> ... </one-one:struct>
<one-two:custom> ... </one-two:custom>
</one-zero:node>
At a major version number we can fold things back into the main spec.
<two-zero:node uri="xxx" status="ready" xsi:type="two-zero:CustomTablularDataType">
....
<struct> ... </struct>
<custom> ... </custom>
</one-zero:node>
<node uri="vos://[xxxx]/yyyy/zzzz" xsi:type="">
<properties>
<property key="xxxx" editable="true|false">string value</property>
<property key="yyyy" editable="true|false">string value</property>
</properties>
</node>
![]() |
Click here for the AstroGrid Service Web |
This is the AstroGrid Development Wiki |
|