org.apache.uima.collection.impl.cpm.engine
Class ArtifactProducer

java.lang.Object
  extended by java.lang.Thread
      extended by org.apache.uima.collection.impl.cpm.engine.ArtifactProducer
All Implemented Interfaces:
java.lang.Runnable

public class ArtifactProducer
extends java.lang.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
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
 int threadState
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
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
 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.
 java.lang.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 reading
 void setCPMStatTable(java.util.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 process
 void setProcessTrace(ProcessTrace aProcTrace)
           
 void setUimaTimer(UimaTimer aTimer)
          Plug in Custom Timer to time events
 void 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, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

threadState

public int threadState
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 cpe
aPool - - 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(java.util.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 java.lang.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:
java.lang.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.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

getLastDocId

public java.lang.String getLastDocId()

invalidate

public void invalidate(CAS[] aCasList)


Copyright © 2010 The Apache Software Foundation. All Rights Reserved.