15.08.2017, 22:19 | #1 |
Участник
|
SMART TALKS 110: Metadata, abstract syntax tree and X++ best practice rules. Part 1
SMART TALKS 110: Metadata, abstract syntax tree and X++ best practice rules. Part 1
https://www.youtube.com/watch?v=Jn0THuduMTY |
|
15.08.2017, 22:42 | #2 |
Участник
|
чел грамотный, конечно.
но: 1. заявлять что майкрософт за две последние версии 2 (два) раза поменяла формат хранения (AOD -> база данных -> XML) И тут же рассматривать способ, основанный на работе с форматом хранения (XML)... странно это и нелогично. где гарантия, что майкрософт не поменяет и этот способ? 2. использовать в качестве базы какую-то разработку третьих лиц... почему? почему не MS SQL? В общем, доклад с очень странной внутренней логикой. Последний раз редактировалось mazzy; 15.08.2017 в 22:59. |
|
16.08.2017, 02:15 | #3 |
Участник
|
Не совсем понятна практическая цель сего доклада. Microsoft.Dynamics.Ax.Xpp.MetadataSupport* как замена Dict* полезна и нужна, но вот все остальное то зачем ?
|
|
16.08.2017, 08:29 | #4 |
Участник
|
Цитата:
подозреваю, что автор хотел рассказать обо всех способах, но из доклада выкинули вводную часть "из-за нехватки времени" ) а можно было рассмотреть: = utilElement, = treeNode, = Dict*, = SysModelStore (акс2012) = обращение к исходному коду к xml-файлам, = обращение к таблице с перекрестными ссылками, = пресловутый SysModelMetaData (будь он неладен) = работа с .net-классами из namespace Microsoft.Dynamics.Ax... можно было привести примеры динамической генерации кода. в акс7 - пресловутый SysModelMetaData, в недавних версиях AIF/DIXF, в ранних версиях - модуль ProductBuilder. Независимо от этого мероприятия я поднимал тему рефлексии на форуме. Как правильно получить элементы AOT заданной модели? В X++? В SQL? в акс2012? в акс7? А extension? Там же можно увидеть скриншот для FleetManagement на тему "что хочется" Там же можно увидеть пример кода от Maxim Belugin для работы с провайдером метаданных. ============================= И что хочу сказать: не используйте доступ к xml-файлам. на мой взгляд это тупиковый путь. интересный, но тупиковый 1. напрямую через xml достаточно непросто получить корректную информацию про extensions, которые "добавляют" поля, индексы, методы и прочие субноды в основной объект. да, можно. но обратите внимание, что автор лихо обошел вопрос extension'ов. Хотя из дальнейшего доклада хорошо видно, что автор очень даже в курсе ) 2. обратите внимание, что каталоги C:\AOSService\PackagesLocalDirectory\FleetManagement содержат не только исходный код. там куча бинарных и служебных xml-файлов. 3. Далеко не факт, что этот формат хранения останется в будущем именно таким. По крайней мере, я нигде не видел, что этот формат хотя бы документирован. И уж точно не было обещаний, что он сохранится. 4. Может быть, раскрою секрет. Но разработчики внутри майкрософта НЕ работают с каталогом C:\AOSService\PackagesLocalDirectory\. для VCS используется ДРУГОЙ каталог с немного другим форматом хранения и в котором находятся немного другой состав файлов (да, похожий, но другой). А в C:\AOSService\PackagesLocalDirectory\ файлы деплоятся в ходе билд-процедур или отдельной процедурой. Поэтому, копаться в C:\AOSService\PackagesLocalDirectory\ полезно также как копаться в UtilElements - появляются новые знания. Но нет никакой гарантии, что этот способ будет работать и в будущем. Последний раз редактировалось mazzy; 16.08.2017 в 08:35. |
|
16.08.2017, 08:44 | #5 |
Участник
|
Я постоянно пишу всякие штуки которые выдирают данные из XML но это одноразовые скрипты на powershell
|
|
16.08.2017, 09:11 | #6 |
Участник
|
Цитата:
2. то, что люди обращаются к файловой структуре скорее говорит о том, насколько плохо спроектировано новое семейство классов для рефлексии. представь что в прошлой версии кто то бы начал говорить о том, что научился работать с utilElement. В принципе там есть поле, которое хранит контейнер в блобе. Ему тут же бы ответили про treeNode/Dict* и покрутили бы пальцем у виска, посчитав автора городским сумашедшим. а щас ничё так. ) 3. как раз для powershell и прочих .net инструментов удобнее классы в Microsoft.Dynamics.Ax. на мой взгляд. по крайней мере они позволяют непосредственно получать и работать с объектами. но классы конечно... особенно по сравнению с treeNode... постоянно возникает желание оторвать выступающее архитектору классов... а extensions - это полный пипец конечно. либо я что-то базовое напрочь не понимаю. Последний раз редактировалось mazzy; 16.08.2017 в 09:13. |
|
18.08.2017, 08:01 | #7 |
Участник
|
Мне гораздо проще писать утилиты на XML чем раньше поверх treenode. Есть xpath и работает быстро и проще с контролем версий
|
|
18.08.2017, 08:27 | #8 |
Участник
|
Цитата:
Макс, один вопрос: твои утилиты на XML выдают тебе итоговое состояние метаданных с учетом всех установленных extensions? или игнорируют extensions? Анекдот 1: принимают на работу секретаршу. Спрашивают:Анекдот 2: начало 2000х. аксфорум. очередной только что созданный участник заявляет:См. также: "хитрый" вопрос на собеседование по акс7. Как правильно получить элементы AOT заданной модели? В X++? В SQL? в акс2012? в акс7? А extension? |
|
18.08.2017, 10:08 | #9 |
Участник
|
Цитата:
Цитата:
- (про себя) такая фигня получается...
|
|