<?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.
   ***************************************************************
   -->

<analysisEngineDeploymentDescription xmlns="http://uima.apache.org/resourceSpecifier">
  
  <name>Top Level TAE</name>
  <description></description>
  
  <deployment protocol="jms" provider="activemq">
    <casPool numberOfCASes="1" initialFsHeapSize="20000"/>
    <service>
      <inputQueue endpoint="TopLevelTaeQueue" brokerURL="${DefaultBrokerURL}" prefetch="1"/>
      <topDescriptor>
        <import location="../descriptors/analysis_engine/3TopLevelTestAggregate.xml"/>
      </topDescriptor>
      <analysisEngine async="true">
        <delegates>
          <analysisEngine key="1TestAggregateCM" async="true">
            <scaleout numberOfInstances="1"/>
            <delegates>
              <analysisEngine key="TestMultiplier" async="false">
                <scaleout numberOfInstances="1"/>
                <casMultiplier poolSize="1" initialFsHeapSize="20000"/>
                <asyncAggregateErrorConfiguration>
                  <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
                  <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
                  <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
                </asyncAggregateErrorConfiguration>
              </analysisEngine>
            </delegates>
            <asyncAggregateErrorConfiguration>
              <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
              <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
              <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
            </asyncAggregateErrorConfiguration>
          </analysisEngine>

          <analysisEngine key="2TestAggregateCM" async="true">
            <scaleout numberOfInstances="1"/>
            <delegates>
              <analysisEngine key="TestMultiplier1" async="false">
                <scaleout numberOfInstances="1"/>
                <casMultiplier poolSize="20" initialFsHeapSize="20000"/>
                <asyncAggregateErrorConfiguration>
                  <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
                  <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
                  <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
                </asyncAggregateErrorConfiguration>
              </analysisEngine>
              <analysisEngine key="TestMultiplier2" async="false">
                <scaleout numberOfInstances="1"/>
                <casMultiplier poolSize="20" initialFsHeapSize="20000"/>
                <asyncAggregateErrorConfiguration>
                  <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
                  <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
                  <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
                </asyncAggregateErrorConfiguration>
              </analysisEngine>
              <analysisEngine key="TestMultiplier3" async="false">
                <scaleout numberOfInstances="1"/>
                <casMultiplier poolSize="10" initialFsHeapSize="20000" processParentLast="true"/>
                <asyncAggregateErrorConfiguration>
                  <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
                  <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
                  <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
                </asyncAggregateErrorConfiguration>
              </analysisEngine>
              <analysisEngine key="TestMultiplier4" async="false">
                <scaleout numberOfInstances="1"/>
                <casMultiplier poolSize="40" initialFsHeapSize="20000"/>
                <asyncAggregateErrorConfiguration>
                  <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
                  <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
                  <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
                </asyncAggregateErrorConfiguration>
              </analysisEngine>


            </delegates>
            <asyncAggregateErrorConfiguration>
              <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
              <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
              <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
            </asyncAggregateErrorConfiguration>
          </analysisEngine>
        </delegates>
      </analysisEngine>
    </service>
  </deployment>
  
</analysisEngineDeploymentDescription>
