de.bsvrz.ars.ars.mgmt.tasks
Class MultiTask

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.ars.ars.mgmt.tasks.Task
          extended by de.bsvrz.ars.ars.mgmt.tasks.MultiTask
All Implemented Interfaces:
SuspendableTask, Runnable
Direct Known Subclasses:
QueryTask

public abstract class MultiTask
extends Task

Abstrakte Basisklasse fuer diejenigen Tasks, die mehr als einmal vorkommen und deswegen von einem TaskMgr verwaltet werden. Die verwalteten Tasks müssen völlig unabhängig voneinander sein und dürfen auch keine Reihenfolgenabhängigkeiten (wie z.B. die ArchiveTask) beinhalten.

Author:
beck et al. projects GmbH, Alexander Schmidt

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
protected  ResultData resultData
          Aktueller Datensatz/Anfrage/Auftrag.
private  int taskIndex
           
protected  MultiTaskManager taskMgr
          TaskMgr der diese MultiTask verwaltet
 
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
MultiTask(ArchiveManager archiveMgr, MultiTaskManager tMgr)
          Konstruktor fuer Task.
 
Method Summary
 void doWork(ResultData rd)
          Diese Methode weckt den schlafenden Thread auf und führt die zu überschreibende Methode work() aus.
 int getTaskIndex()
           
 void run()
          Endlosschleife des Tasks.
 void setTaskIndex(int idx)
           
protected abstract  void work()
          Diese Methode ist zu überschreiben, um die konkrete Aufgabe der Task zu implementieren.
 
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, 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
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

taskMgr

protected MultiTaskManager taskMgr
TaskMgr der diese MultiTask verwaltet


taskIndex

private int taskIndex

resultData

protected ResultData resultData
Aktueller Datensatz/Anfrage/Auftrag. Muss auf null gesetzt werden wenn kein solcher vorliegt.

Constructor Detail

MultiTask

public MultiTask(ArchiveManager archiveMgr,
                 MultiTaskManager tMgr)
Konstruktor fuer Task.

Parameters:
tMgr - Task-Manager
dTree - DataIdentTree
pMgr - Persistence-Manager
Method Detail

setTaskIndex

public void setTaskIndex(int idx)

getTaskIndex

public int getTaskIndex()

doWork

public void doWork(ResultData rd)
Diese Methode weckt den schlafenden Thread auf und führt die zu überschreibende Methode work() aus.

Parameters:
rd - ResultData: codierter Auftrag

run

public void run()
Endlosschleife des Tasks. Wartet bis ein neues ResultData mit doWork() zur Bearbeitung uebergeben worden ist und ruft die Methode work() auf.

Specified by:
run in interface Runnable
Overrides:
run in class Thread

work

protected abstract void work()
Diese Methode ist zu überschreiben, um die konkrete Aufgabe der Task zu implementieren. In der Methode soll keine weitere Synchronisation stattfinden.