Блокировка периода (постановка)

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
Строка 11: Строка 11:
 
* В процессе вычисления правил должны быть минимизированы обращения к базе данных
 
* В процессе вычисления правил должны быть минимизированы обращения к базе данных
  
 +
<toggledisplay showtext="Краткое описание существующего механизма блокировки периода." hidetext="Скрыть">
 
Изначально, блокировка периода распространялась на все документы и всех пользователей системы. Позже, была добавлена возможность исключить некоторые группы пользователей из блокировки и, наконец, мы добавили возможность исключать некоторые типы документов. Но, период, а точнее дата, до которой запрещается изменять записи в БД, остается фиксированной константой.
 
Изначально, блокировка периода распространялась на все документы и всех пользователей системы. Позже, была добавлена возможность исключить некоторые группы пользователей из блокировки и, наконец, мы добавили возможность исключать некоторые типы документов. Но, период, а точнее дата, до которой запрещается изменять записи в БД, остается фиксированной константой.
  
<toggledisplay showtext="Существующий механизм блокировки периода" hidetext="Скрыть">
 
 
За определение: подпадает конкретный тип документа под блокировку или нет, отвечает процедура [[gd_p_exclude_block_dt]], которая возвращает 1, если переданный идентификатор типа документа не блокируется и 0 в противном случае. Процедура формируется в окне [[Tgd_dlgOptions]] при выборе типов документов исключаемых из блокировки. Системными составляющими механизма блокировки периода являются генераторы [[gd_g_block]] и [[gd_g_block_group]]. Первый хранит дату, до которой документы считаются заблокированными, а второй -- битовую маску групп пользователей, на которых распространяется блокировка. Механизм реализуется с помощью 12-ти триггеров, по три на каждую из четырех таблиц: [[gd_document]], [[AC_ENTRY|ac_entry]], [[AC_RECORD|ac_record]] и [[INV_MOVEMENT|inv_movement]]. Существующий триггер блокировки периода выглядит [[Триггер блокировки периода (старая версия)|следующим образом]]. В случае нарушения условия блокировки вызывается исключение [[gd_e_block]].
 
За определение: подпадает конкретный тип документа под блокировку или нет, отвечает процедура [[gd_p_exclude_block_dt]], которая возвращает 1, если переданный идентификатор типа документа не блокируется и 0 в противном случае. Процедура формируется в окне [[Tgd_dlgOptions]] при выборе типов документов исключаемых из блокировки. Системными составляющими механизма блокировки периода являются генераторы [[gd_g_block]] и [[gd_g_block_group]]. Первый хранит дату, до которой документы считаются заблокированными, а второй -- битовую маску групп пользователей, на которых распространяется блокировка. Механизм реализуется с помощью 12-ти триггеров, по три на каждую из четырех таблиц: [[gd_document]], [[AC_ENTRY|ac_entry]], [[AC_RECORD|ac_record]] и [[INV_MOVEMENT|inv_movement]]. Существующий триггер блокировки периода выглядит [[Триггер блокировки периода (старая версия)|следующим образом]]. В случае нарушения условия блокировки вызывается исключение [[gd_e_block]].
  

Версия 16:41, 16 августа 2010

Требования к системе блокировки изменения данных:

  • Правила блокировки должны являться бизнес-объектами и храниться в самой базе данных
  • Правила блокировки можно передавать с помощью настроек
  • Правило можно устанавливать для любой таблицы
  • При вычислении правила можно обращаться к:
    • Полям таблицы
    • Встроенным функциям (например CURRENT_DATE)
    • Глобальным переменным
  • Правила вычисляются на стороне сервера с помощью триггеров
  • В процессе вычисления правил должны быть минимизированы обращения к базе данных

UNIQ18552d987f203fe2-toggledisplay-00000000-QINU

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты