<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mediators="http://www.entaxy.ru/schemas/entaxy-mediators/1.0" xmlns:camel="http://camel.apache.org/schema/blueprint" targetNamespace="http://www.entaxy.ru/schemas/entaxy-mediators/1.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://camel.apache.org/schema/blueprint" schemaLocation="camel-entaxy.xsd"/>
	<xs:element name="operation-router">
		<xs:annotation>
			<xs:documentation>Comment describing your root element</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="operation" type="mediators:TServiceNamedOperation" maxOccurs="unbounded"/>
				<xs:element name="unknown-operation" type="mediators:TServiceOperation" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="TServiceOperation">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="camel:onException"/>
				<xs:element ref="camel:when"/>
				<xs:element ref="camel:onCompletion"/>
				<xs:element ref="camel:intercept"/>
				<xs:element ref="camel:interceptFrom"/>
				<xs:element ref="camel:interceptSendToEndpoint"/>
				<xs:element ref="camel:to"/>
				<xs:element ref="camel:toD"/>
				<xs:element ref="camel:route"/>
				<xs:element ref="camel:aggregate"/>
				<xs:element ref="camel:bean"/>
				<xs:element ref="camel:doCatch"/>
				<xs:element ref="camel:choice"/>
				<xs:element ref="camel:otherwise"/>
				<xs:element ref="camel:circuitBreaker"/>
				<xs:element ref="camel:claimCheck"/>
				<xs:element ref="camel:convertBodyTo"/>
				<xs:element ref="camel:delay"/>
				<xs:element ref="camel:dynamicRouter"/>
				<xs:element ref="camel:enrich"/>
				<xs:element ref="camel:filter"/>
				<xs:element ref="camel:doFinally"/>
				<xs:element ref="camel:idempotentConsumer"/>
				<xs:element ref="camel:inOnly"/>
				<xs:element ref="camel:inOut"/>
				<xs:element ref="camel:loadBalance"/>
				<xs:element ref="camel:log"/>
				<xs:element ref="camel:loop"/>
				<xs:element ref="camel:marshal"/>
				<xs:element ref="camel:multicast"/>
				<xs:element ref="camel:onFallback"/>
				<xs:element ref="camel:pipeline"/>
				<xs:element ref="camel:policy"/>
				<xs:element ref="camel:pollEnrich"/>
				<xs:element ref="camel:process"/>
				<xs:element ref="camel:recipientList"/>
				<xs:element ref="camel:removeHeader"/>
				<xs:element ref="camel:removeHeaders"/>
				<xs:element ref="camel:removeProperties"/>
				<xs:element ref="camel:removeProperty"/>
				<xs:element ref="camel:resequence"/>
				<xs:element ref="camel:rollback"/>
				<xs:element ref="camel:routingSlip"/>
				<xs:element ref="camel:saga"/>
				<xs:element ref="camel:sample"/>
				<xs:element ref="camel:script"/>
				<xs:element ref="camel:setBody"/>
				<xs:element ref="camel:setExchangePattern"/>
				<xs:element ref="camel:setHeader"/>
				<xs:element ref="camel:setProperty"/>
				<xs:element ref="camel:sort"/>
				<xs:element ref="camel:split"/>
				<xs:element ref="camel:step"/>
				<xs:element ref="camel:stop"/>
				<xs:element ref="camel:threads"/>
				<xs:element ref="camel:throttle"/>
				<xs:element ref="camel:throwException"/>
				<xs:element ref="camel:transacted"/>
				<xs:element ref="camel:transform"/>
				<xs:element ref="camel:doTry"/>
				<xs:element ref="camel:unmarshal"/>
				<xs:element ref="camel:validate"/>
				<xs:element ref="camel:whenSkipSendToEndpoint"/>
				<xs:element ref="camel:wireTap"/>
				<xs:element ref="camel:serviceCall"/>
				<xs:any namespace="http://www.entaxy.ru/schemas/entaxy-mediators/1.0"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TServiceNamedOperation">
		<xs:complexContent>
			<xs:extension base="mediators:TServiceOperation">
				<xs:attribute name="name" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="service-connector">
		<xs:complexType>
			<xs:attribute name="direction" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="in"/>
						<xs:enumeration value="out"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
</xs:schema>
