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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.10.2004, 17:44   #1  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
класс AOSLoadGen
Что делает системный класс AOSLoadGen? Поделитесь знаниями, кто может :-)
Старый 26.10.2004, 14:42   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
а перекрестные ссылки?

им Benchmark tool запускает скрипты, чтобы одним тонким клиентом имитировать работу нескольких
Старый 27.10.2004, 10:31   #3  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Да, упоминается он в одном месте в коде.

static server void exec3Tier(BMUserScriptID userScriptID)
{
AOSLoadGen AOSLoadGen;
str userScriptIdstr;

userScriptIdStr = userScriptID;

if (!AOSLoadGen) AOSLoadGen = new AOSLoadGen('',classnum(BMInfo));
if (!AOSLoadGen.spawnClass(classnum(BMUserScriptrun),userScriptIDstr))
throw error("@SYS60253");
}

Но что делает, для меня пока остается загадкой.
Как он имитирует работу нескольких клиентов? Запускает отдельную сессию на сервере и выполняет в ней класс?
Старый 27.10.2004, 12:27   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Изначально опубликовано kalex
Как он имитирует работу нескольких клиентов? Запускает отдельную сессию на сервере и выполняет в ней класс?
что внутри него происходит для меня тайна, покрытая мраком

по внешнм признакам:
- новая сессия если и запускается, то довольно интересно - ни в "активных пользователях", ни в performance monitor она не появляется. Может быть, это сделано специально, чтобы избежать проблем с лицензиями
- AOSLoadGen.spawnClass скармливаются два параметра - classNum и строковой параметр. Тот в свою очередь запустит main() соответствующего класса, параметр доступен через args.parm()

все это в принципе и так видно на примере

а можно поинтересоваться - чего Вы от него добиваетесь?
Старый 27.10.2004, 12:31   #5  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Я ищу способ запустить код на другом клиенте.
Старый 27.10.2004, 15:20   #6  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано kalex
Я ищу способ запустить код на другом клиенте.
Может посмотреть в сторону формы "Администрирование \ Активные пользователи" - её кнопочка "отправить сообщение". Потенциально это может дать способ запускать какие либо процедуры и кроме вывода диалога с сообщением.
Старый 27.10.2004, 15:59   #7  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
может быть есть смысл посмотреть в сторону SysEventHandler?

только очень аккуратно, чтобы не поломать то, что есть
Старый 28.10.2004, 10:49   #8  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Дело в том, что SysEventHandler работает в отдельном Thread. А из него мне не удается открыть форму или хотя бы вывести info(). Если подскажите, как этого добится, буду очень благодарен.
Старый 28.10.2004, 11:56   #9  
monk is offline
monk
Участник
 
67 / 12 (1) ++
Регистрация: 14.10.2002
А вот такое решение:
пишем текстовый файл в котором необходимый код на X++

далее у клиента запускаем периодическую функцию по setTimeOut - она считывает файл и его исполняет
Старый 28.10.2004, 14:49   #10  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано monk
А вот такое решение:
пишем текстовый файл в котором необходимый код на X++

далее у клиента запускаем периодическую функцию по setTimeOut - она считывает файл и его исполняет
А можно вместо файла использовать таблицу аксапты, по которой периодически делать селект. Также в этой табличке можно завести поле "userId", или "MachineName" и адресовать такие "сообщения" каким то конкретным клиентам.
Старый 28.10.2004, 15:22   #11  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Хорошая идея :-)
Но фишка в том, что для работы по таймеру нужно где-то хранить ссылку на класс, иначе его мусорщик соберет. Другого места, как GlobalCash я не вижу. Но если в application.startup() добавить код создания класса и помещения ссылки на него к кэш, таймер почему-то не работате (или ссылка куда-то девается). Хотя если потом руками запустить, то все хорошо работает. В общем, встает проблема: как это запустить при открытии клиента.
Старый 28.10.2004, 16:26   #12  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Изначально опубликовано kalex
Хорошая идея :-)
Но фишка в том, что для работы по таймеру нужно где-то хранить ссылку на класс, иначе его мусорщик соберет. Другого места, как GlobalCash я не вижу.
есть такое место - это Application

загляните в его classDeclaration
Старый 28.10.2004, 16:50   #13  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано kalex
Хорошая идея :-)
Но фишка в том, что для работы по таймеру нужно где-то хранить ссылку на класс, иначе его мусорщик соберет. Другого места, как GlobalCash я не вижу. Но если в application.startup() добавить код создания класса и помещения ссылки на него к кэш, таймер почему-то не работате (или ссылка куда-то девается). Хотя если потом руками запустить, то все хорошо работает. В общем, встает проблема: как это запустить при открытии клиента.
Вот здесь об этом сказано:
http://axforum.info/forums/showthrea...0&pagenumber=3
и даже пример приведен.

У меня всё работает.

Возможно что проблема может крытся в том где создаётся объект-резидент (вызывающий таймер) - на клиенте или на сервере в 3-х звеньевой конфигурации. Делайте его с "run on = client".
Старый 29.10.2004, 11:08   #14  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Спасибо!
Действительно, класс должен жить на клиенте.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
класс InventSumDateValueReportDim Физические запасы? Poleax DAX: Программирование 12 01.07.2008 15:27
Проблема с передачей контролов из формы в класс matew DAX: Программирование 0 28.04.2008 17:37
передача переменной из класса в класс fialka DAX: Программирование 3 11.01.2007 10:59
Класс двумерного массива Владимир Максимов DAX: База знаний и проекты 29 30.04.2004 19:05
Класс xSysLastValue Maxim Gorbunov DAX: База знаний и проекты 0 27.11.2001 17:39

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

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

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