<?xml version="1.0" encoding="UTF-8"?>
<schema
	targetNamespace="http://www.eclipse.org/hyades/schema/Outputter.xsd"
	xmlns:op="http://www.eclipse.org/hyades/schema/Outputter.xsd"
	xmlns:pu="http://www.eclipse.org/hyades/schema/ProcessUnit.xsd"
	xmlns="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified">
	<annotation>
	  <documentation xml:lang="en">
	    Copyright (c) 2003 Hyades project.
		All rights reserved.   This program and the accompanying materials
		are made available under the terms of the Common Public License v1.0
		which accompanies this distribution, and is available at
		http://www.eclipse.org/legal/cpl-v10.html
	  </documentation>
	 </annotation>
	<import
		namespace="http://www.eclipse.org/hyades/schema/ProcessUnit.xsd"
		schemaLocation="ProcessUnit.xsd" />
	<complexType name="OutputterConfigType">
		<annotation>
			<documentation>
				An outputter takes an object and writes it out to some destination.
				Depending on the type of outputter, the destination and parameters 
				are specified in attributes.
			</documentation>
		</annotation>
		<choice>
			<element
				ref="op:SingleFileOutputterType"
				maxOccurs="1"
				minOccurs="1" />
			<element
				ref="op:StandardOutOutputterType"
				maxOccurs="1"
				minOccurs="1" />
			<element
				ref="op:LoggingAgentOutputterType"
				maxOccurs="1"
				minOccurs="1" />
			<element
				ref="op:NotificationOutputterType"
				maxOccurs="1"
				minOccurs="1" />
		</choice>
		<attributeGroup ref="pu:ProcessUnitAttributes" />
		<attribute
			name="type"
			type="op:OutputterType"
			use="required" />
	</complexType>
	<element name="SingleFileOutputterType">
		<annotation>
			<documentation>
				A single file outputter directs data to a given file in 
				a given directory.
			</documentation>
		</annotation>	
		<complexType>
			<attribute
				name="directory"
				type="string"
				use="required" />
			<attribute
				name="fileName"
				type="string"
				use="required" />
		</complexType>
	</element>	
	<element name="StandardOutOutputterType">
		<annotation>
			<documentation>
				A simple outputter to direct data to standard out.
			</documentation>
		</annotation>
		<complexType></complexType>
	</element>
	<element name="LoggingAgentOutputterType">
		<annotation>
			<documentation>
				A logging agent outputter directs data to a given 
				logging agent. The waitUntilLoggingTime is the time 
				in milliseconds to wait	for the agent to be monitored.
			</documentation>
		</annotation>
		<complexType>
			<attribute
				name="agentName"
				type="string"
				use="required" />
			<attribute
				name="waitUntilLoggingTime"
				type="string"
				use="optional" />
		</complexType>
	</element>	
	<element name="NotificationOutputterType">
		<annotation>
			<documentation>
				An outputter which directs data to a Notification Source. 
			</documentation>
		</annotation>	
		<complexType>
			<attribute
				name="resourceURL"
				type="string"
				use="required" />
		</complexType>
	</element>	
	<simpleType name="OutputterType">
		<annotation>
			<documentation>
				The basic outputter types that are understood
			</documentation>
		</annotation>
		<restriction base="NCName">
			<!--
				A simple outputter to direct output to standard out
			-->
			<enumeration value="StandardOutOutputter" />
			<!--
				A simple outputter to direct output to a single file
			-->
			<enumeration value="SingleFileOutputter" />
			<!--
				An outputter to direct output to a logging agent
			-->
			<enumeration value="LoggingAgentOutputter" />
			<!--
				An outputter to direct output to a Notification source
			-->
			<enumeration value="NotificationOutputter" />
			<!--
				The role of undeclared component role is to allow a context to exploit components not as yet standardized.
			-->
			<enumeration value="undeclared" />
		</restriction>
	</simpleType>
</schema>
