СТАНДАРТНЫЕ И УНИВЕРСАЛЬНЫЕ ТРАНЗАКЦИИ В АБС БИСКВИТ

 

СТАНДАРТНЫЕ ТРАНЗАКЦИИ


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

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

Процедура стандартной транзакции должна иметь 2 входных параметра передаваемые ей автоматически при запуске.

DEF INPUT PARAM in-op-date AS DATE  NO-UNDO. 
DEF INPUT PARAM oprid      AS RECID NO-UNDO.
  • in-op-date - дата операционного дня, в котором осуществлен запуск транзакции;
  • oprid - RECID стандартной транзакции.


УНИВЕРСАЛЬНЫЕ ТРАНЗАКЦИИ


Все универсальные транзакции в АБС Бисквит, в отличие от стандартных транзакций, построены на одной универсальной процедуре g-trans.p. В основе механизма универсальных транзакций лежит создание Instance объекта класса метасхемы и дальнейшая работа с ним посредством процедур методов данного класса.

Что такое Instance и как с ним работать было подробно разобрано в статье INSTANCE - ЭКЗЕМПЛЯР ОБЪЕКТА.

Все методы действий, кроме методов FORM и DYNFORM должны иметь следующий набор параметров:

DEF INPUT PARAM iClass    AS CHAR   NO-UNDO.
DEF INPUT PARAM iInstance AS HANDLE NO-UNDO.

Обработка шаблона транзакции осуществляется в следующей последовательности:

  1. Выполнить до;
  2. Создание Instance объекта класса шаблона;
  3. Расчет и заполнение реквизитов в Instance;
  4. Вызов методов действий шаблона;
  5. Выполнить после.

Первым делом рассчитываются все выражения в блоке "Выполнить до".

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

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

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

Соответствие действий и вызываемых методов определяется в классификаторе - Действие. Если процедура какого-то метода не определена на классе метасхемы, то будет осуществлен вызовов процедуры определенной по умолчанию для данного метода.

Список процедур которые будут вызываться отображаются на самом шаблоне, при этом процедуры по умолчанию заключаются в угловые скобки.

В завершение транзакции выполняются выражения определенные в разделе "Выполнить после".

Для работы с транзакциями в АБС Бисквит существует библиотека pp-trans.p.

В процессе обработки шаблонов формируется так называемый буфер транзакции. Данный буфер содержит различные значения, полученные входе выполнения операций в шаблонах, а так же ссылки на Instance объектов создаваемых в транзакции.

Данный буфер представляет собой статическую временную таблицу tTrans, определенную в библиотеке pp-trans.p, а точнее в подключаемом в ней инклюд-файле transtt.def.

Вы здесь: Главная ИБС Бисквит СТАНДАРТНЫЕ И УНИВЕРСАЛЬНЫЕ ТРАНЗАКЦИИ СТАНДАРТНЫЕ И УНИВЕРСАЛЬНЫЕ ТРАНЗАКЦИИ В АБС БИСКВИТ