Skip to content

Tx #111

Description

@gennady-lebedev

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

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

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions