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