Сохранение параметров грида
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) (→Предполагаемый порядок выполнения) |
||
| (не показаны 14 промежуточных версий 1 участника) | |||
| Строка 1: | Строка 1: | ||
| + | Разрабатывается система для работы со всеми визуальными настройками платформы, но, в первую очередь, для работы с визуальными настройками гридов. | ||
| − | Сейчас параметры грида хранятся в двоичном потоке, в Хранилище. Причем для каждого грида, для каждой его колонки, сохраняются все параметры вне зависимости от того используются они или нет, отличаются от установленных на уровне колонки таблицы и домена или нет. | + | Сейчас параметры грида хранятся в двоичном потоке, в Хранилище. Причем для каждого грида, для каждой его колонки, сохраняются все параметры вне зависимости от того используются они или нет, отличаются от установленных на уровне колонки таблицы и домена или нет. На текущей базе '''etalon_complete''' суммарный объем настроек гридов около 24.7 Мб, количество записей 4766. |
| − | + | Ядром системы будет объект '''TgdStyleManager''', который отвечает за следующие функции: | |
| + | * Считывание настроек из реляционных таблиц. | ||
| + | * Хранение в оперативной памяти в структурах, обеспечивающих максимальную скорость доступа. | ||
| + | * Каскадный поиск подходящих настроек в соответствии с переданным контекстом. | ||
| + | * Кэширование настроек между запусками программы. Сохранение в файле на локальном жестком диске при выходе. При запуске проверяется: менялись ли настройки в БД и если нет, то берутся из файла. | ||
| + | * Пакетная запись изменений, сделанных в течении сессии, в базу данных по команде или при завершении работы программы. | ||
| + | * Копирование всех или выборочных настроек между пользователями системы или от пользователя системы в общие настройки. | ||
| + | * Оптимизация настроек -- удаление частных настроек, которые дублируют общие настройки. "Подъем" настроек на более общий уровень. | ||
| − | + | Менеджер стилей работает на подобии технологии CSS. Например, запрашивается гарнитура шрифта для некоторой колонки грида: | |
| − | + | # Сначала ищем указанный параметр по имени колонки, имени грида и имени типа формы (с учетом подтипа). | |
| − | + | # Если не найден и грид подсоединен к БО, то ищем для бизнес-класса и имени поля. | |
| − | + | # Если не найден, то ищем для таблицы и поля. | |
| − | + | # Если не найден и для поля определен домен, то ищем для домена. | |
| − | + | # Если не найден, то ищем для типа данных. | |
| − | * | + | # Если не найден и определены общие параметры, то берем из них. |
| − | * | + | |
| − | * | + | При этом, на каждом шаге ищем в следующем порядке: |
| + | |||
| + | # Для текущего пользователя. | ||
| + | # Если не найден, то для всех пользователей. | ||
| + | # Для текущей темы. | ||
| + | # Если нет, то общие (без темы). | ||
| + | |||
| + | Сейчас при загрузке грида визуальные настройки считываются из двоичного потока и помещаются в соответствующие свойства объекта TColumn, откуда потом берутся при отрисовке грида на экране. Все останется точно так же за исключением того, что свойства будут загружаться не из двоичного потока а из менеджера стилей. | ||
| + | |||
| + | ===Таблицы=== | ||
| + | |||
| + | Скрипты таблиц и сопутствующих триггеров располагаются в файле '''at_attribute.sql'''. | ||
| + | |||
| + | * [[AT_THEME]] | ||
| + | * [[AT_STYLE_OBJECT]] | ||
| + | * [[AT_STYLE]] | ||
| + | |||
| + | ===Конвертация === | ||
| + | |||
| + | # Сделать парсер с помощью которого разобрать двоичные потоки настроек гридов и закинуть их в таблицы. | ||
| + | # Оптимизировать настройки, перенеся повторяющиеся значения на самый общий уровень. | ||
| + | # Старые потоки останутся в БД до того момента, когда мы сможем заменить все экзешники на предприятиях. Старые экзешники будут продолжать работать со старыми потоками, читать их и записывать в них. | ||
| + | # При использовании нового экзешника старые потоки не будут грузится при загрузке Хранилища. | ||
| + | |||
| + | ===Диалоговое окно настройки грида=== | ||
| + | |||
| + | # Увеличить размер и перекомпоновать с учетом того, что экраны стали больше и нет необходимости разбивать на много вкладок. | ||
| + | # Вкладку ''Запрос'' выкинуть (перенести) в окно ''Свойства объекта''. | ||
| + | # Вкладку ''Шаблоны'' выкинуть. | ||
| + | # Должно быть четко видно для какого пользователя мы настраиваем и для какой темы. | ||
| + | # Должно быть четко видно что текущее значение свойства установлено именно для этой колонки, этого грида, или это значение получилось по иерархии от более общего уровня. | ||
| + | # Должна быть возможность как установить значение свойства, так и скинуть его -- тогда будет браться по иерархии. | ||
| + | |||
| + | ==Предполагаемый порядок выполнения== | ||
| + | |||
| + | # Создать таблицы | ||
| + | # Создать конвертацию из двоичных потоков в таблицы | ||
| + | # Реализовать в менеджере стилей загрузку и доступ | ||
| + | # Заменить в колонках считывание настроек из потоков на считывание из менеджера стилей | ||
| + | # Переделать диалоговое окно | ||
| + | # Реализовать в менеджере стилей запись в БД (изменение) | ||
| + | # Реализовать в менеджере стилей оптимизацию (вынос на общий уровень) | ||
| + | # Сделать бизнес-классы, окна для таблиц | ||
| + | |||
| + | |||
| + | http://gsbelarus.com/gs/images/gs/2016/20160301_111422.jpg | ||
[[Category:Постановка]] | [[Category:Постановка]] | ||
| + | |||
| + | __NOTOC__ | ||
Текущая версия на 11:16, 1 марта 2016
Разрабатывается система для работы со всеми визуальными настройками платформы, но, в первую очередь, для работы с визуальными настройками гридов.
Сейчас параметры грида хранятся в двоичном потоке, в Хранилище. Причем для каждого грида, для каждой его колонки, сохраняются все параметры вне зависимости от того используются они или нет, отличаются от установленных на уровне колонки таблицы и домена или нет. На текущей базе etalon_complete суммарный объем настроек гридов около 24.7 Мб, количество записей 4766.
Ядром системы будет объект TgdStyleManager, который отвечает за следующие функции:
- Считывание настроек из реляционных таблиц.
- Хранение в оперативной памяти в структурах, обеспечивающих максимальную скорость доступа.
- Каскадный поиск подходящих настроек в соответствии с переданным контекстом.
- Кэширование настроек между запусками программы. Сохранение в файле на локальном жестком диске при выходе. При запуске проверяется: менялись ли настройки в БД и если нет, то берутся из файла.
- Пакетная запись изменений, сделанных в течении сессии, в базу данных по команде или при завершении работы программы.
- Копирование всех или выборочных настроек между пользователями системы или от пользователя системы в общие настройки.
- Оптимизация настроек -- удаление частных настроек, которые дублируют общие настройки. "Подъем" настроек на более общий уровень.
Менеджер стилей работает на подобии технологии CSS. Например, запрашивается гарнитура шрифта для некоторой колонки грида:
- Сначала ищем указанный параметр по имени колонки, имени грида и имени типа формы (с учетом подтипа).
- Если не найден и грид подсоединен к БО, то ищем для бизнес-класса и имени поля.
- Если не найден, то ищем для таблицы и поля.
- Если не найден и для поля определен домен, то ищем для домена.
- Если не найден, то ищем для типа данных.
- Если не найден и определены общие параметры, то берем из них.
При этом, на каждом шаге ищем в следующем порядке:
- Для текущего пользователя.
- Если не найден, то для всех пользователей.
- Для текущей темы.
- Если нет, то общие (без темы).
Сейчас при загрузке грида визуальные настройки считываются из двоичного потока и помещаются в соответствующие свойства объекта TColumn, откуда потом берутся при отрисовке грида на экране. Все останется точно так же за исключением того, что свойства будут загружаться не из двоичного потока а из менеджера стилей.
[править] Таблицы
Скрипты таблиц и сопутствующих триггеров располагаются в файле at_attribute.sql.
[править] Конвертация
- Сделать парсер с помощью которого разобрать двоичные потоки настроек гридов и закинуть их в таблицы.
- Оптимизировать настройки, перенеся повторяющиеся значения на самый общий уровень.
- Старые потоки останутся в БД до того момента, когда мы сможем заменить все экзешники на предприятиях. Старые экзешники будут продолжать работать со старыми потоками, читать их и записывать в них.
- При использовании нового экзешника старые потоки не будут грузится при загрузке Хранилища.
[править] Диалоговое окно настройки грида
- Увеличить размер и перекомпоновать с учетом того, что экраны стали больше и нет необходимости разбивать на много вкладок.
- Вкладку Запрос выкинуть (перенести) в окно Свойства объекта.
- Вкладку Шаблоны выкинуть.
- Должно быть четко видно для какого пользователя мы настраиваем и для какой темы.
- Должно быть четко видно что текущее значение свойства установлено именно для этой колонки, этого грида, или это значение получилось по иерархии от более общего уровня.
- Должна быть возможность как установить значение свойства, так и скинуть его -- тогда будет браться по иерархии.
[править] Предполагаемый порядок выполнения
- Создать таблицы
- Создать конвертацию из двоичных потоков в таблицы
- Реализовать в менеджере стилей загрузку и доступ
- Заменить в колонках считывание настроек из потоков на считывание из менеджера стилей
- Переделать диалоговое окно
- Реализовать в менеджере стилей запись в БД (изменение)
- Реализовать в менеджере стилей оптимизацию (вынос на общий уровень)
- Сделать бизнес-классы, окна для таблиц