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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
Строка 2: Строка 2:
  
 
* Правила блокировки должны являться бизнес-объектами и храниться в самой базе данных
 
* Правила блокировки должны являться бизнес-объектами и храниться в самой базе данных
* Правило может устанавливаться для любой таблицы
+
* Правила блокировки можно передавать с помощью настроек
 +
* Правило можно устанавливать для любой таблицы
 
* При вычислении правила можно обращаться к:
 
* При вычислении правила можно обращаться к:
 
** Полям таблицы
 
** Полям таблицы
 
** Встроенным функциям (например CURRENT_DATE)
 
** Встроенным функциям (например CURRENT_DATE)
 
** Глобальным переменным
 
** Глобальным переменным
* Правила реализовываются на стороне сервера с помощью тригеров
+
* Правила вычисляются на стороне сервера с помощью триггеров
 
* В процессе вычисления правил должны быть минимизированы обращения к базе данных
 
* В процессе вычисления правил должны быть минимизированы обращения к базе данных
  
<!--
 
 
Изначально, блокировка периода распространялась на все документы и всех пользователей системы. Позже, была добавлена возможность исключить некоторые группы пользователей из блокировки и, наконец, мы добавили возможность исключать некоторые типы документов. Но, период, а точнее дата, до которой запрещается изменять записи в БД, остается фиксированной константой.
 
Изначально, блокировка периода распространялась на все документы и всех пользователей системы. Позже, была добавлена возможность исключить некоторые группы пользователей из блокировки и, наконец, мы добавили возможность исключать некоторые типы документов. Но, период, а точнее дата, до которой запрещается изменять записи в БД, остается фиксированной константой.
  
== Существующий механизм блокировки периода ==
+
<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]].
  
Строка 22: Строка 21:
 
* Нельзя устанавливать разные периоды для разных групп пользователей;
 
* Нельзя устанавливать разные периоды для разных групп пользователей;
 
* Дата блокировки задается фиксированной константой.
 
* Дата блокировки задается фиксированной константой.
 +
</toggledisplay>
  
 +
<!--
 
== Новый механизм блокировки ==
 
== Новый механизм блокировки ==
  

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

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

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

Изначально, блокировка периода распространялась на все документы и всех пользователей системы. Позже, была добавлена возможность исключить некоторые группы пользователей из блокировки и, наконец, мы добавили возможность исключать некоторые типы документов. Но, период, а точнее дата, до которой запрещается изменять записи в БД, остается фиксированной константой.

UNIQ3d8021e763608cc6-toggledisplay-00000000-QINU

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

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