<?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="NoOp">
      <import location="NoOpAnnotatorWithExceptionOn5thCAS.xml"/>
    </delegateAnalysisEngine>
  
      <delegateAnalysisEngine key="NoOp2">
      <import location="NoOpAnnotator2.xml"/>
    </delegateAnalysisEngine>


  </delegateAnalysisEngineSpecifiers>
  
    <flowController key="AdvancedFixedFlowController">
       <import location="../flow/AdvancedFixedFlowController.xml"/>
    </flowController>
  
  <analysisEngineMetaData>
    <name>Test Aggregate TAE</name>
    <description>Detects Nothing</description>
    <configurationParameters>
    
      <configurationParameter>
        <name>Flow</name>
        <description>Specifies the flow</description>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>true</mandatory>
        <overrides>
          <parameter>AdvancedFixedFlowController/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>AdvancedFixedFlowController/AllowContinueOnFailure</parameter>
        </overrides>
      </configurationParameter>
    </configurationParameters>
    
    <configurationParameterSettings>
      <nameValuePair>
        <name>Flow</name>
        <value>
          <array>
            <string>TestMultiplier</string>
            <string>NoOp</string>
            <string>NoOp2</string>
          </array>
        </value>
      </nameValuePair>
      <nameValuePair>
        <name>AllowContinueOnFailure</name>
        <value>
          <array>
            <string>NoOp</string>
          </array>
        </value>
      </nameValuePair>
    </configurationParameterSettings>

    <flowConstraints>
      <fixedFlow>
      
        <node>TestMultiplier</node>
        <node>NoOp</node> 
        <node>NoOp2</node> 
      </fixedFlow>
    </flowConstraints>
    <capabilities>
      <capability>
        <inputs/>
        <outputs>
        </outputs>
        <languagesSupported>
          <language>en</language>
        </languagesSupported>
      </capability>
    </capabilities>
	<operationalProperties>
		<modifiesCas>true</modifiesCas>
		<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
		<outputsNewCASes>false</outputsNewCASes>
	</operationalProperties>
  </analysisEngineMetaData>
</analysisEngineDescription>

