java.lang.Object
ru.bitel.bgbilling.kernel.task.server.bean.RunTask
All Implemented Interfaces:
java.io.Serializable, java.lang.Runnable
Direct Known Subclasses:
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 (чаще всего на всякий случай). Хорошей практикой является ключ типа "модуль-мид-имятаска".