Назначение

Шаблон Transaction Script (Сценарий транзакции) предназначен для реализации бизнес-логики в виде последовательности транзакций.

Решение

Предлагается рассматривать предметную область как множество транзакций, выполняемых в системе. Каждая бизнес-транзакция выполняется как независимая процедура, в рамках которой обрабатывается вся информация, необходимая для успешного выполнения транзакции.

Существует два способа разделения бизнес-транзакций по классам системы. В первом способе используется один класс для реализации всех возможных бизнес-транзакций. Обычно такой класс содержит метод обработки бизнес-транзакций, содержащий множество операторов IF или оператор SWITCH со множественным выбором. Каждая бизнес-транзакция выполняется в одной из веток оператора IF или SWITCH. Мы не рекомендуем применять такой вариант реализации ни при каких обстоятельствах в силу его абсолютной негибкости.

Второй вариант реализации подразумевает синтез абстрактного (чаще всего) класса, в интерфейсе которого объявлен метод запуска бизнес-транзакции. Подклассы этого класса реализуют конкретные бизнес-транзакции.

Второй вариант позволяет изменять состав обрабатываемых бизнес-транзакций, не внося глобальных изменений системы (в случае с языками программирования, поддерживающими рефлексию, добавить новый вариант поведения можно, изменив лишь конфигурацию системы).

 

Шаблон Transaction Script

Результаты

Формализует обработку бизнес-логики, представляя ее в виде множества процедур (в одном или нескольких классах), каждая из которых выполняет одну бизнес-транзакцию.

Главным достоинством типового           решения сценария транзакции является простота, однако по мере усложнения бизнес-логики становится все труднее содержать ее в хорошо структурированном виде.

Шаблон Transaction Script хорошо подходит для предметных областей с простыми бизнес-процессами и бизнес-правилами.