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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.08.2017, 11:49   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
не перепутал ли ты RunbaseProgress, RunBase, SysOperationProgress и SysOperation в этом сообщении?
Опять демагогия и опять в твоем перечне классов нет SysOperationSandbox...
Что позволяет предположить. а не перепутал ли ты с чем-то?

Ок. Расскажи свое видение картины. Только чтобы в нем обязательно был SysOperationSandbox. Просто потому что тема ветки SysOperationSandbox.
__________________
полезное на axForum, github, vk, coub.
Старый 29.08.2017, 13:01   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
Опять демагогия и опять в твоем перечне классов нет SysOperationSandbox...
Это не демагогия. При неаккуратном использовании терминов я не понимаю, понимаешь ли ты суть и просто небрежно используешь обозначения или какие-то детали от тебя ускользнули.

Судя по тому, что ты сказал
"* класс обработка (в стандарте) не занимается своим состоянием, инициализацией и восстановлением параметров, не имеет доступа к UI. В частности, не может отображать прогресс и не может информировать пользователя о своем состоянии."

Для тебя ускользнула разница между SysOperationProgress и RunBaseProgress - то есть ты прочитал использованные термины неаккуратно и додумал их значение.


Цитата:
Сообщение от mazzy Посмотреть сообщение
Ок. Расскажи свое видение картины. Только чтобы в нем обязательно был SysOperationSandbox. Просто потому что тема ветки SysOperationSandbox.
Начнем с конца. SysOperationSandbox это часть SysOperation FW (а не обертка над) для того, чтобы выполнять синхронные запросы на клиентской стороне.


/// <summary>
/// The <c>SysOperationSandbox</c> class is an internal class for running synchronous operations
/// on client side async sessions
/// </summary>


См., например, SysOperationServiceController

X++:
public final void runOperation()
    {
        if (executionMode == SysOperationExecutionMode::Synchronous)
        {
            SysOperationSandbox::startOperation(this);
        }
        else
        {
            // route through the base class to call run or 
            // enqueue in batch
            super();
        }

    }
Т.е. она позволяет запустить с некоторым дефолтным UI операцию (метод сервиса). Судя по перекрестным ссылкам она используется не только изнутри SysOpFW но и напрямую.


Давай я пофикшу твое утверждение как я его понимаю:

Итак, старый добрый RunBase (SysOperationProgress):
* одна операция один класс
* в одном классе замешаны хранилище данных, маршаллинг данных, диалог, собственно обработка
* допускается наследование классов-обработок
* предоставляется фреймворк, от которого надо унаследовать свой класс и встроиться в фреймворк
* отлаживать надо один класс
* класс полностью управляет своим состоянием, инициализацией и восстановлением параметров, отображенем себя в UI. В частности, сам занимается отображением своего прогресса и прочим информированием пользователя о своем состоянии.


Новый SysOperation (уже обсужался неоднократно):
* несколько формально и синтаксически независимых, но при этом очень сильно семантически связанных классов

сервис зависит от контракта, контракт может засисеть от UI билдера, билдер засисит от контракта, контроллер зависит от сервиса - это все декларировано

