Skip to main content
Version: 0.7.4

События (Event)

Claptrap — это шаблон Actor, основанный на источнике событий.События, естественно, играют решающую роль.

Если вы хотите управлять Claptrap, вам нужно передать событие на него.Событие также является единственным параметром для изменения Claptrap State.Таким образом, при построении системы с помощью Claptrap все системные операции преобразуются в события и передается в Claptrap.События имеют следующие характеристики:

События в порядке#

Каждое событие содержит уникальный серийный номер.В этом фреймворку серийный номер называется номером версии ( Version ).Номер версии события — это последовательность, которая увеличивается от 1 до 1.Упорядоченность событий гарантирует, что вычисления состояния не имеют проблем с вхожестью.Это важная гарантия надежности данных о состоянии.

Упорядоченность событий непосредственно влияет на последовательность событий выполнения Claptrap.Поскольку необходимо обеспечить такой порядок, Claptrap должен обрабатывать события по каждому при выполнении событий.Это, случается, естественно, соответствует однопоточным свойствам шаблона Actor.

События неизменяемы#

Как только событие возникает, оно неизменяемо.Отслеживание событий делает данные надежными из-за неизменяемости событий.Поскольку состояние после выполнения любого события может быть восстановлено до тех пор, пока событие считывается.Но неизменяемость не является физическим ограничением.По-прежнему можно изменять данные событий в физическом хранилище.Но имейте в виду, что это опасное и крайне не рекомендуется поведение.Давайте свяжемся с "принципом открытия и закрытия" в шаблоне проектирования, классический можно резюмировать как "открытый для расширения, закрытый для модификации".Почему акцент делается на "закрытии изменений"?По мнению автора, причина закрытия изменений на самом деле из-за неизвестности, вызванной изменениями.Данные, полученные из-за кода, выполненного в прошлом.Все они сформировали определенную закрытость.Они были проверены существующими тестами.Если вы попытаетесь изменить их, вам обязательно нужно будет настроить соответствующие тесты, что еще больше усугубит изменения, что не является хорошей вещью.Неизменяемость событий является своего рода природой, а также требованием.

Что делать, если прошлые данные о событиях были неверными из-за ошибки, и теперь необходимо исправить ошибку?Советую автору не пытаться изменить существующее событие.Для исправления текущего состояния следует добавить новые события и алгоритмы.Не корректируйте старое содержимое.Автор считает, что это больше в соответствии с принципом открытия и закрытия.Разработчики могут по своему усмотрению.

События являются постоянными#

События являются важными параметрами для обеспечения правильности Claptrap State.Поэтому необходимо убедиться, что события сохраняются навсегда.Однако это не абсолютный случай, когда события допускаются к потере, если удовлетворяются следующие:

  1. Существует постоянный моментальный снимок State перед потерянным событием
  2. Соответствующий Claptrap закончил свою жизнь и никогда больше не активируется

И наоборот, если вышеуказанные условия не выполнены, необходимо убедиться, что события в производственной среде правильно хранятся на уровне сохраняемого использования и что существуют соответствующие средства предотвращения стихийных бедствий.

ICON#

claptrap