Hi Richard,
        
> did you try asking the AggregateBuilder for a description,
> calling getOperationalProperties().setOutputsNewCASes(true)
> on the description and then creating the engine?

        thanks Richard, it solved my problem!

However, I noticed that while using the JCasIterator I should release every 
JCas object after using it, otherwise the process is blocked because of the 
CasPool(?):

JCasIterator it = engine.processAndOutputNewCASes(jCas);
while(it.hasNext()) {
  JCas a = it.next();
  ...
  a.release();
}

Best,
Artem

On Sep 5, 2013, at 7:59 PM, Richard Eckart de Castilho 
<[email protected]> wrote:

> Hi Artem,
> 
> did you try asking the AggregateBuilder for a description,
> calling getOperationalProperties().setOutputsNewCASes(true)
> on the description and then creating the engine?
> 
> I have an apparently working piece of code looking along these lines
> 
> // The part starting with a splitter and ending with a merger has to be in 
> its own
> // aggregate. The flow controller of the aggregate has to drop the 
> intermediate CASes.
> FlowControllerDescription fcd = 
> createFlowControllerDescription(FixedFlowController.class,
>  FixedFlowController.PARAM_ACTION_AFTER_CAS_MULTIPLIER, "drop");
> AnalysisEngineDescription embedded = createEngineDescription(fcd, splitter, 
> tokenizer, merger);
> 
> // The final merged CAS, however, needs to be returned from the aggregate
> embedded.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
> 
> // Need to wrap into another aggregate because runPipeline has no immediate 
> support for
> // flow control
> AnalysisEngineDescription pipelineDesc = 
> createEngineDescription(sentenceDetector, embedded, consumer);
> 
> SimplePipeline.runPipeline(createReaderDescription(…), pipelineDesc);
> 
> Cheers,
> 
> -- Richard
> 
> On 30.08.2013, at 23:32, Artem Vovk <[email protected]> wrote:
> 
>> Hi,
>> 
>> I wanted to write a test for MyJCasMultiplier, to check how many JCases are 
>> created. Here is my code:
>> 
>> AnalysisEngineDescription segmenter =   
>> createEngineDescription(BreakIteratorSegmenter.class);
>> 
>> AnalysisEngineDescription multiplier = 
>> createEngineDescription(MyJCasMultiplier.class);
>>      
>> AggregateBuilder ab = new AggregateBuilder();
>> ab.add(segmenter);
>> ab.add(multiplier);
>> 
>> AnalysisEngine engine = ab.createAggregate();
>> engine.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
>> 
>> JCas jCas = engine.newJCas();
>> jCas.setDocumentText(testString);
>> JCasIterator it = engine.processAndOutputNewCASes(jCas);
>> 
>> The problem is that engine.processAndOutputNewCASes(jCas) returns always 0 
>> JCases, but I know it should be more :) Did I miss something here or it is a 
>> framework issue?
>> 
>> Best,
>> Artem
> 

Reply via email to