* наследовать от базовых классов не нужно (нет базовых классов) (кроме сервиса и UI builder)
* встраивание во фреймворк происходит через атрибуты (и соответственно, через рефлекшн) (кроме сервиса и UI builder)
* создание классов-наследников от собственного происходит с трудом (потому что атрибуты не наследуются) Атрибуты наследуются и перекрываются.
* [класс обработка (в стандарте) не занимается своим состоянием, инициализацией и восстановлением параметров, не имеет доступа к UI. В частности, не может отображать прогресс и не может информировать пользователя о своем состоянии. Может отображать прогресс (см примеры использования SysOperationProgress). У обработки нет состояния а есть только параметры (контракт), параметры могут перекрыть SysPackable и управлять своей серилизации

по сути изменений два:
1. (атрибуты наследуются) вместо наследования - не наследуемые атрибуты
2. вместо все-в-одном - группа очень тесно связанных классов
3. (сервис это обычный класс со статическими методами) вместо обычного класса - обязательно сервис

К сожалению, в Ax7 не доделали стандартную обработку прогресса и единственный UI что для RunBase, что для SysOP FW - это бегущие точки.

Почему не доделали, вопрос сложный, надо понять над чем client team работала вместо этого и рыться в багтрекере.
За это сообщение автора поблагодарили: Logger (3), mazzy (2).
Старый 29.08.2017, 13:45   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Макс, спасибо.

Цитата:
Сообщение от belugin Посмотреть сообщение
Это не демагогия. При неаккуратном использовании терминов я не понимаю, понимаешь ли ты суть и просто небрежно используешь обозначения или какие-то детали от тебя ускользнули.
спасибо, что изложил свое видение.

Цитата:
Сообщение от belugin Посмотреть сообщение
Начнем с конца. SysOperationSandbox это часть SysOperation FW (а не обертка над) для того, чтобы выполнять синхронные запросы на клиентской стороне.
ЕСЛИ SysOperationSandbox - это часть SysOperation FW для выполнения синхронных запросов на клиентской стороне
И SysOperationSandbox отсутствовал раньше,
ТО значит ли это, что раньше синхронные запросов на клиентской стороне нельзя было выполнить?


ЕСЛИ синхронные запросов на клиентской стороне без SysOperationSandbox можно было выполнить
ТО почему это SysOperationSandbox часть фреймворка, а не надстройка над ним?


Цитата:
Сообщение от belugin Посмотреть сообщение
Т.е. она позволяет запустить с некоторым дефолтным UI операцию (метод сервиса). Судя по перекрестным ссылкам она используется не только изнутри SysOpFW но и напрямую.
угу.
и судя по статье, ссылку на которую я привел в самом начале, класс предназначен для работы с ним напрямую.

собственно в этом и вопрос - почему за информирование пользователя в данном классе отвечает ВЫЗЫВАЮЩАЯ сторона, а не сам класс, как было в старые добрые времена.


Цитата:
Сообщение от belugin Посмотреть сообщение
Давай я пофикшу твое утверждение как я его понимаю:
Да, Спасибо.

Не буду придираться к деталям. Спрошу про одно - ты просто перевернул мое восприятие:


Цитата:
Сообщение от belugin Посмотреть сообщение
1. (атрибуты наследуются) вместо наследования - не наследуемые атрибуты
КАК!?
Давай уточню вопрос.
Пусть есть два класса. Bar - потомок Foo. Foo помечен атрибутом.
X++:
class MyClassAttibute extends Attribute { }
class MyMethodAttibute extends Attribute { }

[MyClassAttribute]
Class Foo {

    [MyMethodAttribute]
    void myMethod();
}

Class Bar extends Foo {

    void myMethod();
}
Значит ли это что в Аксапте класс Bar тоже помечен атрибутом?
Значит ли это что в Аксапте метод класса Bar тоже помечен атрибутом?
__________________
полезное на axForum, github, vk, coub.
Старый 29.08.2017, 14:24   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
Значит ли это что в Аксапте класс Bar тоже помечен атрибутом?
Значит ли это что в Аксапте метод класса Bar тоже помечен атрибутом?
Тут я, наверное, ошибся. Они наследуются вместе с методами (т.е. tесли метод не перекрыт, SysOP выведет параметры как у предка), но не наследуются у классов и перекрытых методов.

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

Наверное мне пока не попадалась задача перекрыть параметр но при этом не меняя метку.
За это сообщение автора поблагодарили: mazzy (2).
Старый 29.08.2017, 15:02   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение

ЕСЛИ SysOperationSandbox - это часть SysOperation FW для выполнения синхронных запросов на клиентской стороне
И SysOperationSandbox отсутствовал раньше,
ТО значит ли это, что раньше синхронные запросов на клиентской стороне нельзя было выполнить?


ЕСЛИ синхронные запросов на клиентской стороне без SysOperationSandbox можно было выполнить
ТО почему это SysOperationSandbox часть фреймворка, а не надстройка над ним?
Мне трудно посмотреть что было на этом месте в Ax2012, пока мое видение такое:
эта часть была не оформлена. В Ax7 ее выделили в статический метод (extract method) и стали использовать снаружи недокументировав.

То есть эта штука используется самим sysop fw И предоставляет возможность снаружи вызывает один частный случай (не оборачивая старый способ вызова а наоборот, выделив его).
Старый 29.08.2017, 14:42   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
А могу я все-таки еще один вопрос по твоему тексту?

Цитата:
Сообщение от belugin Посмотреть сообщение
Начнем с конца. SysOperationSandbox это часть SysOperation FW (а не обертка над) для того, чтобы выполнять синхронные запросы на клиентской стороне.
фиг с ним, обертка или часть (хотя если ответишь, будет классно)
но почему ты говоришь "выполнять синхронные запросы на клиентской стороне"?

ведь сейчас любой, абсолютно любой код X++ выполняется на сервере.
что ты имеешь в виду?
__________________
полезное на axForum, github, vk, coub.
Старый 29.08.2017, 15:53   #7  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
ведь сейчас любой, абсолютно любой код X++ выполняется на сервере.
что ты имеешь в виду?
Я просто процитировал XML коммент, я думал эта штука была сделана до того, как все ушло на сервер (либо автор называет forms engine клиентом).

Есть еще одна гипотеза, что в связи с тем, что сейчас аксапта считает что если операция выполнялась дольше какого-то времени, она зависла и паникует, то пришлось делать некий Sandbox чтобы делать синхронно с точки зрения вызова, но асинхронно с точки зрения движка. В-общем, надо посмотреть что там внутри.
За это сообщение автора поблагодарили: mazzy (2).
Старый 29.08.2017, 16:15   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
я думал...
...пришлось делать некий Sandbox...
вооот.
и возвращаемся к началу темы
Цитата:
Сообщение от mazzy Посмотреть сообщение
мне одному кажется, что логика Sandbox вывернута наизнанку?
__________________
полезное на axForum, github, vk, coub.
Теги
#страшнодалекиониотнарода

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mfp: X++ in AX7: String truncation Blog bot DAX Blogs 6 29.05.2020 18:24
mfp: What is new in X++ in AX7? Blog bot DAX Blogs 2 10.02.2016 00:29
Пример использования RunBuf Mechanizm DAX: Программирование 11 02.03.2004 13:25
Пример использования класса RunBase* Andronov DAX: Программирование 3 17.09.2003 13:12
HB_Tutorial_setTmpData - пример использования метода setTmpData vitk DAX: База знаний и проекты 0 10.12.2001 15:26

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:48.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.