AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.02.2019, 11:00   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Каков механизм апгрейда Data Entity в мажорных и минорных версиях современной аксапты?
Выделил из соседней ветки
Цитата:
Сообщение от Vadik Посмотреть сообщение
И журналов. И ордеров (заказов). И проводок (GeneralJournalAccountEntryEntity).
И еще. С удовольствием послушаю/почитаю как они решили вопрос с апгрейдом этих Data Entity на новые версии Аксапты.

раньше для таблиц был набор классов семейства ReleaseUpdateDB
был конфигурационный ключ, который позволял удалять таблицы предыдущей версии до тех пор, пока не закончен апгрейд.

А как сейчас?
__________________
полезное на axForum, github, vk, coub.
Старый 27.02.2019, 11:08   #2  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Дублируют и добавляют V2, V3..
За это сообщение автора поблагодарили: mazzy (10).
Старый 27.02.2019, 11:14   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от mazzy Посмотреть сообщение
Выделил из соседней ветки

И еще. С удовольствием послушаю/почитаю как они решили вопрос с апгрейдом этих Data Entity на новые версии Аксапты.

раньше для таблиц был набор классов семейства ReleaseUpdateDB
был конфигурационный ключ, который позволял удалять таблицы предыдущей версии до тех пор, пока не закончен апгрейд.

А как сейчас?
Официальная точка зрения что сейчас апгрейда данных просто нету. Надо в первом ежемесячном релизе добавить новые поля. Потом в следующем ежемесячном релизе, добавить куда-то в синк скрипт, логику, которая один раз эти поля для старых записей обновит. Потом следующем ежемесячном релизе - добавить уникальные индексы по этим самым новым полям. Потом поменять логику в классах, так чтобы вынимала данные из новых полей и таблиц, вместо старых. Ну и тд. Официальное обоснование - надо апгрейдить PROD instance очень быстро и времени на запуск больших и толстых скриптов - нету.
Ну и по поводу data entity - по моему они просто создают на каждое изменение новую версию data entity. Типа CustCustomerV10
За это сообщение автора поблагодарили: mazzy (10).
Старый 27.02.2019, 11:20   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от trud Посмотреть сообщение
Дублируют и добавляют V2, V3..
Ахренеть! Тоже решение, конечно.
__________________
полезное на axForum, github, vk, coub.
Старый 27.02.2019, 11:23   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
А какой смысл от такого фасада, если он меняется при каждом чихе?

Цитата:
Сообщение от fed Посмотреть сообщение
Официальное обоснование - надо апгрейдить PROD instance очень быстро и времени на запуск больших и толстых скриптов - нету.
Ну и по поводу data entity - по моему они просто создают на каждое изменение новую версию data entity. Типа CustCustomerV10
А для V1, V2 ... V9 гарантируют работоспособность в новой версии?
__________________
полезное на axForum, github, vk, coub.
Старый 27.02.2019, 11:42   #6  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от mazzy Посмотреть сообщение
А какой смысл от такого фасада, если он меняется при каждом чихе?



А для V1, V2 ... V9 гарантируют работоспособность в новой версии?
Не знаю. Вероятно они просто еще не подумали.Может они просто оставят старые entity ссылаться на устаревшие таблицы и поля, которые реально не обновляются.
Они там тоже в Микрософте работают в режиме "hand to mouth" - больше чем на один релиз не планируют. Типа это не бардак, а Agile...
За это сообщение автора поблагодарили: mazzy (2).
Старый 27.02.2019, 11:54   #7  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от mazzy Посмотреть сообщение
А какой смысл от такого фасада, если он меняется при каждом чихе?
ты же сам написал в предыдущей теме - для владельца объекта это повышает шанс что ничего не сломается, т.е. будет меньше воплей - мы установили обновление и наша интеграция сломалась, так как она ожидала 10 полей, а пришло 11

