Hi, as far as I know, UIMA doesn't support injecting pre-existing Java objects into components out-of-the-box. However ...
... you can work around this using a custom ResourceManager, e.g. the SimpleNamedResourceManager [1] from uimaFIT. Another approach I experimented with in the past was to forcibly hook into the UIMA core framework in order to post-process components after creation. This approach is show-cased in the experimental Spring support module [2] in uimaFIT. A third approach I had been playing with in the past was using JNDI via the uimaFIT "ExternalResourceLocator" mechanism [3,4]. So although UIMA doesn't support this out-of-the-box, there are several proof-of-concept implementations that you can use or build upon. Cheers, -- Richard [1] https://svn.apache.org/repos/asf/uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/util/SimpleNamedResourceManager.java [2] https://svn.apache.org/repos/asf/uima/uimafit/trunk/uimafit-spring/src/test/java/org/apache/uima/fit/spring/SpringContextResourceManagerTest.java [3] https://svn.apache.org/repos/asf/uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/factory/locator/JndiResourceLocator.java# [4] https://svn.apache.org/repos/asf/uima/uimafit/trunk/uimafit-core/src/test/java/org/apache/uima/fit/factory/ExternalResourceFactoryTest.java P.S.: most people post to the mailing list, but you can also post to Stack Overflow - we're monitoring it :) > On 20.02.2017, at 14:59, Hendrik Lücke-Tieke <[email protected]> wrote: > > Hi, > > > I have some driver Code which prepares some stuff, then runs a Pipeline, and > finally wants to use the results that have been generated in the Pipeline. > > > As far as i have understood the whole uimafit world, uima is in control the > LifeCycle of everything that happens within a Pipeline. This lifecycle is > controlled using the ResourceManager. Data Exchange with the driver > application is not foreseen. I.e. the following pseudocode cannot work by > design: > > > Graph<V,E> g = new ReadWriteGraph<V,E>(); > > AnalysisEngineDescription graphMapper = > createEngineDescription(GraphMapper.class) > > > SimplePipeline.runPipeline( > > createReaderDescription(TextReader.class, ...), > > // more annotators ... > > graphMapper); > > > assert(g.vertexSet().isEmpty(), false); > > > Is that correct? Or am i missing some hidden feature, which does actually > enable this? The only way to Exchange data with the driver program would be > to implement some serialization mechanism in the graphMapper and deserialize > it after the Pipeline has run. > > > Best, > Hendrik > > > PS: this Mailing list or stackoverflow?
