Class ContractSetStatusLogicEvent

java.lang.Object
All Implemented Interfaces:
java.io.Serializable

public class ContractSetStatusLogicEvent
extends LocalEvent
Синхронное событие - задание логики перетирания статусов.
Вызывается, когда в конфиге включено задание логики смены/перетирания статуса скриптом.
Унаследован от LocalEvent
See Also:
Serialized Form
  • Constructor Details

    • ContractSetStatusLogicEvent

      public ContractSetStatusLogicEvent​(int userId, ContractStatus status1, ContractStatus status2, ContractStatus originalStatus)
      Конструктор события.
      Parameters:
      userId - - id пользователя, сгенерировавшего событие
      status1 - - статус, который находится в БД, "старый", до него сейчас дошло дело при обработке цепочки смен статусов уже лежащих у нас.
      status2 - - статус, который кладётся сейчас, "новый", он уже может отличаться от оригинального originalStatus предыдущими вызовами этого же события, то есть быть "покромсаным".
      originalStatus - - оригинальный статус, который кладётся сейчас, этот тот статус который изначально пришёл в метод смены статуса, тот который мы стали ставить в клиенте, например.
  • Method Details

    • setProcessed

      public void setProcessed​(boolean isProcessed)
      Если скрипт выполнил задуманную логику, то надо установить в скрипте этот флаг.
      Иначе после скрипта будет работать штатная логика!
      Это почти наверняка вызовет странные эффекты. Имеется ввиду исключительно работа по решению вопроса конкретной пары статусов + обновление лежащего в БД итд.
      Parameters:
      isProcessed - - флаг обработки события
      true, если обработано
    • getStatus1

      public ContractStatus getStatus1()
      Статус, который лежит в БД уже, "старый". Его надо подрезать каким-либо образом. Или что-то типа того.
      Этот объект бесполезно менять. Надо сразу обновить его в БД. Если он разбился на несколько частей - аналогично.
      Если перетёрся - удалить из БД. Итд. Смотреть пример штатной логики, реализованной скриптом в wiki.
      Returns:
      status1 - статус договора
    • getStatus2

      public ContractStatus getStatus2()
      Статус, который мы пытаемся установить, "новый". Изначально, в штатной логике нет возможности ему измениться, то есть он всегда и всех перетирает.
      Но в скрипте можно делать хоть что. Например, отколоть кусочки от него "неперетираемым" итд. Этот объект можно в скрипте изменить.
      Например, этот статус можно сократить. Или изменить, тогда на выходе из скрипта тот статус будет уже новым (и в следующий раз придёт для следующего кусочка уже изменённый). И тогда он уже может отличаться от originalStatus, который изначально пришёл в метод смены статуса.
      Returns:
      status2 - статус договора
    • isProcessed

      public boolean isProcessed()
    • getOriginalStatus

      public ContractStatus getOriginalStatus()
      Оригинальный статус, который пришёл в changeStatus изначально.
      Может отличаться от status2, если тот уже был изменён на предыдущих шагах итд.
      Returns:
      originalStatus - статус договора
    • getTypeId

      @Deprecated public int getTypeId()
      Deprecated.
      Использовать проверку instanceof.
      Overrides:
      getTypeId in class Event
      Returns: