Package ru.bitel.bgbilling.kernel.task.server.bean

# Class RunTask

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.kernel.task.server.bean.RunTask

All Implemented Interfaces:
  `Serializable`, `Runnable`

Direct Known Subclasses:
  `AdvancePaymentsManual`, `AssistRecurringRunTask`, `AutoprintAutoBatch`, `AutoprintReprintAsIsBatch`, `AutoprintReprintAutoBatch`, `BillDocsSender`, `BillDocsSenderForAll`, `CommentUpdater`, `InetRecalculator`, `RunTaskRecalculator`, `SubscribeSynchronizer`, `TvRecalculator`, `VoiceBalanceSetter`

public abstract class RunTask extends ru.bitel.bgbilling.kernel.base.server.logger.BGLogger implements Runnable, Serializable
Периодическая/тяжёлая задача в представлении Runnable который запускается в пуле. После запуска выполняет executeTask таска-класса и после завершения executeTask удаляет запись о себе из таблицы запущенных задач (scheduled_task_run). Обычно в executeTask создаётся таск-задача (из тех что периодические, например) и делается её run напрямую.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Setup`
  `setup`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RunTask()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract void`
  `executeTask()`
  `abstract String`
  `getDescription()`
  `int`
  `getQueueId()`
  `String`
  `getUniqueKeyParallel()`
  Ключ, который показывает уникальность этой задачи для запуска одновременно/параллельно.
  `String`
  `getUniqueKeyQueue()`
  Ключ, который показывает уникальность этой задачи для очереди.
  `RunTask`
  `init(Setup setup)`
  `protected void`
  `removeMyselfFromTable()`
  `final void`
  `run()`
  `void`
  `setQueueId(int id)`

  ### Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger

  `error, error, error, getLogger, logError, logError, warn`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### setup

    protected transient Setup setup

- ## Constructor Details

  - ### RunTask

    public RunTask()

- ## Method Details

  - ### setQueueId

    public void setQueueId(int id)

  - ### getQueueId

    public int getQueueId()

  - ### getDescription

    public abstract String getDescription()

  - ### init

    public RunTask init(Setup setup) throws Exception
    Throws:
      `Exception`

  - ### run

    public final void run()
    Specified by:
      `run` in interface `Runnable`

  - ### removeMyselfFromTable

    protected void removeMyselfFromTable()

  - ### executeTask

    protected abstract void executeTask()

  - ### getUniqueKeyQueue

    public String getUniqueKeyQueue()
    Ключ, который показывает уникальность этой задачи для очереди. Задачи с одинаковым ключом, не равным null: при выборке шедулером (в TaskRunProcessor) считаются дублирующимися и схлопываются в одну. Если надо, чтобы задачи не копились кучей одинаковых в очереди - надо перегрузить этот метод. Пример: синхронизация одной и той же сущности в cerbercrypt. Хорошей практикой является ключ типа "модуль-мид-имятаска-какиетохарактеристикизадачи".

  - ### getUniqueKeyParallel

    public String getUniqueKeyParallel()
    Ключ, который показывает уникальность этой задачи для запуска одновременно/параллельно. Задачи с одинаковым ключом, не равным null: если сейчас уже запущена задача с таким же ключом, то эта задача остаётся в очереди, не запускается параллельно. Если надо, чтобы задачи не выполнялись параллельно, а ждали завершения предыдущей такой же - надо перегрузить этот метод. Пример: синхронизация в одну и ту же CAS разных сущностей cerbercrypt (чаще всего на всякий случай). Хорошей практикой является ключ типа "модуль-мид-имятаска".