|
27.02.2019, 11:00 | #1 |
Участник
|
Каков механизм апгрейда Data Entity в мажорных и минорных версиях современной аксапты?
Выделил из соседней ветки
Цитата:
раньше для таблиц был набор классов семейства ReleaseUpdateDB был конфигурационный ключ, который позволял удалять таблицы предыдущей версии до тех пор, пока не закончен апгрейд. А как сейчас? |
|
27.02.2019, 11:08 | #2 |
Участник
|
Дублируют и добавляют V2, V3..
|
|
|
За это сообщение автора поблагодарили: mazzy (10). |
27.02.2019, 11:20 | #3 |
Участник
|
|
|
27.02.2019, 11:14 | #4 |
Moderator
|
Цитата:
Сообщение от mazzy
Выделил из соседней ветки
И еще. С удовольствием послушаю/почитаю как они решили вопрос с апгрейдом этих Data Entity на новые версии Аксапты. раньше для таблиц был набор классов семейства ReleaseUpdateDB был конфигурационный ключ, который позволял удалять таблицы предыдущей версии до тех пор, пока не закончен апгрейд. А как сейчас? Ну и по поводу data entity - по моему они просто создают на каждое изменение новую версию data entity. Типа CustCustomerV10 |
|
|
За это сообщение автора поблагодарили: mazzy (10). |
27.02.2019, 11:23 | #5 |
Участник
|
А какой смысл от такого фасада, если он меняется при каждом чихе?
А для V1, V2 ... V9 гарантируют работоспособность в новой версии? |
|
27.02.2019, 11:42 | #6 |
Moderator
|
Цитата:
Они там тоже в Микрософте работают в режиме "hand to mouth" - больше чем на один релиз не планируют. Типа это не бардак, а Agile... |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
27.02.2019, 11:55 | #7 |
Участник
|
Со всей уверенностью могу сказать - думали.
в 2017 решения еще не было, но документ-обоснование вопросами к апрейду - был. значит, сейчас не гарантируют работоспособность "старых" data entity. прикольно. тогда нет никакого смысла их использовать - это не фасад, а всего лишь еще один транспортный уровень. примерно с такой же изменчивостью что и просто таблицы/классы. |
|
27.02.2019, 12:05 | #8 |
Участник
|
Цитата:
data entity используют отдельный от форм механизм для маппинга полей(метод defaultRow), т.е. вполне возможно что загружая что-то с помощью дата ентити ты получишь не то, что было было если бы поля вводились вручную |
|
28.02.2019, 04:06 | #9 |
Banned
|
Цитата:
Сообщение от mazzy
тогда нет никакого смысла их использовать - это не фасад, а всего лишь еще один транспортный уровень. примерно с такой же изменчивостью что и просто таблицы/классы.
И ничего больше. |
|
27.02.2019, 11:54 | #10 |
Участник
|
ты же сам написал в предыдущей теме - для владельца объекта это повышает шанс что ничего не сломается, т.е. будет меньше воплей - мы установили обновление и наша интеграция сломалась, так как она ожидала 10 полей, а пришло 11
Гарантрируется только бинарная совместимость т.е. обновление должно безболезненно устанавливаться и работать |
|
27.02.2019, 11:59 | #11 |
Участник
|
Цитата:
так гарантируется, что data entity прошлых версий будут работать так же как и раньше в новой версии или нет? другими словами, код, который использует V1, продолжит работать корректно, когда появляется V2? |
|
27.02.2019, 12:18 | #12 |
Модератор
|
Это декларируется, но не всегда работает Как минимум в случае доступа через OData если создавалось расширение и Public name перенесли на "новую" версию
__________________
-ТСЯ или -ТЬСЯ ? Последний раз редактировалось Vadik; 27.02.2019 в 12:35. |
|
27.02.2019, 19:25 | #13 |
Administrator
|
Цитата:
С выходом PU20 добавили к этой Entity - EntityV2 (ну кстати аналогично появились обновленные версии Entity по контрагентам). Мы обновились на PU20 и вроде как все было нормально, компиляция проходила и т.д. Но... потом выяснилась интересная ситуация. Методы классов, сопутствующих этой Entity были помечены атрибутом [Obsolete], а код, который по идее должен был работать - валился в Runtime-ошибку, мол нельзя вызывать метод, объявленный как obsolete. Решение было простое (конечно после анализа ситуации) - заменить в коде вызов Entity и сопутствующих классов - на V2 и в связи с этим немного переформатировать код. Однако получается, что с т.з. глобальной компиляции - устаревание кода ошибок не влечет за собой. А вот непосредственный вызов... уже не возможен
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: mazzy (2), ax_mct (2), Stitch_MS (2). |
28.02.2019, 02:17 | #14 |
Banned
|
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. |
|
28.02.2019, 14:38 | #15 |
MCTS
|
У нас на проекте с помощью entity сделана интеграция с весами. В том числе создание заказов, если это необходимо, и разноска накладных. Так что там можно запрограммировать практически все, что угодно )
__________________
I could tell you, but then I would have to bill you. |
|
|
За это сообщение автора поблагодарили: ax_mct (5). |
28.02.2019, 18:05 | #16 |
Banned
|
Цитата:
Цитата:
А есть отличие если бы мы тоже самое делали в типичной Staging table в AX? Есть batch job, мы там можем "запрограммировать практически все, что угодно". |
|
28.02.2019, 19:15 | #17 |
MCTS
|
В Staging table данные надо как-то положить. Data entities как раз для этого. Дальше отличий особых нет.
__________________
I could tell you, but then I would have to bill you. |
|
28.02.2019, 19:21 | #18 |
Banned
|
|
|
28.02.2019, 20:01 | #19 |
MCTS
|
Тем, что Data entities предоставляет определенный framework по настройке экспорта/импорта в различные форматы, мэппинг, логгирование, запуск по расписанию, объединение в проекты, права доступа и т. д. Это, по сути, удобный готовый инструмент по обмену данными со stage таблицами Аксапты и, в простых случаях, обмен stage с прод таблицами (для мастер данных).
__________________
I could tell you, but then I would have to bill you. |
|
28.02.2019, 21:16 | #20 |
Banned
|
Цитата:
Сообщение от twilight
Тем, что Data entities предоставляет определенный framework по настройке экспорта/импорта в различные форматы, мэппинг, логгирование, запуск по расписанию, объединение в проекты, права доступа и т. д. Это, по сути, удобный готовый инструмент по обмену данными со stage таблицами Аксапты и, в простых случаях, обмен stage с прод таблицами (для мастер данных).
Но думаю что там нет никаких паттернов и никакой архитектуры приложения. Предельно утилитарные цели. Сделать так чтобы не надо было программировать. Прежде всего как Sales Point. И все выглядит так что Data entity это по сути лишь другое название для Staging table. Нет конечно пишут что "A data entity is an abstraction from the physical implementation of database tables.". Но чем от отличается от того что "de-normalized table" чем и является Staging table. P.S. Прошу прощения за уход от темы "Каков механизм апгрейда Data Entity в мажорных и минорных версиях современной аксапты?" Но это в продолжение рассуждений о Фасаде. И к тому что они его не видят в переименованных Staging tables. Последний раз редактировалось ax_mct; 28.02.2019 в 21:35. |
|
|
|