Цитата:
Сообщение от mazzy Посмотреть сообщение
А для V1, V2 ... V9 гарантируют работоспособность в новой версии?
Гарантрируется только бинарная совместимость т.е. обновление должно безболезненно устанавливаться и работать
Старый 27.02.2019, 11:55   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Со всей уверенностью могу сказать - думали.
в 2017 решения еще не было, но документ-обоснование вопросами к апрейду - был.

значит, сейчас не гарантируют работоспособность "старых" data entity. прикольно.
тогда нет никакого смысла их использовать - это не фасад, а всего лишь еще один транспортный уровень. примерно с такой же изменчивостью что и просто таблицы/классы.
__________________
полезное на axForum, github, vk, coub.
Старый 27.02.2019, 11:59   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от trud Посмотреть сообщение
Гарантрируется только бинарная совместимость т.е. обновление должно безболезненно устанавливаться и работать
э-э-э... не надо "осетрины второй свежести". пожалуйста.

так гарантируется, что data entity прошлых версий будут работать так же как и раньше в новой версии или нет?
другими словами, код, который использует V1, продолжит работать корректно, когда появляется V2?
__________________
полезное на axForum, github, vk, coub.
Старый 27.02.2019, 12:05   #10  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от mazzy Посмотреть сообщение

значит, сейчас не гарантируют работоспособность "старых" data entity. прикольно.
так а что понимается под словом работоспособность то. Что не выдается трассировок стека?
data entity используют отдельный от форм механизм для маппинга полей(метод defaultRow), т.е. вполне возможно что загружая что-то с помощью дата ентити ты получишь не то, что было было если бы поля вводились вручную
Старый 27.02.2019, 12:18   #11  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от mazzy Посмотреть сообщение
другими словами, код, который использует V1, продолжит работать корректно, когда появляется V2?
Это декларируется, но не всегда работает Как минимум в случае доступа через OData если создавалось расширение и Public name перенесли на "новую" версию
__________________
-ТСЯ или -ТЬСЯ ?

Последний раз редактировалось Vadik; 27.02.2019 в 12:35.
Старый 27.02.2019, 19:25   #12  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,273 / 3466 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
э-э-э... не надо "осетрины второй свежести". пожалуйста.

так гарантируется, что data entity прошлых версий будут работать так же как и раньше в новой версии или нет?
другими словами, код, который использует V1, продолжит работать корректно, когда появляется V2?
У меня была такая ситуация. Сделал я импорт номенклатур и создавал номенклатуры в коде, используя EcoRes-чего-то там Entity. Было это еще до PU20.
С выходом PU20 добавили к этой Entity - EntityV2 (ну кстати аналогично появились обновленные версии Entity по контрагентам). Мы обновились на PU20 и вроде как все было нормально, компиляция проходила и т.д.
Но... потом выяснилась интересная ситуация. Методы классов, сопутствующих этой Entity были помечены атрибутом [Obsolete], а код, который по идее должен был работать - валился в Runtime-ошибку, мол нельзя вызывать метод, объявленный как obsolete.
Решение было простое (конечно после анализа ситуации) - заменить в коде вызов Entity и сопутствующих классов - на V2 и в связи с этим немного переформатировать код. Однако получается, что с т.з. глобальной компиляции - устаревание кода ошибок не влечет за собой. А вот непосредственный вызов... уже не возможен
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: mazzy (2), ax_mct (2), Stitch_MS (2).
Старый 28.02.2019, 02:17   #13  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
https://docs.microsoft.com/en-us/dyn...ed/one-version
Цитата:
Backward compatibility covers binary and functional compatibility. Binary compatibility means that you can apply an update on any runtime environment without needing to recompile, reconfigure, or redeploy customizations. This also means that on a development environment at design time, X++ public and protected APIs and metadata are not modified or deleted. If Microsoft needs to break compatibility by removing obsolete APIs, it will be communicated 12 months in advance and follow a deprecation schedule. Functional compatibility is about user experience, all new experiences will be opt-in.

