|
16.12.2009, 12:12 | #1 |
Участник
|
Опять вопрос о слоях DAX 4.0
Здравия всем.
Недавно приступил к доработками сильно модифицирванного функционала DAX 4.0. Доработки велись на слое VAR. Насколько я понял, программистам конечного пользователя системы рекомендуется вести доработки в CAS слое, что я и планирую делать для новых доработок (поправьте, если я не прав). Возникла потребность модифицировать объекты из предыдущих доработок. Они размещены в VAR слое. Доступ к этому слою есть. Подскажите, пожалуйста, наиболее безопасный алгоритм работы с доработками на VAR слое. Заранее благодарен. |
|
16.12.2009, 13:15 | #2 |
Участник
|
прежде всего: слои нужны не для РАЗРАБОТКИ.
т.е. утверждение: "рекомендуется вести доработки в CUS слое" не совсем корректное. доработки лучше вести в USR слое. А вот окончательную, отлаженную, стабильную версию поднимать на CUS. Т.е. в слоях должен быть стабильный код! Как раз из-за того, что люди, находящиеся в нижестоящих слоях, не смогут изменить вышестоящий. Т.е. если вы работаете в CUS или USR, то вы не сможете изменять объекты из VAR слоя. Чтобы изменить объекты VAR слоя, вы должны в конфигурационной утилите ввести пароль доступа к слою VAR и войти в слой VAR. Находясь в CUS вы сможете изменить код классов, но не сможете изменить объявления методов (список и тип переменных, тип возвращаемого значения) Это сделано сознательно. Еще раз: 1. рекомендуется доработки вести в USR 2. в вышестоящие слои рекомендуется переносить стабильные версии |
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
16.12.2009, 13:24 | #3 |
Участник
|
Цитата:
Это оффтоп, отвечать не обязательно. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
16.12.2009, 16:48 | #4 |
Участник
|
Цитата:
Сообщение от Zabr
Небольшой оффтоп: крайне неудачно придумано (не знаю кем, наверное ещеразработчиками Дамгаарда) называть более стабильные слои вышестоящими. Надо бы наоборот. Фундамент - разработка самого Микрософта, выше - региональные разработки, выше - разработки партнеров, и на самом верху - разработки программистов клиента. А сейчас получается зависшая в воздухе перевернутая пирамида.
Он правильно говорит. И слайды у него правильно нарисованы - Майксрофот внизу как фундамент. Это я неправильно выражаюсь. А путаница выше/ниже происходит из списка слоев в конфигурационной утилите |
|
16.12.2009, 13:31 | #5 |
Участник
|
Цитата:
Цитата:
А так -- почти все понятно со слоями. Благодарю. |
|
16.12.2009, 13:50 | #6 |
Участник
|
Цитата:
Процедуры описаны, например, здесь: http://msdn.microsoft.com/en-us/library/aa892084.aspx |
|
|
За это сообщение автора поблагодарили: gefr (1), Prophetic (1). |
16.12.2009, 15:35 | #7 |
Banned
|
|
|
16.12.2009, 15:41 | #8 |
Участник
|
Цитата:
Другое дело, что если одновременно работают люди, имеющие доступ к разным слоям, то при нестабильных интерфейсах у них неизбежно будут проблемы. |
|
16.12.2009, 13:33 | #9 |
Участник
|
Добрый день.
Прочитайте книжку Incide Dynamics Часть 1->Глава 1->Технология слоев прикладной модели, страница 40. Там все прекрасно описано какие слои, для чего и где вести разработку. |
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
16.12.2009, 16:59 | #10 |
Участник
|
Цитата:
Сообщение от Prophetic
Здравия всем.
Недавно приступил к доработками сильно модифицирванного функционала DAX 4.0. Доработки велись на слое VAR. Насколько я понял, программистам конечного пользователя системы рекомендуется вести доработки в CAS слое, что я и планирую делать для новых доработок (поправьте, если я не прав). Возникла потребность модифицировать объекты из предыдущих доработок. Они размещены в VAR слое. Доступ к этому слою есть. Подскажите, пожалуйста, наиболее безопасный алгоритм работы с доработками на VAR слое. Заранее благодарен. Это справедливо, если вы не собираетесь удалять/переименовывать объекты на слое VAR. |
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
17.12.2009, 12:12 | #11 |
Участник
|
Если разработчик-внедренец, то лучше USR и USP оставлять пустыми для:
USR - работы кодеров клиента, в процессе внедрения слой по жизни пустой USP - для временных слияний кода, тк утилита сравнения ущербна, лучше залить в ЮСП, сравнить по-человечески, и стереть за собой. В USP так же стоит сваливать разработческие утилиты, и стирать их за собой после внедрения. Ошибочное занятие USR для внедрения, а USP для клиента приводит к тому, что слоев просто нет для сливания ХРО (внимание! сами себе яму роете этим) Приходим к тому, что для внедренца разрабатывать лучше в CUS слое. При этом, если в основе проекта лежит какое-то решение (самого внедренца или чье-то), то оно должно лежать в VAR, для удобного сравнения с было-стало. И апдайтится как серфис пак, если его делает другая команда. Слой CUP при этом может (не обязательно) использоваться для самого кодинга всей командой, а после кодревью ведущего разработчика (удобного как кас-кап дельта) опускается в кас с сохранением ИД и стирается весь кап до следующей итерации. Важно, что между ВАР и ВАП, кас и кап, юср и юсп переносить можно (и нужно) с сохранением ИД. А между ВАР и КАС (и прочими) - не нужно (хотя и можно), но крайне НЕ нужно. Учесть при выборе слоев возможности заливки в запущенную рабочую АХ ХРОшек по-живому (ИД новых элементов и периодическую подмену слоев целиком). Разобраться с SQLDictonary, понять, как после перебивки ИД (из КАС в ВАР или из ЮСР в КАС) сохранить данные, если делалось на живых данных. Все это выстраданное ИМХО за много лет разных подходов и проектов. Не зависимо от книжек (тогда их и не было) и теорий. Это действующая методика, дающая экономию во времени до 40-70% времени и повышающая качество за счет удобного сравнения кода и код ревью. Сталкивался с двумя мнениями разработчиков, кто что считает верхним слоем. Сам я фанат картинки-схемы аля слои Земли, где sys - это ядро, а usr - слой почвы Потому термин "нижний слой" - это физически вниз , то есть в sys. Последний раз редактировалось BOAL; 17.12.2009 в 12:16. |
|
|
За это сообщение автора поблагодарили: Dudnik Anton (1), sukhanchik (2), Ivanhoe (2), player (1), Prophetic (1), MazZzDaI (1). |
20.01.2010, 12:21 | #12 |
Участник
|
Здравия всем еще раз. Перед обновлением рабочей базы решил опять вернуться к теме слоёв. Воспользовался советами BOAL'a, и Bishop'a, за что им и всем остальными благодарность, и вёл доработки в слое CUS, но в тестовой базе, которая являлась копией рабочей. Наработки велись в проекте, который экспортировался в xpo-файл. Я планирую импортировать в рабочую базу тоже на CUS слой.
Меня терзают следующие смутные сомнения: 1. Есть проект, в котором изменена только форма, класс или отчет, без таблиц. Я буду импортировать без идентификаторов. Возможна ли потеря прав пользователей в этом случае? 2. Есть проект, в котором уже изменена таблица (добавлено одно или несколько полей) и другие объекты. Возможна ли потеря данных? 3. Есть таблицы и формы, которые были изменены на USR-слое предыдущим программистом. Будет ли модификация их (при необходимости) на USR-слое верным выходом из ситуации? |
|
20.01.2010, 15:35 | #13 |
Участник
|
Цитата:
Сообщение от Prophetic
Меня терзают следующие смутные сомнения:
1. Есть проект, в котором изменена только форма, класс или отчет, без таблиц. Я буду импортировать без идентификаторов. Возможна ли потеря прав пользователей в этом случае? 2. Есть проект, в котором уже изменена таблица (добавлено одно или несколько полей) и другие объекты. Возможна ли потеря данных? 3. Есть таблицы и формы, которые были изменены на USR-слое предыдущим программистом. Будет ли модификация их (при необходимости) на USR-слое верным выходом из ситуации? Есть КАС слой в сборе, но на тесте что-то менялось в ЮСР, который потом был аккуратно перенесен в КАС без сохранениия ИД. Теперь хочется обновить тест, чтоб "не отвалилось"? Да? Сама закачка ХРО из теста в КАС может быть любой, код не потеряется. Обновление же теста всем приложением (а замена слоя с кодом == замене приложения, тк лишний ЮСР нужно ж потереть) тоже код сохранит без проблем. Отвалиться могут токо данные, синхронизация добродушно предложит стереть с таблицы по списку Это тоже лечится (но это отдельная тема про SQLDictonary и закрытый в Админке АХ крайненужный пункт меню синхронизации с реиндексацией и восстановлением неверных). По вопросам 1 Если формы, отчеты и классы были уже (то есть ИД был для правок в юср уже касный), все пучком - это нормальная практика на каждый день - у мя на рабочей все правки в юср, а заливаю слоем в вар с дева 2 - отвалится таблица. Сотрется при синхронизации. (тут или "тема с SQLDictonary" или ее предварительно выгрузить и загрузить обратно) - вам выгрузить проще 3. чем 3 отличается от 1 и 2 кроме автора модификаций? Вырожденный пункт про мусор в ЮРС с ведением всего в КАС - ответ очевиден. Если разработка в КАС - юср пустой. Соотв. да можно - нет не нужно. на то и "мусор" (временный код до перелива). |
|
21.01.2010, 11:06 | #14 |
Участник
|
Цитата:
Я сделал копию рабочего приложения на другой сервер AOS, и другой сервер SQL - дев-приложение. Планировалось вести доработки на дев-приложении, на слое CUS. После утверждения, доработка экспортируется в xpo-файл, а затем импортируется в боевое приложение в слой CUS. Возникли опасения, что после импорта на боевое приложение в слой CUS может возникнуть потеря данных в таблицах, которые уже живут. Хотя, если я не ошибаюсь, на сайте указано, что в случае с таблицами, экспортируется только измененная часть (добавленные, измененные поля). Вот здесь: http://msdn.microsoft.com/en-us/libr...8AX.10%29.aspx Цитата:
Tables and classes are special cases
Tables and classes are special cases in the sense that they may have sub nodes that are saved in different layers. For example, the table Tab1 in the SYS layer may have a field, Field1, that exists both in the SYS and in the USR layer. When you export the USR layer, the Tab1 tables is exported as well but the export file will hold only the description of Field1 and not the remainder of the table. When Tab1 is subsequently imported, only Field1 is affected. С кодом понятно, с данными пока нет. Т.е., если я добавлю новое поле в таблице на слое CUS в дев-приложении, потом перенесу в боевое-приложение на CUS-слой xpo-файлом эту таблицу, то данные в боевом приложении не потеряются? Цитата:
Сообщение от BOAL
Обновление же теста всем приложением (а замена слоя с кодом == замене приложения, тк лишний ЮСР нужно ж потереть) тоже код сохранит без проблем.
Отвалиться могут токо данные, синхронизация добродушно предложит стереть с таблицы по списку Это тоже лечится (но это отдельная тема про SQLDictonary и закрытый в Админке АХ крайненужный пункт меню синхронизации с реиндексацией и восстановлением неверных). Цитата:
Сообщение от BOAL
По вопросам
1 Если формы, отчеты и классы были уже (то есть ИД был для правок в юср уже касный), все пучком - это нормальная практика на каждый день - у мя на рабочей все правки в юср, а заливаю слоем в вар с дева 2 - отвалится таблица. Сотрется при синхронизации. (тут или "тема с SQLDictonary" или ее предварительно выгрузить и загрузить обратно) - вам выгрузить проще 3. чем 3 отличается от 1 и 2 кроме автора модификаций? Вырожденный пункт Цитата:
Сообщение от Maxim Gorbunov
Между VAR и CUS все-таки с ID перенести нельзя. Диапазоны разные
2 Prophetic Каждый слой (а точнее, пара основной слой + патч-слой) имеет свой диапазон ID. Например, ID всех объектов VAR-VAP слоя находится в диапазоне 30001-40000, а ID всех объектов CUS-CUP слоя - в диапазоне 40001-50000. Если вы переносите объект с CUS на VAR, ему будет выделен новый ID. Попробую сделать вывод. В моём случае самым безопасным способом ведения доработок будет использование слоя VAP. Т.е. на дев-приложении на слое VAP я делаю доработки, и после утверждения этот проект переношу через xpo-файл на боевое приложение, на VAR-слой с сохранением ID. Или же, в качестве дополнительного теста, можно переносить на VAP-слой, и после дополнительного тестирования, опускать на VAR-слой, опять же, с сохранением ID. Буду рад замечаниям и предложениям. |
|
21.01.2010, 09:36 | #15 |
Administrator
|
Цитата:
2 Prophetic Каждый слой (а точнее, пара основной слой + патч-слой) имеет свой диапазон ID. Например, ID всех объектов VAR-VAP слоя находится в диапазоне 30001-40000, а ID всех объектов CUS-CUP слоя - в диапазоне 40001-50000. Если вы переносите объект с CUS на VAR, ему будет выделен новый ID.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
21.01.2010, 10:00 | #16 |
Участник
|
Цитата:
2 Перенести с ЮСР на ВАР с ИД от ЮСР можно (технически все для этого есть) и АХ прекрасно потом работает (об этом изначально и был разговор). Так делают, знаю проект. Другое дело, что это просто неправильно и делать так не нужно (слово именно "не нужно", а не "нельзя"). |
|
|
За это сообщение автора поблагодарили: Maxim Gorbunov (2), Prophetic (1). |
|
Похожие темы | ||||
Тема | Ответов | |||
DAX 4.0. Новичковый вопрос | 1 | |||
dax-lessons: Active directory in Axapta | 0 | |||
Опять вопрос про OLAP? | 2 | |||
опять вопрос по Query | 7 | |||
Вопрос о слоях | 0 |
|