blob: 9921a4808a2d105d3a4a98f8c69a92ce4c71f89d [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
/***********************************************************************************************************************
* Copyright (c) 2008 empolis GmbH and brox IT Solutions GmbH. All rights reserved. This program and the accompanying
* materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Ivan Churkin (brox IT Solutions GmbH) - initial creator
**********************************************************************************************************************/
-->
<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.eclipse.org/smila/queue"
xmlns="http://www.eclipse.org/smila/queue"
>
<xs:complexType name="PropertyType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="BrokerConnectionType">
<xs:sequence>
<xs:element name="URL" type="xs:string"/>
<xs:element name="User" type="xs:string"/>
<xs:element name="Password" type="xs:string"/>
<xs:element name="ConnectionFactory" type="xs:string"/>
<xs:element name="ConnectionProperty" minOccurs="0" maxOccurs="unbounded" type="PropertyType"/>
</xs:sequence>
<xs:attribute name="Id" type="xs:string"/>
</xs:complexType>
<xs:complexType name="QueueConnectionType">
<xs:attribute name="BrokerId" type="xs:string"/>
<xs:attribute name="Queue" type="xs:string"/>
</xs:complexType>
<xs:complexType name="ProcessType">
<xs:attribute name="Workflow" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="SendType">
<xs:complexContent>
<xs:extension base="QueueConnectionType">
<xs:sequence>
<xs:element name="SetProperty" minOccurs="0" maxOccurs="unbounded" type="PropertyType"/>
</xs:sequence>
<xs:attribute name="RecordFilter" type="xs:string" use="optional"/>
<xs:attribute name="PersistentDelivery" type="xs:boolean" use="optional" default="true"/>
<xs:attribute name="WithAttachments" type="xs:boolean" use="optional" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="TaskListType" abstract="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element name="Process" type="ProcessType"/>
<xs:element name="Send" type="SendType"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="BlackboardSync" type="xs:boolean" use="optional" default="true"/>
</xs:complexType>
<xs:complexType name="RouterTaskListType">
<xs:complexContent>
<xs:extension base="TaskListType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ListenerTaskListType">
<xs:complexContent>
<xs:extension base="TaskListType">
<xs:attribute name="InitiallySet" type="xs:boolean" use="optional" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="RecordRecyclerTaskListType">
<xs:complexContent>
<xs:extension base="TaskListType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="BaseRuleType" abstract="true">
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="RouterRuleType">
<xs:complexContent>
<xs:extension base="BaseRuleType">
<xs:sequence>
<xs:element name="Condition" type="xs:string"/>
<xs:element name="Task" type="RouterTaskListType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ListenerRuleType">
<xs:complexContent>
<xs:extension base="BaseRuleType">
<xs:sequence>
<xs:element name="Source" type="QueueConnectionType"/>
<xs:element name="Condition" type="xs:string"/>
<xs:element name="Task" type="ListenerTaskListType"/>
</xs:sequence>
<xs:attribute name="Threads" type="xs:int" use="optional" default="1"/>
<!-- timeout in seconds -->
<xs:attribute name="WaitMessageTimeout" type="xs:int" use="optional" default="1"/>
<xs:attribute name="MaxMessageBlockSize" type="xs:int" use="optional" default="1"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="RecordRecyclerRuleType">
<xs:complexContent>
<xs:extension base="BaseRuleType">
<xs:sequence>
<xs:element name="Condition" type="xs:string"/>
<xs:element name="Task" type="RecordRecyclerTaskListType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- CONNECTIONS ROOT -->
<xs:complexType name="ConnectionsConfigType">
<xs:sequence>
<xs:element name="ConnectionConfig" type="BrokerConnectionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="QueueWorkerConnectionsConfig" type="ConnectionsConfigType"/>
<!-- ROUTER ROOT -->
<xs:complexType name="RouterConfigType">
<xs:sequence>
<xs:element name="Rule" type="RouterRuleType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="QueueWorkerRouterConfig" type="RouterConfigType"/>
<!-- LISTENER ROOT -->
<xs:complexType name="ListenerConfigType">
<xs:sequence>
<xs:element name="Rule" type="ListenerRuleType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="QueueWorkerListenerConfig" type="ListenerConfigType"/>
<!-- RecordRecycler ROOT -->
<xs:complexType name="RecordRecyclerConfigType">
<xs:sequence>
<xs:element name="Rule" type="RecordRecyclerRuleType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="QueueWorkerRecordRecyclerJob" type="RecordRecyclerConfigType"/>
</xs:schema>