Блокировка периода (постановка)
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| Строка 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