<?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="TopLevelTestMultiplier">
      <import location="../multiplier/SimpleCasGeneratorWith1MillionDocs.xml"/>
    </delegateAnalysisEngine>


    <delegateAnalysisEngine key="FailingAggregateCM">
      <import location="SimpleTestAggregateCMWithFailedDelegate.xml"/>
    </delegateAnalysisEngine>

  </delegateAnalysisEngineSpecifiers>
  <analysisEngineMetaData>
    <name>Complex Top Level Aggregate TAE</name>
    <description>Detects Meetings and Room Numbers</description>
    <configurationParameters/>
    <configurationParameterSettings/>
    <flowConstraints>
      <fixedFlow>
      
        <node>TopLevelTestMultiplier</node>
        <node>FailingAggregateCM</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>
