Хранилище настроек (постановка)

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Необходимо так организовать хранение данных и метаданных настроек, чтобы было невозможно…»)
 
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
Необходимо так организовать хранение данных и метаданных настроек, чтобы было невозможно затирание новых изменений функции, например, функцией более старой версии из другой настройки. В статье [[Сохранение настройки в нескольких файлах (постановка)]] предлагается хранить тексты функций, форм и других значимых объектов вне файла настройки.
 
Необходимо так организовать хранение данных и метаданных настроек, чтобы было невозможно затирание новых изменений функции, например, функцией более старой версии из другой настройки. В статье [[Сохранение настройки в нескольких файлах (постановка)]] предлагается хранить тексты функций, форм и других значимых объектов вне файла настройки.
  
Возможно несколько способов организации:
+
=== На все хранилище имеется одна папка с подчиненными настройке файлами ===
  
== На все хранилище имеется одна папка с подчиненными настройке файлами ==
+
В этом случае при сохранении мы всегда указываем корневую папку хранилища. Главный файл настройки сохраняется в корне папки setting (или в папку соответствующую тегу, типу настройки), подчиненные файлы помещаются в папку хранения кода -- data. Папка хранения кода будет содержать файлы vbs, dfm, fr, fr4, sql содержащие логику работы приложения, настройки гридов в XML.
 
+
В этом случае при сохранении мы всегда указываем корневую папку хранилища. Главный файл настройки сохраняется в корне папки setting (или в папку соответствующую тегу, типу настройки), подчиненные файлы помещаются в папку хранения кода - data. Папка хранения кода будет содержать файлы vbs, dfm, fr, fr4, sql, содержащие логику работы приложения.
+
  
 
Получается следующая иерархия папок:
 
Получается следующая иерархия папок:
Строка 20: Строка 18:
 
::::gdc_frmInvDocument147013038_109092844.dfm
 
::::gdc_frmInvDocument147013038_109092844.dfm
 
:::report\
 
:::report\
::::Приход_в_ценах_поставщика..fr
+
::::Приход_в_ценах_поставщика.fr
::::Драг_металы.fr4
+
::::Драг_металы.fr
 
:::stored_procedure\
 
:::stored_procedure\
 
::::USR$AC_GETADDSUM.sql
 
::::USR$AC_GETADDSUM.sql
Строка 28: Строка 26:
 
::::USR$INV_INVENTLINE.USR$BI_USR$INV_INVENTLINE.sql
 
::::USR$INV_INVENTLINE.USR$BI_USR$INV_INVENTLINE.sql
 
::::USR$INV_CAR.USR$USR$INV_BI_CAR_NAME.sql
 
::::USR$INV_CAR.USR$USR$INV_BI_CAR_NAME.sql
 +
:::grid\
 +
::::gdc_frmAttrUserDefinedUSR_AU_PRODUCER(Tgdc_frmAttrUserDefined)_ibgrMain(TgsIBGrid).grid
 +
::::gdc_frmAttrUserDefinedUSR_AU_PRODUCER(Tgdc_frmAttrUserDefined)_ibgrDetail(TgsIBGrid).grid
 
::Мат_склад_макросы.xml
 
::Мат_склад_макросы.xml
 
::Общие_данные.xml
 
::Общие_данные.xml
Строка 42: Строка 43:
 
</code>
 
</code>
  
== Папка с подчиненными файлами есть у каждой настройки ==
+
В главной настройке ссылки на подчиненные файлы будут иметь вид:
В этом случае необходимо каждому объекту (функции, процедуре) указать родную настройку, ту в папку которой он будет сохранятся.
+
 
Получается следующая иерархия папок:
+
 
<code>
 
