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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.03.2018, 09:04   #1  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Post Как передать Args формы в класс service? Sysoperation Framework
Добрый день!

Возник следующий вопрос. Использую Sysoperation Framework. Класс контроллер запускается с формы, и нужно в класс servise передать ее Args. Класс Контракт не поддерживает сложные типы данных типа Args. Как это сделать?
Старый 29.03.2018, 11:01   #2  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от Skolos Посмотреть сообщение
Добрый день!

Возник следующий вопрос. Использую Sysoperation Framework. Класс контроллер запускается с формы, и нужно в класс servise передать ее Args. Класс Контракт не поддерживает сложные типы данных типа Args. Как это сделать?
Запакуйте в контейнер, положите в контракт, а в сервисе - распакуйте
Но вообще сразу возникает вопрос - что у вас там такого в args, что нельзя передать напрямую?
__________________
С уважением,
Вячеслав
Старый 29.03.2018, 11:13   #3  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
В контракт можно положить другой контракт или коллекцию других контрактов https://technet.microsoft.com/en-us/.../gg848068.aspx даже таблицу можно. А что вам конкретно надо ?
Старый 29.03.2018, 11:48   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Service не должен знать про UI (см ModelViewConroller) для того, надо либо переместить логику в контроллер либо разобрать Args и передать нужные параметры через контракт
Старый 29.03.2018, 17:36   #5  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
Service не должен знать про UI (см ModelViewConroller) для того, надо либо переместить логику в контроллер либо разобрать Args и передать нужные параметры через контракт
Добавим яиц жонглеру. Контроллер при этом не должен знать о логике, а в модель и не думайте соваться.

Microsoft Dynamics AX 2012 White Paper: Introduction to the SysOperation Framework
https://www.microsoft.com/en-us/down...ng=en&id=29215
Вот такой вот цветочек в куче навоза.
Миниатюры
Нажмите на изображение для увеличения
Название: 2018-03-29_15-35-07.jpg
Просмотров: 642
Размер:	108.0 Кб
ID:	11872  
Старый 29.03.2018, 17:55   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Контроллер при этом не должен знать о логике
Контроллер не должен содержать бизнес логики, но знать о ней может. Как и содержать UI логику.

Цитата:
, а в модель и не думайте соваться.
А вот это я вообще не понял.
Старый 29.03.2018, 20:55   #7  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
Контроллер не должен содержать бизнес логики, но знать о ней может. Как и содержать UI логику.
...
А вот это я вообще не понял.
Ну это так, для большего драматизма. Как прикладывающийся программист, я бы особо не парился что там должно и где, а просто протянул бы .parmPackedArgs_MyPostFix() по всей цепочке вызова. Понятно что это потребует расширения Declaration, PackedList для каждого класса в цепочке, но единственно чтобы бы меня заботило это сделать так чтобы не было runtime ошибок и при этом максимально сбоку. Типа версия 901 PackedList, наименование переменных с префиксами/постфиксами и прочее.

А для чего там тот или иной класс - пофиг. Это передача параметра и ничего больше. KISS, Debugger в зубы и вперед.
Старый 30.03.2018, 09:14   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Я бы сначала узнал что нужно автору и как работает SysOperationFramework.
Цитата:
Сообщение от ax_mct Посмотреть сообщение
просто протянул бы .parmPackedArgs_MyPostFix() по всей цепочке вызова.
Понятно что это потребует расширения Declaration, PackedList для каждого класса в цепочке,
Только для контракта. Причем SysOpFW отличается тем, что там не надо заморачиваться с packedlist - он сам пакует и разбирает свойства по имени.

Цитата:
но единственно чтобы бы меня заботило это сделать так чтобы не было runtime ошибок и при этом максимально сбоку. Типа версия 901 PackedList, наименование переменных с префиксами/постфиксами и прочее.
А в конце выяснится, например, что автору надо просто надо обновить вызывающую форму после выполнения операции чтобы изменения отобразились.

Args.caller во первых запаковать нельзя, а во вторых, его не нужно никуда протаскивать - достаточно или в afterOperation или прямо в main написать этот код.

Цитата:
А для чего там тот или иной класс - пофиг. Это передача параметра и ничего больше. KISS, Debugger в зубы и вперед.
И ни в задаче ни в системе разбираться не надо
За это сообщение автора поблагодарили: ax_mct (5).
Старый 30.03.2018, 17:15   #9  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
Я бы сначала узнал что нужно автору и как работает SysOperationFramework.

Только для контракта. Причем SysOpFW отличается тем, что там не надо заморачиваться с packedlist - он сам пакует и разбирает свойства по имени.

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

Args.caller во первых запаковать нельзя
, а во вторых, его не нужно никуда протаскивать - достаточно или в afterOperation или прямо в main написать этот код.


И ни в задаче ни в системе разбираться не надо
Все верно. В этом случае я сохранял живую ссылку в infolog. Не идеально но хоть что-то. По крайней мере один SYS пример там такой есть.

Разбираться не надо в SysOperationFramework - вот я хотел сказать До тех пор пока можно без этого обойтись. Debugger может все показать и так.

Не система это, а НЛО упавшее на колхозное поле, пусть научники это изучают.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Calling AX 2012 Business Logic from SSIS Using a Script Task and Custom Web Service Blog bot DAX Blogs 0 12.11.2015 03:48
AIF: Microsoft Dynamics AX Services and Windows Azure Service Bus Blog bot DAX Blogs 0 24.07.2013 03:13
Microsoft Dynamics AX 2012 White Paper: Introduction to the SysOperation Framework Vadik DAX: База знаний и проекты 69 17.07.2013 01:44
sumitsaxfactor: Create Your First Custom Service [AX 2012] Blog bot DAX Blogs 0 19.05.2012 19:14
daxmusings: From RunBase to SysOperation : Business Operation Framework (Cont'd) Blog bot DAX Blogs 0 19.08.2011 16:11

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

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

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