<?xml version="1.0" encoding="UTF-8"?>
<!-- edited by Cui Lin on 26/11/08 -->
<!-- 编辑使用 XMLSpy v2006 U (http://www.altova.com) 由 any (any) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
	<xs:element name="taskRun" type="taskRun_XMLElementType"/>
	<xs:complexType name="taskRun_XMLElementType">
		<xs:sequence>
			<xs:element name="taskRunInterface" type="taskRunInterface_XMLElementType"/>
			<xs:element ref="taskComponent"/>
			<xs:element name="bindings" type="bindings_XMLElementType"/>
		</xs:sequence>
		<xs:attribute name="version" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="taskRunInterface_XMLElementType">
		<xs:sequence>
			<xs:element name="taskTemplate_ID" type="xs:int"/>
			<xs:element name="taskComponent_ID" type="xs:int"/>
			<xs:element name="taskInstance_ID" type="xs:int"/>
			<xs:element name="workflowRun_ID" type="xs:int"/>
			<xs:element name="taskRun_State" type="xs:string"/>
			<xs:element name="inputPorts" type="inputPorts_XMLElementType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="outputPorts" type="outputPort_XMLElementType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:int" use="required"/>
	</xs:complexType>
	<xs:complexType name="inputPorts_XMLElementType">
		<xs:sequence>
			<xs:element name="port" type="port_XMLElementType" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="number" type="xs:NMTOKEN" use="required"/>
	</xs:complexType>
	<xs:complexType name="outputPort_XMLElementType">
		<xs:sequence>
			<xs:element name="port" type="port_XMLElementType" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="number" type="xs:int" use="required"/>
	</xs:complexType>
	<xs:complexType name="port_XMLElementType">
		<xs:sequence>
			<xs:element name="portType" type="xs:string"/>
			<xs:element name="portDescription" type="xs:string" minOccurs="0"/>
			<xs:element name="defaultPortValue" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
		<xs:attribute name="default" type="xs:NMTOKEN" use="optional"/>
	</xs:complexType>
	<xs:element name="taskComponent">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="taskType">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="WebService"/>
							<xs:enumeration value="WindowsApplication"/>
							<xs:enumeration value="UnixApplication"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:choice>
					<xs:group ref="WebServiceGroup"/>
					<xs:group ref="WindowsApplicationGroup"/>
					<xs:group ref="UnixApplicationGroup"/>
				</xs:choice>
				<xs:element name="taskInvocation" type="taskInvocation_XMLElementType"/>
				<xs:element name="inputs" type="inputs_XMLElementType"/>
				<xs:element name="outputs" type="outputs_XMLElementType"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
			<xs:attribute name="default" type="xs:NMTOKEN" use="required"/>
			<xs:attribute ref="role" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:attribute name="role">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="Yes"/>
				<xs:enumeration value="No"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<xs:group name="WebServiceGroup">
		<xs:sequence>
			<xs:element name="wsdlURI" type="xs:string"/>
			<xs:element name="serviceName" type="xs:string"/>
			<xs:element name="operationName" type="xs:string"/>
		</xs:sequence>
	</xs:group>
	<xs:group name="WindowsApplicationGroup">
		<xs:sequence>
			<xs:element name="executable" type="xs:string"/>
			<xs:element name="appName" type="xs:string"/>
		</xs:sequence>
	</xs:group>
	<xs:group name="UnixApplicationGroup">
		<xs:sequence>
			<xs:element name="directory" type="xs:string"/>
			<xs:element name="appName" type="xs:string"/>
		</xs:sequence>
	</xs:group>
	<xs:complexType name="taskInvocation_XMLElementType">
		<xs:sequence>
			<xs:element name="operatingSystem">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="Windows"/>
						<xs:enumeration value="UNIX"/>
						<xs:enumeration value="LINUX"/>
						<xs:enumeration value="MAC"/>
						<xs:enumeration value="Unknown"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="invocationMode">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="Yes"/>
						<xs:enumeration value="No"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="interactionMode">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="Local"/>
						<xs:enumeration value="Remote"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element ref="invocationAuthentication" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="invocationAuthentication">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="hostName" type="xs:string"/>
				<xs:element name="userName" type="xs:string"/>
				<xs:element name="password" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="inputs_XMLElementType">
		<xs:sequence>
			<xs:element ref="input" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="outputs_XMLElementType">
		<xs:sequence>
			<xs:element ref="output" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="input">
		<xs:complexType>
			<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
			<xs:attribute name="mode" type="xs:string" use="required"/>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="type" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="output">
		<xs:complexType>
			<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
			<xs:attribute name="mode" type="xs:string" use="required"/>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="type" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="bindings_XMLElementType">
		<xs:sequence>
			<xs:element name="data_inputport_binding" type="binding_XMLElementType" maxOccurs="unbounded"/>
			<xs:element name="data_input_binding" type="binding_XMLElementType" maxOccurs="unbounded"/>
			<xs:element name="output_data_binding" type="binding_XMLElementType" maxOccurs="unbounded"/>
			<xs:element name="data_outputport_binding" type="binding_XMLElementType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="binding_XMLElementType">
		<xs:attribute name="from" type="xs:string" use="required"/>
		<xs:attribute name="to" type="xs:string" use="required"/>
		<xs:attribute name="timestamp" type="xs:string" use="required"/>
		<xs:attribute name="dataValue" type="xs:string" use="required"/>
	</xs:complexType>
</xs:schema>