Backward compatibility does not include non-X++/metadata APIs. Microsoft reserves the right to update versions of any dependencies the product uses, as well as remove dependencies without early warning. Microsoft does not commit to maintain backwards compatibility of dependent software libraries unless expressly stated.
Пока вижу что в части функциональной совместимости речь только про UX. Я так думаю что если приучить к Runtime ошибкам то здесь то там время от времени то UX не меняется
Старый 28.02.2019, 04:06   #14  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
тогда нет никакого смысла их использовать - это не фасад, а всего лишь еще один транспортный уровень. примерно с такой же изменчивостью что и просто таблицы/классы.
Мне кажется что это эти Data Entity просто обычные Staging tables для обработки в batch jobs.
И ничего больше.
Старый 28.02.2019, 11:28   #15  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Мне кажется что это эти Data Entity просто обычные Staging tables для обработки в batch jobs.
И ничего больше.
"И ничего больше" - ответ неполный. Важны расширяемые триггеры на самой entity для обработки сложных случаев. Я в одном таком триггере запрограммировал автоматическое рассопоставление проводок по клиенту при импорте отклоненных SEPA direct debits.
За это сообщение автора поблагодарили: ax_mct (5).
Старый 28.02.2019, 14:38   #16  
twilight is offline
twilight
MCTS
MCBMSS
 
867 / 237 (9) ++++++
Регистрация: 17.10.2004
Адрес: Королёв
У нас на проекте с помощью entity сделана интеграция с весами. В том числе создание заказов, если это необходимо, и разноска накладных. Так что там можно запрограммировать практически все, что угодно )
__________________
I could tell you, but then I would have to bill you.
За это сообщение автора поблагодарили: ax_mct (5).
Старый 28.02.2019, 18:05   #17  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от EVGL Посмотреть сообщение
"И ничего больше" - ответ неполный. Важны расширяемые триггеры на самой entity для обработки сложных случаев. Я в одном таком триггере запрограммировал автоматическое рассопоставление проводок по клиенту при импорте отклоненных SEPA direct debits.
Цитата:
Сообщение от twilight Посмотреть сообщение
У нас на проекте с помощью entity сделана интеграция с весами. В том числе создание заказов, если это необходимо, и разноска накладных. Так что там можно запрограммировать практически все, что угодно )
Чуть в сторону от темы, но все же.
А есть отличие если бы мы тоже самое делали в типичной Staging table в AX?
Есть batch job, мы там можем "запрограммировать практически все, что угодно".
Старый 28.02.2019, 19:15   #18  
twilight is offline
twilight
MCTS
MCBMSS
 
867 / 237 (9) ++++++
Регистрация: 17.10.2004
Адрес: Королёв
В Staging table данные надо как-то положить. Data entities как раз для этого. Дальше отличий особых нет.
__________________
I could tell you, but then I would have to bill you.
Старый 28.02.2019, 19:21   #19  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от twilight Посмотреть сообщение
В Staging table данные надо как-то положить. Data entities как раз для этого. Дальше отличий особых нет.
А чем отличается то как мы кладем в Staging table и как в Data entities?
Старый 28.02.2019, 20:01   #20  
twilight is offline
twilight
MCTS
MCBMSS
 
867 / 237 (9) ++++++
Регистрация: 17.10.2004
Адрес: Королёв
Тем, что Data entities предоставляет определенный framework по настройке экспорта/импорта в различные форматы, мэппинг, логгирование, запуск по расписанию, объединение в проекты, права доступа и т. д. Это, по сути, удобный готовый инструмент по обмену данными со stage таблицами Аксапты и, в простых случаях, обмен stage с прод таблицами (для мастер данных).
__________________
I could tell you, but then I would have to bill you.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
organicax: Building an aggregate data entity to access a measure via Odata Blog bot DAX Blogs 0 10.08.2017 20:11
atinkerersnotebook: Creating New Customer Notifications for Dynamics 365 for Operations using Flow and the Common Data Service Blog bot DAX Blogs 0 15.12.2016 22:12
stoneridgesoftware: Data Migration Observations for Microsoft Dynamics 365 for Operations (AX7) Blog bot DAX Blogs 0 10.12.2016 02:21
kurthatlevik: Master data concepts Blog bot DAX Blogs 0 18.02.2016 12:11
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:49.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.