blob: c4c2c1b4ea8db2f240d1da36a744d7ff36237a2b [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FlowController (Apache UIMA Java SDK 3.1.1 User-Level API Documentation)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="FlowController (Apache UIMA Java SDK 3.1.1 User-Level API Documentation)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FlowController.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/uima/flow/Flow.html" title="interface in org.apache.uima.flow"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/uima/flow/FlowController_ImplBase.html" title="class in org.apache.uima.flow"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/uima/flow/FlowController.html" target="_top">Frames</a></li>
<li><a href="FlowController.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.uima.flow</div>
<h2 title="Interface FlowController" class="title">Interface FlowController</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../org/apache/uima/flow/CasFlowController_ImplBase.html" title="class in org.apache.uima.flow">CasFlowController_ImplBase</a>, <a href="../../../../org/apache/uima/flow/FlowController_ImplBase.html" title="class in org.apache.uima.flow">FlowController_ImplBase</a>, <a href="../../../../org/apache/uima/flow/JCasFlowController_ImplBase.html" title="class in org.apache.uima.flow">JCasFlowController_ImplBase</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">FlowController</span></pre>
<div class="block">FlowControllers are components that decide how to route CASes within Aggregate Analysis Engines.
There is always exactly one FlowController per Aggregate Analysis Engine.
<p>
FlowController's <a href="../../../../org/apache/uima/flow/FlowController.html#initialize-org.apache.uima.flow.FlowControllerContext-"><code>initialize(FlowControllerContext)</code></a> method receives a
<a href="../../../../org/apache/uima/flow/FlowControllerContext.html" title="interface in org.apache.uima.flow"><code>FlowControllerContext</code></a>, which is a subtype of <a href="../../../../org/apache/uima/UimaContext.html" title="interface in org.apache.uima"><code>UimaContext</code></a> that has the following
additional information useful for routing:
<ul>
<li>A map from String keys to Analysis Engine Metadata for all Analysis Engines that the
FlowController can route CASes to</li>
<li>Declared Capabilities of the Aggregate AnalysisEngine containing this FlowController.</li>
</ul>
<p>
For each new CAS that is passed to the Aggregate Analysis Engine containing the FlowController,
the FlowController's <a href="../../../../org/apache/uima/flow/FlowController.html#computeFlow-org.apache.uima.cas.AbstractCas-"><code>computeFlow(AbstractCas)</code></a> method will be called. This method must
construct and return a <a href="../../../../org/apache/uima/flow/Flow.html" title="interface in org.apache.uima.flow"><code>Flow</code></a> object that is responsible for routing that CAS through the
components of the Aggregate Analysis Engine.
<p>
A FlowController, like other components, can have custom configuration parameters that it
accesses through its Context. These parameters can define the flow using whatever flow language
the particular FlowController implementation requires. The <code>Flow</code> object can be
given a handle to the CAS, so that it can use any information in the CAS to make its routing
decisions.
<p>
For convenience, FlowController implementations can extend from the base classes
<a href="../../../../org/apache/uima/flow/CasFlowController_ImplBase.html" title="class in org.apache.uima.flow"><code>CasFlowController_ImplBase</code></a> or
<a href="../../../../org/apache/uima/flow/JCasFlowController_ImplBase.html" title="class in org.apache.uima.flow"><code>JCasFlowController_ImplBase</code></a>, depending on which CAS interface they
wish to use.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#addAnalysisEngines-java.util.Collection-">addAnalysisEngines</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;aKeys)</code>
<div class="block">Notifies this FlowController that new Analysis Engines are now available to route CASes to.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#batchProcessComplete--">batchProcessComplete</a></span>()</code>
<div class="block">Completes the processing of a batch of CASes.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#collectionProcessComplete--">collectionProcessComplete</a></span>()</code>
<div class="block">Notifies this component that processing of an entire collection has been completed.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/uima/flow/Flow.html" title="interface in org.apache.uima.flow">Flow</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#computeFlow-org.apache.uima.cas.AbstractCas-">computeFlow</a></span>(<a href="../../../../org/apache/uima/cas/AbstractCas.html" title="interface in org.apache.uima.cas">AbstractCas</a>&nbsp;aCAS)</code>
<div class="block">Invokes this FlowController on a CAS.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#destroy--">destroy</a></span>()</code>
<div class="block">Frees all resources held by this FlowController.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/uima/cas/AbstractCas.html" title="interface in org.apache.uima.cas">AbstractCas</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#getRequiredCasInterface--">getRequiredCasInterface</a></span>()</code>
<div class="block">Returns the specific CAS interface that this FlowController requires the framework to pass to
its <a href="../../../../org/apache/uima/flow/FlowController.html#computeFlow-org.apache.uima.cas.AbstractCas-"><code>computeFlow(AbstractCas)</code></a> method.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#initialize-org.apache.uima.flow.FlowControllerContext-">initialize</a></span>(<a href="../../../../org/apache/uima/flow/FlowControllerContext.html" title="interface in org.apache.uima.flow">FlowControllerContext</a>&nbsp;aContext)</code>
<div class="block">Performs any startup tasks required by this component.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#reconfigure--">reconfigure</a></span>()</code>
<div class="block">Alerts this FlowController that the values of its configuration parameters or external
resources have changed.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/uima/flow/FlowController.html#removeAnalysisEngines-java.util.Collection-">removeAnalysisEngines</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;aKeys)</code>
<div class="block">Notifies this FlowController that some Analysis Engines are no longer available to route CASes to.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="initialize-org.apache.uima.flow.FlowControllerContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre>void&nbsp;initialize(<a href="../../../../org/apache/uima/flow/FlowControllerContext.html" title="interface in org.apache.uima.flow">FlowControllerContext</a>&nbsp;aContext)
throws <a href="../../../../org/apache/uima/resource/ResourceInitializationException.html" title="class in org.apache.uima.resource">ResourceInitializationException</a></pre>
<div class="block">Performs any startup tasks required by this component. The framework calls this method only
once, just after the FlowController has been instantiated.
<p>
The framework supplies this FlowController with a reference to the
<a href="../../../../org/apache/uima/flow/FlowControllerContext.html" title="interface in org.apache.uima.flow"><code>FlowControllerContext</code></a> that it will use, for example to access configuration settings or
resources. This FlowController should store a reference to this Context for later use.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aContext</code> - Provides access to services and resources managed by the framework. This includes
configuration parameters, logging, and access to external resources. Also provides the
FlowController with the metadata of all of the AnalysisEngines that are possible
targets for routing CASes.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/uima/resource/ResourceInitializationException.html" title="class in org.apache.uima.resource">ResourceInitializationException</a></code> - if the FlowController cannot initialize successfully.</dd>
</dl>
</li>
</ul>
<a name="reconfigure--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reconfigure</h4>
<pre>void&nbsp;reconfigure()
throws <a href="../../../../org/apache/uima/resource/ResourceConfigurationException.html" title="class in org.apache.uima.resource">ResourceConfigurationException</a>,
<a href="../../../../org/apache/uima/resource/ResourceInitializationException.html" title="class in org.apache.uima.resource">ResourceInitializationException</a></pre>
<div class="block">Alerts this FlowController that the values of its configuration parameters or external
resources have changed. This FlowController should re-read its configuration from the
<a href="../../../../org/apache/uima/UimaContext.html" title="interface in org.apache.uima"><code>UimaContext</code></a> and take appropriate action to reconfigure itself.
<p>
In the abstract base classes provided by the framework, this is generally implemented by
calling <code>destroy</code> followed by <code>initialize</code>. If a more efficient
implementation is needed, you can override that implementation.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/uima/resource/ResourceConfigurationException.html" title="class in org.apache.uima.resource">ResourceConfigurationException</a></code> - if the new configuration is invalid</dd>
<dd><code><a href="../../../../org/apache/uima/resource/ResourceInitializationException.html" title="class in org.apache.uima.resource">ResourceInitializationException</a></code> - if this component encounters a problem in reinitializing itself from the new
configuration</dd>
</dl>
</li>
</ul>
<a name="batchProcessComplete--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>batchProcessComplete</h4>
<pre>void&nbsp;batchProcessComplete()
throws <a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></pre>
<div class="block">Completes the processing of a batch of CASes. The size of a batch is determined based on
configuration provided by the application that is using this component. The purpose of
<code>batchProcessComplete</code> is to give this component the change to flush information
from memory to persistent storage. In the event of an error, this allows the processing to be
restarted from the end of the last completed batch.
<p>
If this component's descriptor declares that it is <code>recoverable</code>, then this
component is <i>required</i> to be restartable from the end of the last completed batch.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></code> - if this component encounters a problem in flushing its state to persistent storage</dd>
</dl>
</li>
</ul>
<a name="collectionProcessComplete--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>collectionProcessComplete</h4>
<pre>void&nbsp;collectionProcessComplete()
throws <a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></pre>
<div class="block">Notifies this component that processing of an entire collection has been completed. In this
method, this component should finish writing any output relating to the current collection.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></code> - if this component encounters a problem in its end-of-collection processing</dd>
</dl>
</li>
</ul>
<a name="destroy--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroy</h4>
<pre>void&nbsp;destroy()</pre>
<div class="block">Frees all resources held by this FlowController. The framework calls this method only once,
when it is finished using this component.</div>
</li>
</ul>
<a name="computeFlow-org.apache.uima.cas.AbstractCas-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeFlow</h4>
<pre><a href="../../../../org/apache/uima/flow/Flow.html" title="interface in org.apache.uima.flow">Flow</a>&nbsp;computeFlow(<a href="../../../../org/apache/uima/cas/AbstractCas.html" title="interface in org.apache.uima.cas">AbstractCas</a>&nbsp;aCAS)
throws <a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></pre>
<div class="block">Invokes this FlowController on a CAS. The FlowController returns a <a href="../../../../org/apache/uima/flow/Flow.html" title="interface in org.apache.uima.flow"><code>Flow</code></a> object that is
responsible for routing this particular CAS through the components of this Aggregate. The
<code>Flow</code> object should be given a handle to the CAS, so that it can use information
in the CAS to make routing decisions.
<p>
FlowController implementations will typically define their own class that implements
<a href="../../../../org/apache/uima/flow/Flow.html" title="interface in org.apache.uima.flow"><code>Flow</code></a> by extending from the base class <a href="../../../../org/apache/uima/flow/CasFlow_ImplBase.html" title="class in org.apache.uima.flow"><code>CasFlow_ImplBase</code></a> or
<a href="../../../../org/apache/uima/flow/JCasFlow_ImplBase.html" title="class in org.apache.uima.flow"><code>JCasFlow_ImplBase</code></a>. This method would then just instantiate the flow object, call its
<code>setCas</code> method to provide a handle to the CAS, and return the flow object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aCAS</code> - A CAS that this FlowController should process. The framework will ensure that aCAS
implements the specific CAS interface declared in the &lt;casInterface&gt; element of
this FlowController's descriptor.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Flow object that has responsibility for routing <code>aCAS</code> through the
Aggregate Analysis Engine.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></code> - if this FlowController encounters a problem computing the flow for the CAS</dd>
</dl>
</li>
</ul>
<a name="getRequiredCasInterface--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRequiredCasInterface</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/uima/cas/AbstractCas.html" title="interface in org.apache.uima.cas">AbstractCas</a>&gt;&nbsp;getRequiredCasInterface()</pre>
<div class="block">Returns the specific CAS interface that this FlowController requires the framework to pass to
its <a href="../../../../org/apache/uima/flow/FlowController.html#computeFlow-org.apache.uima.cas.AbstractCas-"><code>computeFlow(AbstractCas)</code></a> method.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the required CAS interface. This must specify a subtype of <a href="../../../../org/apache/uima/cas/AbstractCas.html" title="interface in org.apache.uima.cas"><code>AbstractCas</code></a>.</dd>
</dl>
</li>
</ul>
<a name="addAnalysisEngines-java.util.Collection-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addAnalysisEngines</h4>
<pre>void&nbsp;addAnalysisEngines(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;aKeys)</pre>
<div class="block">Notifies this FlowController that new Analysis Engines are now available to route CASes to.
Prior to calling this method the framework will update
<a href="../../../../org/apache/uima/flow/FlowControllerContext.html#getAnalysisEngineMetaDataMap--"><code>FlowControllerContext.getAnalysisEngineMetaDataMap()</code></a>
with the metadata for these new Analysis Engines.
<p>
This FlowController is not obligated to do anything in response to this method if it does
not want to consider routing CASes to the new AnalysisEngines.
<p>
The contract for this method is that the framework will not concurrently call any
<a href="../../../../org/apache/uima/flow/Flow.html#next--"><code>Flow.next()</code></a> methods on any Flow objects produced by this FlowController, during the
time between when the Analysis Engine MetaData map is updated and the time when this method
completes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aKeys</code> - a Collection of Strings, each of which is the key of an Analysis Engine to which
CASes can be routed. These are the same keys as used in
<a href="../../../../org/apache/uima/flow/FlowControllerContext.html#getAnalysisEngineMetaDataMap--"><code>FlowControllerContext.getAnalysisEngineMetaDataMap()</code></a>.</dd>
</dl>
</li>
</ul>
<a name="removeAnalysisEngines-java.util.Collection-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>removeAnalysisEngines</h4>
<pre>void&nbsp;removeAnalysisEngines(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;aKeys)
throws <a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></pre>
<div class="block">Notifies this FlowController that some Analysis Engines are no longer available to route CASes to.
Prior to calling this method the framework will update
<a href="../../../../org/apache/uima/flow/FlowControllerContext.html#getAnalysisEngineMetaDataMap--"><code>FlowControllerContext.getAnalysisEngineMetaDataMap()</code></a>
and will remove the metadata for these new Analysis Engines.
<p>
It is not required for a FlowController implementation to support this method. It may throw
an exception if this operation is not supported
(see <a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html#REMOVE_AE_FROM_FLOW_NOT_SUPPORTED"><code>AnalysisEngineProcessException.REMOVE_AE_FROM_FLOW_NOT_SUPPORTED</code></a>.
Also the FlowController may throw an Exception if it determines that it does not make sense for
the flow to continue in the absence of the removed Analysis Engines
(see <a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html#FLOW_CANNOT_CONTINUE_AFTER_REMOVE"><code>AnalysisEngineProcessException.FLOW_CANNOT_CONTINUE_AFTER_REMOVE</code></a>.
<p>
The contract for this method is that the framework will not concurrently call any
<a href="../../../../org/apache/uima/flow/Flow.html#next--"><code>Flow.next()</code></a> methods on any Flow objects produced by this FlowController, during the
time between when the Analysis Engine MetaData map is updated and the time when this method
completes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>aKeys</code> - a Collection of Strings, each of which is the key of an Analysis Engine to which CASes
may no longer be routed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/uima/analysis_engine/AnalysisEngineProcessException.html" title="class in org.apache.uima.analysis_engine">AnalysisEngineProcessException</a></code> - if the FlowController cannot continue with these
Analysis Engines removed, or doesn't support removing Analysis Engines at all.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FlowController.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/uima/flow/Flow.html" title="interface in org.apache.uima.flow"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/uima/flow/FlowController_ImplBase.html" title="class in org.apache.uima.flow"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/uima/flow/FlowController.html" target="_top">Frames</a></li>
<li><a href="FlowController.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2006&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>