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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.08.2003, 18:25   #1  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
? Исполнение методов класса на стороне сервера (AOS)?
Добрый вечер!
Прошу помощи...

Имеем трехуровневую конфигурацию (AOS на выделенной машине)

Есть принципиальная задача - с клиента инициировать создание класса на стороне сервера (AOS), управлять его методами и возвращать результат выполнения этих методов на клиента.

Пытаюсь решить:

1. создаю класс xTmp со свойством RunOn = Server
2. в этом классе создаю метод, например такого вида:
server static void Test()
{
;
info('hello');
}
3. Затем создаю форму и на clicked() метод одной из кнопок вешаю такой код:
void clicked()
{
xTmp xT;
super();

xT = new xTmp();
xT.Test();
}

в результате выполнения формы появляется ошибка, что метод Test в классе xT не определен, если же описание метода Test изменить на:
void Test()
{
;
info('hello');
}
то он выполняется, но только на стороне клиента...

В результате хотелось бы, что бы сообщение hello появилось на машине с AOS...

Возможно ли такое поведение осуществить в аксапте с трехуровневой конфигурации и если можно, то как это сделать?

Вообще необходимо запусить внешнюю, по отношению к аксапте, задачу на стороне сервера (AOS), дождаться ее завершения и вернуть результат на, иницирующего запуск внешней задачи, клиента.

Заранее спасибо...
Старый 16.08.2003, 00:03   #2  
Максим is offline
Максим
Участник
 
1 / 10 (1) +
Регистрация: 15.08.2003
Cool Особенности static методов
В виду того, что в первоначальном варианте объявляется static метод, для его вызова необходимо использовать следующий код:

