Class ArtifactProducer
- java.lang.Object
-
- java.lang.Thread
-
- org.apache.uima.collection.impl.cpm.engine.ArtifactProducer
-
- All Implemented Interfaces:
Runnable
public class ArtifactProducer extends Thread
Component responsible for continuously filling a work queue with bundles containing Cas'es. The queue is shared with a Processing Pipeline that consumes bundles of Cas. As soon as the the bundle is removed from the queue, this component fetches data from configured Collection Reader and enques it onto the queue. This component facilitates asynchronous reading and processing of CAS by seperate threads running in the CPE. When end of processing is reached due to CPM shutdown or max number of entities are processed a special token, called EOFToken is placed onto a queue. It marks end of processing for Processing Units. No more data is expected to be placed on the work queue. The Processing Threads upon seeing the EOFToken are expected to complete processing and do necessary cleanup.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
-
Field Summary
Fields Modifier and Type Field Description int
threadState
-
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
-
Constructor Summary
Constructors Constructor Description ArtifactProducer(CPMEngine acpm)
Instantiates and initializes this instance.ArtifactProducer(CPMEngine acpm, CPECasPool aPool)
Construct instance of this class with a reference to the cpe engine and a pool of cas'es.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cleanup()
Null out fields of this object.void
fillQueue()
Fills the queue up to capacity.long
getCollectionReaderTotalFetchTime()
Returns total time spent when fetching entities from a CollectionReader.String
getLastDocId()
void
invalidate(CAS[] aCasList)
boolean
isRunning()
void
run()
Runs this thread until the CPM halts or the CollectionReader has no more entities.void
setCollectionReader(BaseCollectionReader aCollectionReader)
Assign CollectionReader to be used for readingvoid
setCPMStatTable(Map aStatTable)
Add table that will contain statistics gathered while reading entities from a Collection This table is used for non-uima reports.void
setNumEntitiesToProcess(long aNumToProcess)
Assign total number of entities to processvoid
setProcessTrace(ProcessTrace aProcTrace)
void
setUimaTimer(UimaTimer aTimer)
Plug in Custom Timer to time eventsvoid
setWorkQueue(BoundedWorkQueue aQueue)
Assigns a queue where the artifacts produced by this component will be deposited-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
-
-
-
Constructor Detail
-
ArtifactProducer
public ArtifactProducer(CPMEngine acpm)
Instantiates and initializes this instance.- Parameters:
acpm
-
-
ArtifactProducer
public ArtifactProducer(CPMEngine acpm, CPECasPool aPool)
Construct instance of this class with a reference to the cpe engine and a pool of cas'es.- Parameters:
acpm
- - reference to the cpeaPool
- - pool of cases
-
-
Method Detail
-
isRunning
public boolean isRunning()
-
setUimaTimer
public void setUimaTimer(UimaTimer aTimer)
Plug in Custom Timer to time events- Parameters:
aTimer
- - custom timer
-
setProcessTrace
public void setProcessTrace(ProcessTrace aProcTrace)
-
getCollectionReaderTotalFetchTime
public long getCollectionReaderTotalFetchTime()
Returns total time spent when fetching entities from a CollectionReader. This provides a way of gauging throughput of a particular CR.- Returns:
- total time spent when fetching entities. -1 when the fetch time is unknown.
-
cleanup
public void cleanup()
Null out fields of this object. Call this only when this object is no longer needed.
-
setNumEntitiesToProcess
public void setNumEntitiesToProcess(long aNumToProcess)
Assign total number of entities to process- Parameters:
aNumToProcess
- - number of entities to read from the Collection Reader
-
setCollectionReader
public void setCollectionReader(BaseCollectionReader aCollectionReader)
Assign CollectionReader to be used for reading- Parameters:
aCollectionReader
- - collection reader as source of data
-
setWorkQueue
public void setWorkQueue(BoundedWorkQueue aQueue)
Assigns a queue where the artifacts produced by this component will be deposited- Parameters:
aQueue
- - queue for the artifacts this class is producing
-
setCPMStatTable
public void setCPMStatTable(Map aStatTable)
Add table that will contain statistics gathered while reading entities from a Collection This table is used for non-uima reports.- Parameters:
aStatTable
-
-
fillQueue
public void fillQueue() throws Exception
Fills the queue up to capacity. This is called before activating ProcessingPipeline as means of optimizing processing. When pipelines start up there are already entities in the work queue to process.- Throws:
Exception
-
run
public void run()
Runs this thread until the CPM halts or the CollectionReader has no more entities. It continuously fills the work queue with entities returned by the CollectionReader.
-
getLastDocId
public String getLastDocId()
-
invalidate
public void invalidate(CAS[] aCasList)
-
-