Skip to content

Tx #111

@gennady-lebedev

Description

@gennady-lebedev

есть Application, в котором описана логика, здесь задаем композицию вызова на модулях команд. И есть модули, что реализуют сами команды.
Тогда я бы хотел, что транзакции - это не ещё один модуль, а слой между аппликом и модулями. Когда мы открываем транзакцию, мы не только создаём ресурсы в узком смысле(транзакция к бд), а дублируем в ней модули (без данных), которые провязываем логикой с «базовыми» модулями, где хранятся данные. Если транзакция заканчивается комитом, то мы повторяем команды из транзакции на «базовых» модулях. Тут же и включается лок, что записываться в системе может только одна транзакция единовременно. По окончанию транзакцию с событиями - сохраняем в хранилище.
Проверяем, что следующая транзакция на исполнения, осталось валидной.
Вызов команд на уровне апплика превращается в transaction.exec(Module, Command).

Так же походу потребуется доработка:

  1. выделить precondition для команд
  2. Разделить модули на statefull и stateless (тут ещё подумать надо)
  3. Продумать кейс, когда один модуль лезет в другой мимо транзакции

Так же если транзакцию к бд немного покрутить, то можем реализовать возможность транзакцию «отложить» на пару дней, а потом восстановить и закончить

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions