<?xml version="1.0" encoding="UTF-8" ?>

	<!--
	 ***************************************************************
	 * Licensed to the Apache Software Foundation (ASF) under one
	 * or more contributor license agreements.  See the NOTICE file
	 * distributed with this work for additional information
	 * regarding copyright ownership.  The ASF licenses this file
	 * to you under the Apache License, Version 2.0 (the
	 * "License"); you may not use this file except in compliance
	 * with the License.  You may obtain a copy of the License at
         *
	 *   http://www.apache.org/licenses/LICENSE-2.0
	 * 
	 * Unless required by applicable law or agreed to in writing,
	 * software distributed under the License is distributed on an
	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
	 * KIND, either express or implied.  See the License for the
	 * specific language governing permissions and limitations
	 * under the License.
	 ***************************************************************
   -->
   
<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
	<frameworkImplementation>org.apache.uima.java</frameworkImplementation>
	<primitive>false</primitive>

	<delegateAnalysisEngineSpecifiers>
		<delegateAnalysisEngine key="RoomNumber">
			<import location="../ex2/RoomNumberAnnotator.xml" />
		</delegateAnalysisEngine>

		<delegateAnalysisEngine key="DateTime">
			<import location="../ex3/TutorialDateTime.xml" />
		</delegateAnalysisEngine>

		<delegateAnalysisEngine key="Meeting">
			<import location="MeetingAnnotator.xml" />
		</delegateAnalysisEngine>
	</delegateAnalysisEngineSpecifiers>
	
    <flowController key="FlowController">
       <import location="../../flow/AdvancedFixedFlowController.xml" /> 
    </flowController>
	
 	<analysisEngineMetaData>
		<name>Meeting Detector TAE</name>
		<description>Detects Room Numbers, Times, and Dates in text, and annotates the
			combination of all three as a meeting.</description>

	    <configurationParameters>
	       <configurationParameter>
        	  <name>Flow</name>
        	  <description> Specifies the flow. This is an array of strings where each string is either a single Analysis
           		Engine key or a comma-separated list of Analysis Engine keys that should be executed in parallel.
          	  </description>
        	  <type>String</type>
              <multiValued>true</multiValued>
              <mandatory>true</mandatory>
              <overrides>
                 <parameter>FlowController/Flow</parameter>
              </overrides>
        </configurationParameter>
	    
	      <configurationParameter>
	        <name>AllowContinueOnFailure</name>
	        <description>Specifies for which AnalysisEngines the Flow should continue when an exception occurs.</description>
	        <type>String</type>
	        <multiValued>true</multiValued>
	        <mandatory>false</mandatory>
	        <overrides>
	          <parameter>FlowController/AllowContinueOnFailure</parameter>
	        </overrides>
	      </configurationParameter>

	      <configurationParameter>
	        <name>ExceptionsToIgnore</name>
	        <description>Specifies which exceptions to ignore.</description>
	        <type>String</type>
	        <multiValued>true</multiValued>
	        <mandatory>false</mandatory>
	        <overrides>
	          <parameter>FlowController/ExceptionsToIgnore</parameter>
	        </overrides>
	      </configurationParameter>

	    </configurationParameters>
	    
	    <configurationParameterSettings>
          <!-- This specifies the flow -->
          <nameValuePair>
           <name>Flow</name>
            <value>
               <array>
                 <string>RoomNumber</string>
                 <string>DateTime</string>
                 <string>Meeting</string>
               </array>
            </value>
          </nameValuePair>
	    
	      <nameValuePair>
	        <name>AllowContinueOnFailure</name>
	        <value>
	          <array>
	            <string>RoomNumber</string>
	          </array>
	        </value>
	      </nameValuePair>

	      <nameValuePair>
	        <name>ExceptionsToIgnore</name>
	        <value>
	          <array>
	            <string>org.apache.uima.aae.error.MessageTimeoutException</string>
	            <string>org.apache.uima.aae.error.ForcedMessageTimeoutException</string>
	          </array>
	        </value>
	      </nameValuePair>

	    </configurationParameterSettings>

		
		<flowConstraints>
			<fixedFlow>
				<node>RoomNumber</node>
				<node>DateTime</node>
				<node>Meeting</node>
			</fixedFlow>
		</flowConstraints>

		
		<capabilities>
			<capability>
				<inputs/>
				<outputs>
					<type allAnnotatorFeatures="true">
						org.apache.uima.tutorial.Meeting</type>
					<type allAnnotatorFeatures="true">
						org.apache.uima.tutorial.RoomNumber</type>
					<type allAnnotatorFeatures="true">
						org.apache.uima.tutorial.DateAnnot</type>
					<type allAnnotatorFeatures="true">
						org.apache.uima.tutorial.TimeAnnot</type>
				</outputs>
				<languagesSupported>
					<language>en</language>
				</languagesSupported>
			</capability>
		</capabilities>
		<operationalProperties>
			<modifiesCas>true</modifiesCas>
			<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
			<outputsNewCASes>false</outputsNewCASes>
		</operationalProperties>
	</analysisEngineMetaData>
</analysisEngineDescription>
