<?xml version = "1.0" encoding = "utf-8"?>
<xs:schema xmlns="com.ramco.visualwf" targetNamespace="com.ramco.visualwf" xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!--Root Node-->
	<xs:element name="areainfo">
		<xs:annotation>
			<xs:documentation>
				"areainfo" is the root node
				"@total" has the total number of records (Used for paging)
				"@success" contains true/false
				"@message" contains any error message to be returned to client

				It contains 0 or more "Area" nodes
			</xs:documentation>
		</xs:annotation>

		<xs:complexType>
			<xs:sequence>
				<xs:element name="ar" type="Area" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="total" type="xs:string" use="required"/>
			<xs:attribute name="success" type="EnumTrueFalse" use="required"/>
			<xs:attribute name="message" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>

	<!--Complex Types-->
	<xs:complexType name="Area">
		<xs:annotation>
			<xs:documentation>
				"@n" contains area name
				"@d" contains area description
				"actions" contains 0 or more Action nodes. Action of type "NOTMESSAGE" should appear only once and as the last action.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="actions" minOccurs="1" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="ac" type="Action" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="n" type="xs:string" use="required"/>
		<xs:attribute name="d" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="Action">
		<xs:annotation>
			<xs:documentation>
				"@n" contains action name. For Define Authorization Process it is CAT Key.
				For Define Messages, it is hard-coded as -1234.
				"@d" contains action description. For t=AUTHPROCESS it is [Configure - ] + [Task Desc(Cat Key)].
				For t=NOTMESSAGE, it is [Configure - Notification Messages].
				"@t" contains an action type as specified in ActionType enumeration.
				"@cn" contains component name.
				"@an" contains activity name.
				"@tn" contains task name.
			</xs:documentation>
		</xs:annotation>
		<xs:attribute name="n" type="xs:string" use="required"/>
		<xs:attribute name="d" type="xs:string" use="required"/>
		<xs:attribute name="t" type="ActionType" use="required"/>
		<xs:attribute name="cn" type="xs:string" use="required"/>
		<xs:attribute name="an" type="xs:string" use="required"/>
		<xs:attribute name="tn" type="xs:string" use="required"/>
	</xs:complexType>

	<!--Enumerations-->
	<xs:simpleType name="EnumTrueFalse">
		<xs:annotation>
			<xs:documentation>
				EnumTrueFalse Enumeration
				"true" Request processed successfully
				"false" Request processed with failure
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="true" />
			<xs:enumeration value="false" />
		</xs:restriction>
	</xs:simpleType>	
	<xs:simpleType name="ActionType">
		<xs:annotation>
			<xs:documentation>
				ActionType Enumeration
				"AUTHPROCESS" denotes "Define Authorization Process"
				"NOTMESSAGE" denotes "Define Notification Messages"
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="AUTHPROCESS" />
			<xs:enumeration value="NOTMESSAGE" />
		</xs:restriction>
	</xs:simpleType>	
</xs:schema>