On 26.08.2015, at 22:58, Martin Wunderlich <[email protected]> wrote:

> Kinda like this. It’s bit more involved, because I was trying to spare you 
> the details. 
> 
> First AAE: (FC AE AE AE AE AE AE)
> 
> Second AAE: (AE AE AE AE AE)
> 
> This does not work: AAE*[ CR AAE (FC AE AE AE AE AE AE) AAE (AE AE AE AE AE) ]
> 
> This _does_ work: AAE*[ CR AAE (FC AE AE AE AE AE AE AE AE AE AE AE) ]
> 
> FC = FlowControlloer
> RR = CollectionReader

The CR is always outside the AAE - it is handled separately.

> This does not work:CR AAE*[AAE (FC AE AE AE AE AE AE) AAE (AE AE AE AE AE) ]
> 
> This _does_ work: CR AAE*[AAE (FC AE AE AE AE AE AE AE AE AE AE AE) ]

Basically SimplePipeline.runPipeline does (with a few details left out):

aae = createEngine(aed, aed, aed...)
for (cas : createReader(crd) {
  aae.process(cas);
}

I may have an idea why the first case does not work. Does the AAE
define the flag "outputsNewCases" 
(org.apache.uima.resource.metadata.OperationalProperties)?

  /**
   * Sets whether this AnalysisEngine may output new CASes. If this property is 
set to true, an
   * application can use the {@link 
AnalysisEngine#processAndOutputNewCASes(CAS)} to pass a CAS to
   * this this AnalysisEngine and then step through all of the output CASes 
that it produces. For
   * example, such an AnalysisEngine could segment a CAS into smaller pieces, 
emitting each as a
   * separate CAS.
   * 
   * @param aOutputsNewCASes
   *          true if this component may output new CASes, false if it does not
   */
  public void setOutputsNewCASes(boolean aOutputsNewCASes);

uimaFIT doesn't do that, you'd have to do that manually just as you also tweak 
the flow.

Maybe there could be some way to infer this setting by detecting that a CAS 
multipler
is inside an AAE... but then again, probably UIMA core should infer that, not 
uimaFIT.

Cheers,

-- Richard

Reply via email to