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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.06.2017, 22:06   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
  • не нужно никаких дополнительных классов-запускачей.
  • [стандартный функционал] каждый класс запускается при помощи menuItem. в menuItem хранится объект, который должен быть запущен + метка + права + доп.строка параметров
Никаких запускачей и нет. Есть не запускач, а создавач. Люди которые читали книжку GoF его называют фабрикой, просто потому, что не догадались до имени "создавач" .

Классы бывают не только вызываемые из непосредственно из UI, не только с методами main но и всякие другие. Использование контроля прав доступа нужно далеко не везде. (Я кстати не видел нигде ключевой атрибут по mеnuitem - тут ты ломишься в открытую дверь - если класс именно вызывается - то есть потомок runbase, и по меню айтем можно его однозначно определить, то он связывается с ним непосредственно).

Последний раз редактировалось belugin; 03.06.2017 в 22:18.
Старый 04.06.2017, 22:26   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
теперь много времени уходит на то, чтобы понять что же такое "ритейл".
велкам.

Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Для начала, чтобы не тратить время, определимся что такое конструктор. На мой взгляд, конструктор это то, что создает класс. В Аксе это метод new. Принято создавать статический метод construct, но, несмотря на название это все-таки не конструктор в общем понимании, а метод фабрики.
да. согласен.

Цитата:
Сообщение от belugin Посмотреть сообщение
Никаких запускачей и нет. Есть не запускач, а создавач. Люди которые читали книжку GoF его называют фабрикой, просто потому, что не догадались до имени "создавач" .
да. фабрика. согласен, хороший стандартный термин. и уводит от путаницы с constructor.


Цитата:
Сообщение от belugin Посмотреть сообщение
А теперь, представляем ситуацию, когда наш класс администратор хочет включить в пакетное задание в рамках журнала.
Журнал - это сильно obsolete инструмент.
насколько я помню, это было еще до того, как научились сохранять параметры диалога для пакетных заданий.
сейчас скорее будет запущено что-то через главное меню или через меню в какой-то форуме.


Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Понимаю, что mazzy ждет от поведения системы (то же что и другие люди, знакомые в Аксой, в том числе и я): привычные подходы, которые используются кучу лет, простые способы внесения изменений, ловлю любых зависимостей перекрестными ссылками и т.п.
не совсем так. пусть они будут непривычными.
но пусть будут такими, что покрывают множество сценариев использования. пусть они будут универсальными.

Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Я не очень понимаю, почему mazzy считает, что изменение иерархии путем включения какого-то класса не в качестве последнего листа, а в середину иерархии отличается при использовании фабрики, основанной на атрибутах и фабрики, основанной на switsh-case?
вы тоже говорите о добавлении класса.
я говорю о добавлении функционала, который потом будет предоставлен пользователям.

чтобы предоставить пользователям добавленный класс, нужен будет menuItem.


Цитата:
Сообщение от belugin Посмотреть сообщение
Классы бывают не только вызываемые из непосредственно из UI, не только с методами main но и всякие другие. Использование контроля прав доступа нужно далеко не везде. (Я кстати не видел нигде ключевой атрибут по mеnuitem - тут ты ломишься в открытую дверь - если класс именно вызывается - то есть потомок runbase, и по меню айтем можно его однозначно определить, то он связывается с ним непосредственно).
может. бывают. можно однозначно определить.
не нужен UI - просто создай menuItem и ничего с ним не делай. понадобиться - просто продолжай использовать menuItem.
в отличие от атрибута.

вы снова говорите как это работает.
это работает.

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

технология на атрибутах требует двойных-тройных трудозатрат. я только об этом.
и да: большинство преимуществ атрибутов можно проявить только для решения внутренних МСовских задач и только в окружении МС, где атрибуты уже повсеместно используются. Там таки да - шикардос и позднее связывание рулит. остальным только усложнит жизнь.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 04.06.2017 в 22:41.
Старый 04.06.2017, 23:06   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mazzy Посмотреть сообщение
технология на атрибутах требует двойных-тройных трудозатрат.
чтобы не быть голословным.
по существующей технологии - для того, чтобы помечать атрибутом, нужно создать класс атрибута и прописать как параметры будут преобразованы в ключ.

всего сейчас 83 потомка от SysExtensionAttribute.
3 из них универсальные - enum, menuItem, dataset.
остальные - как правило просто специализированные классы для enum'ов. (почему не универсальный FormEnumSymbolFactoryAttribute? а ХЗ. универсальный класс сейчас используется только в 8 местах)

так вот, получается, чтобы работать по текущим рекомендациям с атрибутами, нужно:
= создать сам класс и встроить его в иерархию
= разобраться с классом атрибутов и встроить туда (или создать класс атрибутов)
= разобраться с фабрикой и встроить туда
= добавить menuItem, если нужно дать функционал пользователю, разобраться как menuItem должен запустить нужный класс

плюс работа, которой никогда нет в МС, но частенько бывает на проекте - решить что делать с функционалом, который добавлен разными партенрами. раньше пересечения нужно было искать только в construct. теперь пересечения нужно искать по разнообразным семействам - классы, атрибуты, стратегии инстанцирования, menuItem.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 366
Размер:	61.2 Кб
ID:	11471   Нажмите на изображение для увеличения
Название: 2.PNG
Просмотров: 260
Размер:	37.4 Кб
ID:	11472  

__________________
полезное на axForum, github, vk, coub.
Теги
sysextension framework, sysoperation framework, как правильно, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stephenmann: Technical History of Dynamics AX - From Axapta 3.0 to AX2012 Blog bot DAX Blogs 5 03.03.2017 10:22
dynamicsax-fico: Invoice search AX2012 vs. AX7 (Part 2) Blog bot DAX Blogs 0 01.04.2016 10:11
DAX2009 аналог friend классов. Как сделать? Raven Melancholic DAX: Программирование 9 07.11.2015 23:50
emeadaxsupport: Inventory closing differences between AX4.0 and AX2012 using weighted average costing method Blog bot DAX Blogs 0 27.12.2012 19:11
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:11.