Система поддерживает транзакционные операции.
Transaction - конструктор порождающий инстанс транзакции. Транзакция - сущность гарантированно сохранённая в системе. Гарантия сохранения обеспечивается записью данных на диск, проверкой что записались именно эти данные и после этого ответом о том что транзакция записалась.
На примере купюроприёмника - в момент когда купюра была помещена в устройство создаётся запись о том что получили 500 рублей. Только после того как запись была успешно создана - купюроприёмнику отправляется команда "сожрать деньги".
Транзакции имеют тип, статус и набор произвольных данных.
При изменении статуса производится запись о дате изменения статуса.
Финализированные транзакции удаляются.
TransactionProcessor - обработчик транзакций определённого типа. Если существует обработчик с типом соответствующим типу созданной транзакции, то транзакция передаётся в обрабатывающую функцию. Обработчик может перевести транзакцию в финальный статус или произвести любые другие действия.
Транзакции становятся в очередь выполнения и отдаются в TransactionProcessor в порядке FIFO.
Транзакции разных типов могут обрабатываться параллельно.