<?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="TestMultiplier">
      <import location="../multiplier/SimpleCasGenerator.xml"/>
    </delegateAnalysisEngine>


    <delegateAnalysisEngine key="MeetingDetectorAggregate">
      <import location="SimpleTestAggregateCasMultiplier.xml"/>
    </delegateAnalysisEngine>
  </delegateAnalysisEngineSpecifiers>
  <analysisEngineMetaData>
    <name>Complex Top Level Aggregate TAE</name>
    <description>Detects Meetings and Room Numbers</description>
    <configurationParameters/>
    <configurationParameterSettings/>
    <flowConstraints>
      <fixedFlow>
      
        <node>TestMultiplier</node>
        <node>MeetingDetectorAggregate</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>true</outputsNewCASes>
	</operationalProperties>
  </analysisEngineMetaData>
</analysisEngineDescription>
