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

# Class RunTask

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

All Implemented Interfaces:
  `java.io.Serializable`, `java.lang.Runnable`

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

    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 | Description
  --- | --- | ---
  `protected org.apache.logging.log4j.Logger` | `log` |
  `protected Setup` | `setup` |

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `RunTask()` |

- ## Method Summary

  Modifier and Type | Method | 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 Details

  - ### setup

    protected transient Setup setup

  - ### log

    protected transient org.apache.logging.log4j.Logger log

- ## Constructor Details

  - ### RunTask

    public RunTask()

- ## Method Details

  - ### 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 (чаще всего на всякий случай). Хорошей практикой является ключ типа "модуль-мид-имятаска".