<code>
:setting\
+
:<SCRIPT file="data\function\Acc_CalcNormExpenses.vbs"></SCRIPT>
::Мат_склад_макросы\
+
:<DFM file="data\form\usrf_acc_taxposition.dfm"></DFM>
:::Tgdc_dlgGoodBeforePost.vbs
+
:::usrf_acc_taxposition.dfm
+
:::gdc_frmInvDocument147013038_109092844.dfm
+
:::USR$AC_GETADDSUM.sql
+
:::USR$INV_INVENTLINE.USR$BI_USR$INV_INVENTLINE.sql
+
:::USR$INV_CAR.USR$USR$INV_BI_CAR_NAME.sql
+
:::Приход_в_ценах_поставщика..fr
+
:::Драг_металы.fr4
+
::Общие_данные\
+
:::TgdcInvDocument147006557_63934951_DoOnNewRecord.vbs
+
:::Acc_CalcNormExpenses.vbs
+
:::gdc_dlgAttrUserDefinedTreeUSR_ACC_TAXPOSITION.dfm
+
:::USR$FA_P_YEAR_BETWEEN.sql
+
::Мат_склад_макросы.xml
+
::Общие_данные.xml
+
</code>
+
При сохранении настройки не в хранилище настроек, или при сохранении настройки-патча, включающего в себя объекты из разных настроек, каждый объект сохраняется в папку соответствующую его родительской настройке:  
+
<code>
+
:VMK_SETTING\
+
::Мат_склад_макросы\
+
:::Acc_CalcNormExpenses.vbs
+
::Общие_данные\
+
:::usrf_acc_taxposition.dfm
+
::20100928_Исправления.xml
+
 
</code>
 
</code>
 +
 +
 +
Такая структура хранилища настроек полностью опирается на систему контроля версий. Так как в разных настройках могут быть разные версии одной и той же функции, то в процессе сохранения настроек в хранилище файл этой функции будет несколько раз перезаписан. Для избежания этого после сохранения настройки необходимо сделать commit в систему контроля версий. При изменении функции другой настройкой необходимо провести операцию merge для получения функции, которая будет работать и в первой, и во второй настройке.
 +
 +
Также такой подход позволит выявить все проблемы связанные с установкой разных пакетов настроек на одну БД. Все функции, формы, метаданные и гриды будут приведены к общему виду.
 +
 +
[[Category:Постановка-Отклонено]]
 +
__NOTOC__

Текущая версия на 19:27, 4 января 2013

Необходимо так организовать хранение данных и метаданных настроек, чтобы было невозможно затирание новых изменений функции, например, функцией более старой версии из другой настройки. В статье Сохранение настройки в нескольких файлах (постановка) предлагается хранить тексты функций, форм и других значимых объектов вне файла настройки.

[править] На все хранилище имеется одна папка с подчиненными настройке файлами

В этом случае при сохранении мы всегда указываем корневую папку хранилища. Главный файл настройки сохраняется в корне папки setting (или в папку соответствующую тегу, типу настройки), подчиненные файлы помещаются в папку хранения кода -- data. Папка хранения кода будет содержать файлы vbs, dfm, fr, fr4, sql содержащие логику работы приложения, настройки гридов в XML.

Получается следующая иерархия папок:

setting\
data\
function\
Acc_CalcNormExpenses.vbs
Tgdc_dlgGoodBeforePost.vbs
TgdcInvDocument147006557_63934951_DoOnNewRecord.vbs
form\
usrf_acc_taxposition.dfm
gdc_dlgAttrUserDefinedTreeUSR_ACC_TAXPOSITION.dfm
gdc_frmInvDocument147013038_109092844.dfm
report\
Приход_в_ценах_поставщика.fr
Драг_металы.fr
stored_procedure\
USR$AC_GETADDSUM.sql
USR$FA_P_YEAR_BETWEEN.sql
trigger\
USR$INV_INVENTLINE.USR$BI_USR$INV_INVENTLINE.sql
USR$INV_CAR.USR$USR$INV_BI_CAR_NAME.sql
grid\
gdc_frmAttrUserDefinedUSR_AU_PRODUCER(Tgdc_frmAttrUserDefined)_ibgrMain(TgsIBGrid).grid
gdc_frmAttrUserDefinedUSR_AU_PRODUCER(Tgdc_frmAttrUserDefined)_ibgrDetail(TgsIBGrid).grid
Мат_склад_макросы.xml
Общие_данные.xml

При сохранении настройки не в хранилище настроек, или при сохранении настройки-патча, включающего в себя объекты из разных настроек, формируется точно такая же структура:

VMK_SETTING\
data\
function\
Acc_CalcNormExpenses.vbs
form\
usrf_acc_taxposition.dfm
20100928_Исправления.xml

В главной настройке ссылки на подчиненные файлы будут иметь вид:

<SCRIPT file="data\function\Acc_CalcNormExpenses.vbs"></SCRIPT>
<DFM file="data\form\usrf_acc_taxposition.dfm"></DFM>


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

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

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

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