<?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.
***************************************************************
-->

<flowControllerDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>

  <implementationName>org.apache.uima.ee.test.flow.BuggyAdvancedFixedFlowController</implementationName>
  <processingResourceMetaData>
    <name>Advanced Fixed Flow Controller</name>
    <description>An extension of the FixedFlowController that can also do ParallelSteps and can continue after
      errors. It is configured via the "Flow" configuration parameter rather than using the flowConstraints
      element of the aggregate descriptor.</description>
    <version>1.0</version>
    <vendor>The Apache Software Foundation</vendor>
    <configurationParameters>
      <configurationParameter>
        <name>ActionAfterCasMultiplier</name>
        <description>The action to be taken after a CAS has been input to a CAS Multiplier and the CAS Multiplier has
          finished processing it. Valid values are: continue - the CAS continues on to the next element in the flow
          stop - the CAS will no longer continue in the flow, and will be returned from the aggregate if possible. drop -
          the CAS will no longer continue in the flow, and will be dropped (not returned from the aggregate) if
          possible. dropIfNewCasProduced (the default) - if the CAS multiplier produced a new CAS as a result of
          processing this CAS, then this CAS will be dropped. If not, then this CAS will continue. </description>
        <type>String</type>
        <multiValued>false</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
      
      <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.
          This parameter must be overridden in the aggregate AE containing this Flow Conroller.
          </description>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>true</mandatory>
      </configurationParameter>
      
      <configurationParameter>
        <name>AllowContinueOnFailure</name>
        <description> Specifies for which AnalysisEngines the Flow should continue when an exception occurs. This
          parameter takes an array of Strings as its value. Each String is the key of AnalysisEngine for which
          continuing on failure should be allowed. </description>
        <type>String</type>
        <multiValued>true</multiValued>
        <mandatory>false</mandatory>
      </configurationParameter>
    </configurationParameters>
    <configurationParameterSettings>
      <nameValuePair>
        <name>ActionAfterCasMultiplier</name>
        <value>
          <string>dropIfNewCasProduced</string>
        </value>
      </nameValuePair>
    </configurationParameterSettings>
    <capabilities>
      <capability>
        <inputs/>
        <outputs/>
      </capability>
    </capabilities>
  </processingResourceMetaData>
</flowControllerDescription>
