bitel.billing.server.task.bean

## Class RunTask

- java.lang.Object
- - bitel.billing.server.task.bean.RunTask

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Runnable
  Direct Known Subclasses:
    CommentUpdater, RunTaskRecalculator

      public abstract class RunTask
      extends java.lang.Object
      implements java.lang.Runnable, java.io.Serializable

  Периодическая/тяжёлая задача в представлении Runnable который запускается в пуле. После запуска выполняет executeTask таска-класса и после завершения executeTask удаляет запись о себе из таблицы запущенных задач (scheduled_task_run). Обычно в executeTask создаётся таск-задача (из тех что периодические, например) и делается её run напрямую.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected org.apache.log4j.Logger` | `log`
    `protected Setup` | `setup`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RunTask()`

  - ### Method Summary

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

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

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

- - ### Field Detail

    - #### setup

          protected transient Setup setup

    - #### log

          protected transient org.apache.log4j.Logger log

  - ### Constructor Detail

    - #### RunTask

          public RunTask()

  - ### Method Detail

    - #### setQueueId

          public void setQueueId(int id)

    - #### getQueueId

          public int getQueueId()

    - #### getDescription

          public abstract java.lang.String getDescription()

    - #### init

          public void init(Setup setup)

    - #### run

          public final void run()

      Specified by:
        `run` in interface `java.lang.Runnable`

    - #### removeMyselfFromTable

          protected void removeMyselfFromTable()

    - #### executeTask

          protected abstract void executeTask()

    - #### getUniqueKeyQueue

          public java.lang.String getUniqueKeyQueue()

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

    - #### getUniqueKeyParallel

          public java.lang.String getUniqueKeyParallel()

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