27.11.2016, 01:31 | #1 |
Участник
|
Расширения (Extensions) для Microsoft Dynamics NAV 2017 «на пальцах», или один из немногих оставшихся вариантов разработки в Dynamics NAV в будущем
С выходом облачной версии системы Microsoft Dynamics NAV 365 Business наступил тот момент, которого так боялись все разработчики, последние 20 лет считающие, что основное преимущество Dynamics NAV как платформы – возможность её быстрой и простой модификации. Потому что уже совсем скоро модифицировать стандартный функционал будет нельзя, во всяком случае, в привычном понимании – и все изменения вносить в систему будет можно только посредством дополнительных инструментов, например, так называемых Расширений (Extensions).
Сейчас в сообществе активно обсуждается будущее разработчика Dynamics NAV – многие опасаются, что эта профессия находится под угрозой. Я так не считаю. Возможно, значимость разработчика NAV несколько снизится, потому что более востребованным станет хороший консультант, который сможет рассказать, как стандартный функционал натянуть на бизнес-процесс клиента. Однако, без модификаций всё равно не обойтись, и разработчику будет необходимо перестроить свой подход, своё мышление под новую архитектуру разработки. Несмотря на то, что версия on-premise существует – буквально пару недель назад стала доступна для скачивания новая версия Dynamics NAV 2017 – и в road-map Майкрософта версия on-premise всё ещё присутствует – вот несмотря на это вот всё настоятельно рекомендуется уже сейчас, на ваших текущих on-premise версиях, применять модификации посредством Extensions, или хотя бы задумываться, а как вашу модификацию сделать посредством этой новой разработческой архитектуры. Иначе, ваша профессия действительно перестанет быть востребованной. В этой статье я постараюсь максимально простым языком рассказать о том, что такое Расширения и как теперь работает архитектура системы с точки зрения разработчика. Чтобы не изобретать велосипед, я позаимствовал структуру изложения у Eric Wauters (Waldo), который очень доходчиво рассказывал по теме на недавно прошедшем Directions EMEA 2016 в Праге. Итак, Расширения (Extensions) – это дополнительные объекты функциональности, устанавливаемые в стандартную систему Microsoft Dynamics NAV, распространяемые в виде преднастроенного пакета (.navx файл), и созданные таким образом, что они не изменяют непосредственно стандартный функционал. Ранее вы создавали кастомизации в разработческой среде, модифицируя непосредственно сами объекты, и выгружали эти модифицированные объекты. Далее, вы загружали эти объекты в рабочую базу и разрешали конфликты мёрджа при импорте объектов. Сейчас процесс немного изменился – необходимо выгружать разницу (delta) между старыми и новыми объектами, и это как раз и будет являться пакетом Расширений, который «легко и непринуждённо» можно будет далее загрузить. Пакет Расширений может содержать один или несколько объектов (txt), дополнения к текущим объектам, т.е. дельта (delta, разница) между новыми и старыми объектами, и наборы разрешений (permission sets). Пакет может быть подписан, и обычно (если вы всё делаете правильно) содержит манифест с описанием, автором и номером версии. Встраиваться в стандартный код можно будет через События (Events), - поэтому сейчас главная задача сообщества вытребовать от Майкрософт как можно больше правильных и нужных Событий, доступных для разработчиков. Наверное, вас сейчас мучает вопрос, а для чего вообще это всё было сделано. В основном, вот для чего:
Для Расширений:
Как это работает:
Основные команды (CmdLets) PowerShell для Расширений:
Что происходит на стороне разработчика: (https://msdn.microsoft.com/en-us/lib...v=nav.90).aspx) Получение / Создание / Модификация Манифеста (Get/Create/Update Manifest):
Что происходит на стороне администратора: (https://msdn.microsoft.com/en-us/lib...v=nav.90).aspx) Публикация пакета Расширений:
Что содержится в Манифесте: (https://msdn.microsoft.com/en-us/lib...v=nav.90).aspx) Элемент Приложения (App Element):
Когда пакет Расширений публикуется (Publish-NAVApp), происходит примерно следующее:
Когда пакет Расширений устанавливается (Install-NAVApp), происходит примерно следующее:
Если Вы хотите изменить Расширение, которое уже было установлено, Вам нужно сначала удалить ранее загруженное Расширение, а потом – установить новую редакцию:
Вот коротко, что будет происходить с разработкой в будущем. Я настоятельно рекомендую прямо сейчас это попробовать, потому что, хотим мы того или нет, это будет одним из тех немногих вариантов, которые нам останутся. Awara IT Solutions уже распробовали :-) |
|
29.11.2016, 16:54 | #2 |
Участник
|
Интересно, как/чем обеспечивается совместимость расширений, особенно независимых производителей. И чья по мнению МС будет ответственность в случае неожиданного поведения системы.
|
|
29.11.2016, 18:28 | #3 |
Administrator
|
и как дела с лицензированием? можно ли создавать новые поля в таблицах и протягивать их через юнит учета? можно ли в юнитах учета вставлять дополнительные проверки? можно ли создавать новые таблицы, а для них пейджи, и сколько? и расширения будут платными (с учетом новых таблиц) или бесплатными? а если бесплатными, а таблицы не докуплены, то как?
можно ли будет накатить "чужие" расширения? можно ли будет создавать "платные" расширения и выкладывать их в общий доступ? можно ли будет модифицировать чужие расширения? p.s. а вообще идея хорошая, но конфликтов будет мама дорогая, когда расширения пойдут пакетами... |
|
29.11.2016, 19:32 | #4 |
Участник
|
Я полагаю, что с учетом последних публикаций от МС текущая версия Extentions является переходной и в дальнейшем - добро пожаловать в VS Code (IMHO). http://mibuso.com/downloads/nav-tech...017-extensions
__________________
--------------------------------------------------------------------------------------------- "Собрать стадо из баранов легко, трудно собрать стадо из кошек" Профессор Сергей Капица |
|
01.12.2016, 00:39 | #5 |
Участник
|
Цитата:
С Расширениями видимо будет так же - их можно будет публиковать в официальном Магазине расширений, и тут кто первый успел, того и тапки, видимо. А внутри своей "песочницы" вы можете какие угодно вещи вытворять )). |
|
01.12.2016, 00:50 | #6 |
Участник
|
Цитата:
Сообщение от Sancho
и как дела с лицензированием? можно ли создавать новые поля в таблицах и протягивать их через юнит учета? можно ли в юнитах учета вставлять дополнительные проверки? можно ли создавать новые таблицы, а для них пейджи, и сколько? и расширения будут платными (с учетом новых таблиц) или бесплатными? а если бесплатными, а таблицы не докуплены, то как?
можно ли будет накатить "чужие" расширения? можно ли будет создавать "платные" расширения и выкладывать их в общий доступ? можно ли будет модифицировать чужие расширения? p.s. а вообще идея хорошая, но конфликтов будет мама дорогая, когда расширения пойдут пакетами... Посему, нужно в целом полностью менять подход к разработке, по-другому выстраивая процесс кастомизации. Сейчас основная задача сообщества - это активно пытаться делать доработки с помощью Расширений, упираться в невозможность сделать что-то хорошее и требовать от Майкрософта дополнительных Событий, чтобы это хорошее можно было таки делать. Майкрософт обещал не менее активно всех слушать. |
|
01.12.2016, 00:58 | #7 |
Участник
|
Цитата:
Сообщение от Captain
Я полагаю, что с учетом последних публикаций от МС текущая версия Extentions является переходной и в дальнейшем - добро пожаловать в VS Code (IMHO). http://mibuso.com/downloads/nav-tech...017-extensions
Сегодня Freddy Kristiansen - один из идеологов разработки Microsoft NAV в Копенгагене - выложил пример кода Hello, World! на AL. А вы что думаете по поводу такого синтаксиса? |
|
01.12.2016, 01:16 | #8 |
Участник
|
давайте синтаксис обсуждать в отдельной ветке
Первый пример кода на новом языке разработки Dynamics NAV - AL Здесь тема: Расширения (Extensions) для Microsoft Dynamics NAV 2017 «на пальцах» |
|
01.12.2016, 13:46 | #9 |
Участник
|
Цитата:
Таким образом, можно создавать платные "расширения" и выкладывать их в общий доступ, и даже если одна лицензия "утечет" - ничего страшного, другим клиентам она все равно не подойдет. Модифицировать чужие расширения в Dynamics AX можно в том смысле, что можно скопировать чужой объект приложения, поправить его и включить в свое расширение, которое накатить поверх чужого. При этом нужно будет разруливать конфликты слияния объектов приложения. Включить подправленные объекты в чужое расширение нельзя, разве что у вас откуда-то есть закрытый ключ электронной подписи стороннего издателя. В общем, интересующимся про то, как будут работать расширения в NAV, возможно, имеет смысл почитать про то, как это уже несколько лет работает в AX. |
|
12.04.2017, 14:50 | #10 |
Участник
|
Вопросы:
1. Сейчас, если я вижу что стандартный код например в 80 кодеюните выполняется неоптимально - я модифицирую кодеюнит. Какова методика в случае Events и Extensions? 2. Проблема с новыми полями и селективностью ключей. Зачастую требуется добавить новый ключ и изменить SetCurrentkey в отчетах или процедурах в обработки в силу специфики данных. Как быть в этом случае? Позволят ли extensions безболезненно это сделать и на каких events? Event OnSetCurrentKey будет? А может быть OnFind ? До чего еще дойдем? 3. Стандартный commit во многих случаях мешает встраивать код в процедуры обработки более высокого уровня. Сейчас это обходится установкой флага SetNoCommit в кодеюнитах и выставлением проверки на неожиданный коммит. Какой event не предложат? ....Еще куча пунктов вертится на языке, отпишу позже |
|