Hello,

As part of Google Summer of Code, we have been working on bringing the
Aggregate Engine of uimacpp up to spec. We discovered that a lot of the
aggregate functionalities have been implemented, and one of the biggest
missing features are CAS Multipliers [1].

To summarize the current implementation: the C++ aggregate simply calls `
*process()*` on all delegates [2], instead of the stack-based
implementation in Java [3] that allows the engine to keep track of input
and output CASes. I plan to bring this to the C++ version. I understand
that these concepts and algorithms may not necessarily directly translate
between the implementations, so if there's anything I need to note, I'd
appreciate a heads-up.

We have some new tests that will check for the new implementation, and if
time permits, we want to look into bringing Flow Controllers [4] to C++ as
well.


[1]:  https://lists.apache.org/thread/54lwsktbrcxyphskft3xf6b7mf2kfgrw
[2]:
https://github.com/apache/uima-uimacpp/tree/main/src/framework/annotator_mgr.cpp#L438
[3]:
https://github.com/apache/uima-uimaj/tree/main/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java#L512
[4]:
https://uima.apache.org/d/uimaj-current/ref.html#ugr.ref.xml.component_descriptor.flow_controller

Reply via email to