PHP код:
void clicked()
{
    ;
    
xTmp::Test();

Узнать более подробно об отличительных особенностях static методов можно в "Microsoft Navision Axapta Developer's Guide".
Старый 18.08.2003, 10:00   #3  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
Исполнение методов класса на стороне сервера (AOS)?
Максим, спасибо за замечание...

Но, вопрос остается открытым...

Класс с параметром RunOn = Server и его метод объявленный как server static все равно выполняются на стороне клиента... Не пойму почему...

Или в среде аксапты это сделать невозможно?
Старый 18.08.2003, 10:10   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
вопрос
Извините за вопрос, а как Вы определили, что метод выполнился на клиенте, а не на сервере?
Старый 18.08.2003, 10:16   #5  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Чтобы на AOS появилось сообщение - нельзя такое сделать из Аксапты. Да и зачем? Если очень хочеться, можно использовать winApi :-)
Старый 18.08.2003, 10:56   #6  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
Мне необходимо запусить внешнюю, по отношению к аксапте, задачу на стороне сервера (AOS), дождаться ее завершения и вернуть результат на клиента.

Запустить внешнюю задачу и ждать ее завершения я умею, теперь мне необходимо чтобы внешняя задача запускалась на машине с AOS...

2 Wamr:
Согласен, что пример с использованием info() не лучший, т.к. оказывается все GUI выполняются только на стороне клиента...
Тогда как оценить, что код исполнился на сервере?

2 kalex:
Выводить сообщение мне не нужно см выше...


Хорошо упростим задачу...
Вопрос, как открыть calc.exe или notepad.exe на сервере?

Метод RunWait() класса с параметром RunOn=Server, объявленный как:

server static void RunWait()
{
COM wsh;
int li_rc;

wsh = new COM("WScript.Shell");
li_rc = wsh.Run("calc" , 1, TRUE);
}

открывает калькулятор на клиенте...
Старый 18.08.2003, 11:14   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
winAPI
Ничего конкретного сказать не могу.
Из личного опыта - далеко не все ф-ции WinAPI будут выполняться в серверных методах, так что удастся или нет надо пробовать.
но заманчиво.. взять да запустить на серваке что-дь. Аксапта как троян - круто!
Старый 19.08.2003, 11:34   #8  
Megacrusher is offline
Megacrusher
NavAx
Аватар для Megacrusher
NavAx Club
 
175 / 19 (1) ++
Регистрация: 18.08.2003
Адрес: Москва
Не совсем понял зачем info нужно на стороне сервера ?
Если Вам нужно что-то обработать на сервере - то обрабатывайте а зачем сообщение на стороне сервера?
Вот что написано в описании.
The class has a RunOn property that can have these values:
Client
Called from
Server.
Objects created from the class will then live at the location specified.
If you choose Called from, the object will live at the tier where the code creating it (by calling the new constructor) is running.
Classes extending other classes will also inherit the RunOn property. You cannot change it if it is Client or Server. If it Called from, you can leave it or change it to Client or Server.
Это из описания...

Поясните пожалуйста, похоже Вас не понимают, как и я
Старый 19.08.2003, 11:39   #9  
Megacrusher is offline
Megacrusher
NavAx
Аватар для Megacrusher
NavAx Club
 
175 / 19 (1) ++
Регистрация: 18.08.2003
Адрес: Москва
Прошу прошения. Не внимательно прочитал.
Понял. Интересный вопрос Вы задаете.
Это примерно тоже самое как запустить на AOS Word. Сомневаюсь, что это возможно. А простите для чего это нужно? Может быть можно какой-нить другой вариант Вам присоветовать?
Старый 19.08.2003, 11:56   #10  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Вышеприведённый код у меня на сервере исполнялся. Правда в результате клиент завис, а калькулятор на сервере увидеть можно было только в процессах. :-) (Axapta 3.0 SP1)
Старый 25.08.2003, 12:22   #11  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
Подвожу итоги:
Описанная технология работает, правда с некоторыми оговорками (работает только с тонким клиентом в 3-х уровневой конфигурации)

To kalex:
Клиент у вас не завис, а как раз ждет окончания работы запущенной программы на сервере. Это как раз то что мне было нужно. В случае, если вы вызывали calc.exe, то действительно он появляется на сервере только в списке задач (видно визуальные вещи таким образом запустить на серевере не удастся - ну оно на сервере и не надо ) и если его убить, то ваш клиент оживет...
Этот код у меня исполнялся на клиенте в трехуровневой конфигурации потому что я соединялся в AOS'ом толстым клиентом, как только установил соединение тонким клиентом код стал исполняться на сервере... (немного странное поведение класса при условии что его свойство установлено RunOn=Server... ну да ладно)

То Megacrusher:
Задача у меня была принципиальная - запустить на стороне сервера внешнюю задачу, дождаться его выолнения и вернуть на клиента результат - успешно или нет все прошло.
Решалась эта задача применительно к запуску внешнего для аксапты репортера

Спасибо всем, кто принимал участие...
Старый 28.08.2003, 16:15   #12  
Zom is offline
Zom
Участник
 
41 / 11 (1) +
Регистрация: 28.08.2003
Адрес: Denmark
Цитата:
Изначально опубликовано SnowMan
Подвожу итоги:
Описанная технология работает, правда с некоторыми оговорками (работает только с тонким клиентом в 3-х уровневой конфигурации)

Этот код у меня исполнялся на клиенте в трехуровневой конфигурации потому что я соединялся в AOS'ом толстым клиентом, как только установил соединение тонким клиентом код стал исполняться на сервере... (немного странное поведение класса при условии что его свойство установлено RunOn=Server... ну да ладно)

Спасибо всем, кто принимал участие...
В принципе он правильно работал.
При 2-уровневой конфигурации так и должно быть.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
daxis: Troubleshooting blocked SPIDS in AOS Blog bot DAX Blogs 0 01.04.2009 18:05
Arijit Basu: AX 4 AOS Basics: [Level 100] Blog bot DAX Blogs 0 18.11.2007 14:30
DynamicsTech: What's New in Dynamics Ax 4.0 AOS? Blog bot DAX Blogs 0 12.04.2007 11:50
axaptapedia: Control AOS from command line Blog bot DAX Blogs 0 09.03.2007 14:50
Ещё один вопрос Возможность выбора сервера AOS у тонкого клиента Maksim13 DAX: Администрирование 7 19.10.2005 17:35
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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