Сохранение параметров грида

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Предполагаемый порядок выполнения)
 
(не показаны 9 промежуточных версий 1 участника)
Строка 1: Строка 1:
 
Разрабатывается система для работы со всеми визуальными настройками платформы, но, в первую очередь, для работы с визуальными настройками гридов.
 
Разрабатывается система для работы со всеми визуальными настройками платформы, но, в первую очередь, для работы с визуальными настройками гридов.
  
Сейчас параметры грида хранятся в двоичном потоке, в Хранилище. Причем для каждого грида, для каждой его колонки, сохраняются все параметры вне зависимости от того используются они или нет, отличаются от установленных на уровне колонки таблицы и домена или нет.
+
Сейчас параметры грида хранятся в двоичном потоке, в Хранилище. Причем для каждого грида, для каждой его колонки, сохраняются все параметры вне зависимости от того используются они или нет, отличаются от установленных на уровне колонки таблицы и домена или нет. На текущей базе '''etalon_complete''' суммарный объем настроек гридов около 24.7 Мб, количество записей 4766.
  
 
Ядром системы будет объект '''TgdStyleManager''', который отвечает за следующие функции:
 
Ядром системы будет объект '''TgdStyleManager''', который отвечает за следующие функции:
  
* Считывание настроек из реляционных таблиц и хранение в оперативной памяти в структурах, обеспечивающих максимальную скорость доступа.
+
* Считывание настроек из реляционных таблиц.
* Поиск подходящих настроек в соответствии с переданным контекстом.
+
* Хранение в оперативной памяти в структурах, обеспечивающих максимальную скорость доступа.
* Кэширование настроек между запусками программы. Сохранение в файле на локальном жестком диске. При запуске проверяется: менялись ли настройки в БД и если нет, то берутся из файла.
+
* Каскадный поиск подходящих настроек в соответствии с переданным контекстом.
* Запись изменений в базу данных по команде или при завершении работы программы.
+
* Кэширование настроек между запусками программы. Сохранение в файле на локальном жестком диске при выходе. При запуске проверяется: менялись ли настройки в БД и если нет, то берутся из файла.
* Копирование настроек между пользователями системы.
+
* Пакетная запись изменений, сделанных в течении сессии, в базу данных по команде или при завершении работы программы.
 +
* Копирование всех или выборочных настроек между пользователями системы или от пользователя системы в общие настройки.
 +
* Оптимизация настроек -- удаление частных настроек, которые дублируют общие настройки. "Подъем" настроек на более общий уровень.
  
 
Менеджер стилей работает на подобии технологии CSS. Например, запрашивается гарнитура шрифта для некоторой колонки грида:
 
Менеджер стилей работает на подобии технологии CSS. Например, запрашивается гарнитура шрифта для некоторой колонки грида:
Строка 23: Строка 25:
  
 
# Для текущего пользователя.
 
# Для текущего пользователя.
# Если не найден, то для
+
# Если не найден, то для всех пользователей.
 
+
# Для текущей темы.
 +
# Если нет, то общие (без темы).
  
 +
Сейчас при загрузке грида визуальные настройки считываются из двоичного потока и помещаются в соответствующие свойства объекта TColumn, откуда потом берутся при отрисовке грида на экране. Все останется точно так же за исключением того, что свойства будут загружаться не из двоичного потока а из менеджера стилей.
  
 
===Таблицы===
 
===Таблицы===
  
  objtype        dinteger_notnull  -- тип объекта. 0 -- тип данных, 1 -- домен, 2 -- таблица, 3 -- поле таблицы...
+
Скрипты таблиц и сопутствующих триггеров располагаются в файле '''at_attribute.sql'''.
  objname
+
  propname
+
  intvalue
+
  strvalue
+
  userkey        dforeignkey
+
  themekey        dforeignkey
+
  
 +
* [[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. Например, запрашивается гарнитура шрифта для некоторой колонки грида:

  1. Сначала ищем указанный параметр по имени колонки, имени грида и имени типа формы (с учетом подтипа).
  2. Если не найден и грид подсоединен к БО, то ищем для бизнес-класса и имени поля.
  3. Если не найден, то ищем для таблицы и поля.
  4. Если не найден и для поля определен домен, то ищем для домена.
  5. Если не найден, то ищем для типа данных.
  6. Если не найден и определены общие параметры, то берем из них.

При этом, на каждом шаге ищем в следующем порядке:

  1. Для текущего пользователя.
  2. Если не найден, то для всех пользователей.
  3. Для текущей темы.
  4. Если нет, то общие (без темы).

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

[править] Таблицы

Скрипты таблиц и сопутствующих триггеров располагаются в файле at_attribute.sql.

[править] Конвертация

  1. Сделать парсер с помощью которого разобрать двоичные потоки настроек гридов и закинуть их в таблицы.
  2. Оптимизировать настройки, перенеся повторяющиеся значения на самый общий уровень.
  3. Старые потоки останутся в БД до того момента, когда мы сможем заменить все экзешники на предприятиях. Старые экзешники будут продолжать работать со старыми потоками, читать их и записывать в них.
  4. При использовании нового экзешника старые потоки не будут грузится при загрузке Хранилища.

[править] Диалоговое окно настройки грида

  1. Увеличить размер и перекомпоновать с учетом того, что экраны стали больше и нет необходимости разбивать на много вкладок.
  2. Вкладку Запрос выкинуть (перенести) в окно Свойства объекта.
  3. Вкладку Шаблоны выкинуть.
  4. Должно быть четко видно для какого пользователя мы настраиваем и для какой темы.
  5. Должно быть четко видно что текущее значение свойства установлено именно для этой колонки, этого грида, или это значение получилось по иерархии от более общего уровня.
  6. Должна быть возможность как установить значение свойства, так и скинуть его -- тогда будет браться по иерархии.

[править] Предполагаемый порядок выполнения

  1. Создать таблицы
  2. Создать конвертацию из двоичных потоков в таблицы
  3. Реализовать в менеджере стилей загрузку и доступ
  4. Заменить в колонках считывание настроек из потоков на считывание из менеджера стилей
  5. Переделать диалоговое окно
  6. Реализовать в менеджере стилей запись в БД (изменение)
  7. Реализовать в менеджере стилей оптимизацию (вынос на общий уровень)
  8. Сделать бизнес-классы, окна для таблиц


20160301_111422.jpg

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

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