Class MultiprocessingAnalysisEngine_impl
- All Implemented Interfaces:
AnalysisEngine,TextAnalysisEngine,CasObjectProcessor,CasProcessor,ConfigurableResource,Resource
AnalysisEngine implementation that can process multiple CAS objects
simultaneously. This is accomplished by maintaining a pool of AnalysisEngine instances.
When initialized, this class checks for the parameter AnalysisEngine.PARAM_NUM_SIMULTANEOUS_REQUESTS to
determine how many AnalysisEngine instances to put in the pool.-
Field Summary
Fields inherited from class org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase
LOG_RESOURCE_BUNDLE, PARAM_VERIFICATION_MODEFields inherited from interface org.apache.uima.analysis_engine.AnalysisEngine
MDC_ANNOTATOR_CONTEXT_NAME, MDC_ANNOTATOR_IMPL_NAME, MDC_CAS_ID, MDC_ROOT_CONTEXT_ID, PARAM_CONFIG_PARAM_SETTINGS, PARAM_MBEAN_NAME_PREFIX, PARAM_MBEAN_SERVER, PARAM_NUM_SIMULTANEOUS_REQUESTS, PARAM_RESOURCE_MANAGER, PARAM_THROTTLE_EXCESSIVE_ANNOTATOR_LOGGING, PARAM_TIMEOUT_PERIODFields inherited from interface org.apache.uima.resource.Resource
PARAM_AGGREGATE_SOFA_MAPPINGS, PARAM_CONFIG_MANAGER, PARAM_CONFIG_PARAM_SETTINGS, PARAM_EXTERNAL_OVERRIDE_SETTINGS, PARAM_PERFORMANCE_TUNING_SETTINGS, PARAM_RESOURCE_MANAGER, PARAM_UIMA_CONTEXT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidNotifies this AnalysisEngine that processing of a batch has completed.voidNotifies this AnalysisEngine that processing of an entire collection has completed.voiddestroy()Releases all resources held by thisResource.protected org.apache.uima.internal.util.AnalysisEnginePoolgetPool()Gets the AnalysisEngine pool used to serve process requests.protected intGets the timeout period, after which an exception will be thrown if no AnalysisEngine is available in the pool.booleaninitialize(ResourceSpecifier aSpecifier, Map<String, Object> aAdditionalParams) Initializes thisResourcefrom aResourceSpecifier.Invokes this AnalysisEngine's analysis logic.process(CAS aCAS, ResultSpecification aResultSpec) Invokes this AnalysisEngine's analysis logic.voidprocess(CAS aCAS, ResultSpecification aResultSpec, ProcessTrace aTrace) Invokes this AnalysisEngine's analysis logic.Similar toAnalysisEngine.process(CAS)but uses the Java-object-basedJCasinterface instead of the generalCASinterface.process(JCas aJCas, ResultSpecification aResultSpec) Similar toAnalysisEngine.process(CAS,ResultSpecification)but uses the Java-object-basedJCasinterface instead of the generalCASinterface.voidprocess(JCas aJCas, ResultSpecification aResultSpec, ProcessTrace aTrace) Similar toAnalysisEngine.process(CAS, ResultSpecification, ProcessTrace)but uses the Java-object-basedJCasinterface instead of the generalCASinterface.processAndOutputNewCASes(CAS aCAS) Processes a CAS, possibly producing multiple CASes as a result.processAndOutputNewCASes(JCas aJCas) Default implementation of processAndOutputNewCASes(JCas) method.voidInstructs this Resource to re-read its configuration parameter settings.voidSet the logger in the current UimaContext for use by user annotators.voidsetResultSpecification(ResultSpecification aResultSpec) Sets the list of output types and features that the application wants this AnalysisEngine to produce.Methods inherited from class org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase
batchProcessComplete, buildProcessTraceFromMBeanStats, buildProcessTraceFromMBeanStats, callInitializeMethod, callProcessMethod, collectionProcessComplete, createResultSpecification, createResultSpecification, enterBatchProcessComplete, enterCollectionProcessComplete, enterProcess, exitBatchProcessComplete, exitCollectionProcessComplete, exitProcess, finalize, getAnalysisEngineMetaData, getCurrentConfigParameterSettings, getFeatureNamesForType, getManagementInterface, getMBean, getMBeanNamePrefix, getMBeanServer, getPerformanceTuningSettings, getProcessingResourceMetaData, isProcessTraceEnabled, isReadOnly, isStateless, newCAS, newJCas, normalizeIsoLangCodes, process, processCas, processCas, resetResultSpecificationToDefault, setMetaData, setPerformanceTuningSettings, typeSystemInitMethods inherited from class org.apache.uima.resource.ConfigurableResource_ImplBase
getConfigParameterValue, getConfigParameterValue, setConfigParameterValue, setConfigParameterValueMethods inherited from class org.apache.uima.resource.Resource_ImplBase
getCasManager, getLogger, getMetaData, getRelativePathResolver, getResourceManager, getUimaContext, getUimaContextAdmin, loadUserClass, loadUserClassOrThrow, setContextHolder, setContextHolderX, withContextHolderMethods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.uima.analysis_engine.AnalysisEngine
createResultSpecification, createResultSpecification, getAnalysisEngineMetaData, getFeatureNamesForType, getLogger, getManagementInterface, getPerformanceTuningSettings, getResourceManager, newCAS, newJCas, processMethods inherited from interface org.apache.uima.collection.base_cpm.CasObjectProcessor
processCas, processCas, typeSystemInitMethods inherited from interface org.apache.uima.collection.base_cpm.CasProcessor
batchProcessComplete, collectionProcessComplete, getProcessingResourceMetaData, isReadOnly, isStatelessMethods inherited from interface org.apache.uima.resource.ConfigurableResource
getConfigParameterValue, getConfigParameterValue, setConfigParameterValue, setConfigParameterValueMethods inherited from interface org.apache.uima.resource.Resource
getMetaData, getUimaContext, getUimaContextAdmin
-
Constructor Details
-
MultiprocessingAnalysisEngine_impl
public MultiprocessingAnalysisEngine_impl()
-
-
Method Details
-
initialize
public boolean initialize(ResourceSpecifier aSpecifier, Map<String, Object> aAdditionalParams) throws ResourceInitializationExceptionDescription copied from interface:ResourceInitializes thisResourcefrom aResourceSpecifier. Applications do not need to call this method. It is called automatically by theResourceFactoryand cannot be called a second time.- Specified by:
initializein interfaceAnalysisEngine- Specified by:
initializein interfaceResource- Overrides:
initializein classAnalysisEngineImplBase- Parameters:
aSpecifier- specifies how to create a resource or locate an existing resource service.aAdditionalParams- a Map containing additional parameters. May benullif there are no parameters. Each class that implements this interface can decide what additional parameters it supports.- Returns:
- true if and only if initialization completed successfully. Returns false if the given
ResourceSpecifieris not of an appropriate type for this Resource. If theResourceSpecifieris of an appropriate type but is invalid or if some other failure occurs, an exception should be thrown. - Throws:
ResourceInitializationException- if a failure occurs during initialization.- See Also:
-
process
public ProcessTrace process(CAS aCAS, ResultSpecification aResultSpec) throws ResultNotSupportedException, AnalysisEngineProcessException Description copied from interface:AnalysisEngineInvokes this AnalysisEngine's analysis logic. Prior to calling this method, the caller must ensure that the CAS has been populated with the artifact to be analyzed as well as any inputs required by this AnalysisEngine (as defined by this AnalysisEngine'sCapabilityspecification.)This version of the
processmethod takes aResultSpecificationas an argument. TheResultSpecificationis alist of output types and features that the application wants this AnalysisEngine to produce. If you are going to use the sameResultSpecificationfor multiple calls toprocess, it is not recommended to use this method. Instead callAnalysisEngine.setResultSpecification(ResultSpecification)once and then callAnalysisEngine.process(CAS)for each CAS that you want to process.- Specified by:
processin interfaceAnalysisEngine- Overrides:
processin classAnalysisEngineImplBase- Parameters:
aCAS- the CAS containing the inputs to the processing. Analysis results will also be written to this CAS.aResultSpec- a list of outputs that this AnalysisEngine should produce.- Returns:
- an object containing information about which AnalysisEngine components have executed and information, such as timing, about that execution.
- Throws:
ResultNotSupportedException- if this AnalysisEngine is not capable of producing the results requested inaResultSpec.AnalysisEngineProcessException- if a failure occurs during processing.- See Also:
-
process
public void process(CAS aCAS, ResultSpecification aResultSpec, ProcessTrace aTrace) throws ResultNotSupportedException, AnalysisEngineProcessException Description copied from interface:AnalysisEngineInvokes this AnalysisEngine's analysis logic. Prior to calling this method, the caller must ensure that the CAS has been populated with the artifact to be analyzed as well as any inputs required by this AnalysisEngine (as defined by this AnalysisEngine'sCapabilityspecification.)This version of the
processmethod takes aResultSpecificationas an argument. TheResultSpecificationis a list of output types and features that the application wants this AnalysisEngine to produce. If you are going to use the sameResultSpecificationfor multiple calls toprocess, it is not recommended to use this method. Instead callAnalysisEngine.setResultSpecification(ResultSpecification)once and then callAnalysisEngine.process(CAS)for each CAS that you want to process.This version of this method also takes a
ProcessTraceobject as a parameter. This allows trace events to be written to an existingProcessTracerather than a new one.- Specified by:
processin interfaceAnalysisEngine- Overrides:
processin classAnalysisEngineImplBase- Parameters:
aCAS- the CAS containing the inputs to the processing. Analysis results will also be written to this CAS.aResultSpec- a list of outputs that this AnalysisEngine should produce.aTrace- the object to which trace events will be recorded- Throws:
ResultNotSupportedException- if this AnalysisEngine is not capable of producing the results requested inaResultSpec.AnalysisEngineProcessException- if a failure occurs during processing.- See Also:
-
processAndOutputNewCASes
Description copied from interface:AnalysisEngineProcesses a CAS, possibly producing multiple CASes as a result. The application uses theCasIteratorinterface to step through the output CASes.If this Analysis Engine does not produce output CASes, then the
CasIteratorwill return no elements. You can check if an AnalysisEngine is capable of producing output CASes by checking theOperationalProperties.getOutputsNewCASes()operational property (getAnalysisEngineMetaData().getOperationalProperties().getOutputsNewCASes()).Once this method is called, the AnalysisEngine "owns"
aCASuntil such time as theCasIterator.hasNext()method returns false. That is, the caller should not attempt to modify or access the input CAS until it has read all of the elements from the CasIterator. If the caller wants to abort the processing before having read all of the output CASes, it may callCasIterator.release(), which will stop further processing from occurring, and ownership ofaCASwill revert to the caller.- Specified by:
processAndOutputNewCASesin interfaceAnalysisEngine- Overrides:
processAndOutputNewCASesin classAnalysisEngineImplBase- Parameters:
aCAS- the CAS to be processed- Returns:
- an object for iterating through any output CASes
- Throws:
AnalysisEngineProcessException- if a failure occurs during processing
-
process
Description copied from interface:AnalysisEngineInvokes this AnalysisEngine's analysis logic. Prior to calling this method, the caller must ensure that the CAS has been populated with the artifact to be analyzed as well as any inputs required by this AnalysisEngine (as defined by this AnalysisEngine'sCapabilityspecification.)This version of
processdoes not take aResultSpecificationparameter. You may specify aResultSpecificationby callingAnalysisEngine.setResultSpecification(ResultSpecification)prior to calling this method.- Specified by:
processin interfaceAnalysisEngine- Overrides:
processin classAnalysisEngineImplBase- Parameters:
aCAS- the CAS containing the inputs to the processing. Analysis results will also be written to this CAS.- Returns:
- an object containing information about which AnalysisEngine components have executed and information, such as timing, about that execution.
- Throws:
AnalysisEngineProcessException- if a failure occurs during processing.
-
process
Description copied from interface:AnalysisEngineSimilar toAnalysisEngine.process(CAS)but uses the Java-object-basedJCasinterface instead of the generalCASinterface.- Specified by:
processin interfaceAnalysisEngine- Overrides:
processin classAnalysisEngineImplBase- Parameters:
aJCas- the JCas containing the inputs to the processing. Analysis results will also be written to this JCas.- Returns:
- an object containing information about which AnalysisEngine components have executed and information, such as timing, about that execution.
- Throws:
AnalysisEngineProcessException- if a failure occurs during processing.- See Also:
-
process
public ProcessTrace process(JCas aJCas, ResultSpecification aResultSpec) throws ResultNotSupportedException, AnalysisEngineProcessException Description copied from interface:AnalysisEngineSimilar toAnalysisEngine.process(CAS,ResultSpecification)but uses the Java-object-basedJCasinterface instead of the generalCASinterface.This version of the
processmethod takes aResultSpecificationas an argument. TheResultSpecificationis a list of output types and features that the application wants this AnalysisEngine to produce. If you are going to use the sameResultSpecificationfor multiple calls toprocess, it is not recommended to use this method. Instead callAnalysisEngine.setResultSpecification(ResultSpecification)once and then callAnalysisEngine.process(JCas)for each CAS that you want to process.- Specified by:
processin interfaceAnalysisEngine- Overrides:
processin classAnalysisEngineImplBase- Parameters:
aJCas- the JCas containing the inputs to the processing. Analysis results will also be written to this JCas.aResultSpec- a list of outputs that this AnalysisEngine should produce.- Returns:
- an object containing information about which AnalysisEngine components have executed and information, such as timing, about that execution.
- Throws:
ResultNotSupportedException- if this AnalysisEngine is not capable of producing the results requested inaResultSpec.AnalysisEngineProcessException- if a failure occurs during processing.- See Also:
-
process
public void process(JCas aJCas, ResultSpecification aResultSpec, ProcessTrace aTrace) throws ResultNotSupportedException, AnalysisEngineProcessException Description copied from interface:AnalysisEngineSimilar toAnalysisEngine.process(CAS, ResultSpecification, ProcessTrace)but uses the Java-object-basedJCasinterface instead of the generalCASinterface.This version of the
processmethod takes aResultSpecificationas an argument. TheResultSpecificationis a list of output types and features that the application wants this AnalysisEngine to produce. If you are going to use the sameResultSpecificationfor multiple calls toprocess, it is not recommended to use this method. Instead callAnalysisEngine.setResultSpecification(ResultSpecification)once and then callAnalysisEngine.process(JCas)for each CAS that you want to process.This version of this method also takes a
ProcessTraceobject as a parameter. This allows trace events to be written to an existingProcessTracerather than a new one.- Specified by:
processin interfaceAnalysisEngine- Overrides:
processin classAnalysisEngineImplBase- Parameters:
aJCas- the JCas containing the inputs to the processing. Analysis results will also be written to this JCas.aResultSpec- a list of outputs that this AnalysisEngine should produce.aTrace- the object to which trace events will be recorded- Throws:
ResultNotSupportedException- if this AnalysisEngine is not capable of producing the results requested inaResultSpec.AnalysisEngineProcessException- if a failure occurs during processing.- See Also:
-
processAndOutputNewCASes
Description copied from class:AnalysisEngineImplBaseDefault implementation of processAndOutputNewCASes(JCas) method. Calls the version of this method that takes a CAS, then wraps the resulting CasIterator in a JCasIterator.- Specified by:
processAndOutputNewCASesin interfaceAnalysisEngine- Overrides:
processAndOutputNewCASesin classAnalysisEngineImplBase- Parameters:
aJCas- the JCAS to be processed- Returns:
- an object for iterating through any output JCASes
- Throws:
AnalysisEngineProcessException- if a failure occurs during processing
-
setResultSpecification
Description copied from interface:AnalysisEngineSets the list of output types and features that the application wants this AnalysisEngine to produce. This is only a guideline. Annotators may use this information to avoid doing unnecessary work, but they are not required to do so.- Specified by:
setResultSpecificationin interfaceAnalysisEngine- Overrides:
setResultSpecificationin classAnalysisEngineImplBase- Parameters:
aResultSpec- specifies the list of output types and features that the application is interested in.
-
reconfigure
Description copied from interface:ConfigurableResourceInstructs this Resource to re-read its configuration parameter settings.- Specified by:
reconfigurein interfaceAnalysisEngine- Specified by:
reconfigurein interfaceConfigurableResource- Overrides:
reconfigurein classConfigurableResource_ImplBase- Throws:
ResourceConfigurationException- if the configuration is not valid- See Also:
-
destroy
public void destroy()Description copied from interface:ResourceReleases all resources held by thisResource.- Specified by:
destroyin interfaceResource- Overrides:
destroyin classResource_ImplBase- See Also:
-
setLogger
Description copied from class:Resource_ImplBaseSet the logger in the current UimaContext for use by user annotators.- Specified by:
setLoggerin interfaceAnalysisEngine- Specified by:
setLoggerin interfaceResource- Overrides:
setLoggerin classResource_ImplBase- Parameters:
aLogger- the logger for this Resource to use- See Also:
-
batchProcessComplete
Description copied from interface:AnalysisEngineNotifies this AnalysisEngine that processing of a batch has completed. It is up to the caller to determine the size of a batch. Components (particularly CAS Consumers) inside this Analysis Engine may respond to this event, for example by writing data to the disk.- Specified by:
batchProcessCompletein interfaceAnalysisEngine- Overrides:
batchProcessCompletein classAnalysisEngineImplBase- Throws:
AnalysisEngineProcessException- if an exception occurs during processing
-
collectionProcessComplete
Description copied from interface:AnalysisEngineNotifies this AnalysisEngine that processing of an entire collection has completed. It is up to the caller to determine when this has occurred. Components (particularly CAS Consumers) inside this Analysis Engine may respond to this event, for example by writing data to the disk.If this AnalysisEngine is an aggregate, this method will call the collectionProcessComplete method of all components of that aggregate. If the aggregate descriptor declares a
fixedFloworcapabilityLanguageFlow, then the components' collectionProcessComplete methods will be called in the order specified by that flow element. Once all components in the flow have been called, any components not declared in the flow will be called, in arbitrary order. If there is nofixedFloworcapabilityLanguageFlow, then all components in the aggregate will be called in arbitrary order.- Specified by:
collectionProcessCompletein interfaceAnalysisEngine- Overrides:
collectionProcessCompletein classAnalysisEngineImplBase- Throws:
AnalysisEngineProcessException- if an exception occurs during processing
-
getPool
protected org.apache.uima.internal.util.AnalysisEnginePool getPool()Gets the AnalysisEngine pool used to serve process requests.- Returns:
- the AnalysisEngine pool
-
getTimeout
protected int getTimeout()Gets the timeout period, after which an exception will be thrown if no AnalysisEngine is available in the pool.- Returns:
- the timeout period in milliseconds
-