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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.06.2009, 11:25   #1  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Какие есть варианты, чтобы инициировать с клиентской машины запуск процедуры (или триггера) на сервере (имеется ввиду не SQL-сервер, а NAS или Buisiness Notification)? Тоесть пользователь в процессе работы совершает действие (жмет кнопку, запускает процедуру или меняет значение поля и тем самым запускает триггер) и чтобы серверная программа подключенная к этой же базе могла бы на это отреагировать.
Старый 01.06.2009, 11:45   #2  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Какие есть варианты, чтобы инициировать с клиентской машины запуск процедуры (или триггера) на сервере (имеется ввиду не SQL-сервер, а NAS или Buisiness Notification)? Тоесть пользователь в процессе работы совершает действие (жмет кнопку, запускает процедуру или меняет значение поля и тем самым запускает триггер) и чтобы серверная программа подключенная к этой же базе могла бы на это отреагировать.
Если я правильно понимаю, то "серверная программа" это внешняя программа по отношению в NAV. Её можно вызвать (точнее запустить) несколькими путями, как через ОСХ\Automation, так и из командной строки (посленее недавно вроде обсуждалось). А запуск прописать там, где нужно, например на кнопке или треггере.

P.S. А вот это "имеется ввиду не SQL-сервер, а NAS или Buisiness Notification" немного не понял или не понял задачу..
Старый 01.06.2009, 12:32   #3  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Нет, я не это имел ввиду. На клинетских машинах стоит клиент навижен, на еще одной машине (назовем её "сервер") надо установить NAS (Navision Application Server) или Buiseness Notification. Задача: на клиентской машине срабатывает код (процедура или триггер поля или таблицы) и инициирует выполение процедуры на "сервере".
В голове пока что есть 2 решения:
1.Пока я вычитал из мануалов только, как настроить рассылку почты из Buiseness Notification, например при изменении значения какого-то поля таблицы.
2.Ну и еще в голову приходит вариант запустить на NAS код, который через определенные интервалы времени будет мониторить появление записей в заведенной для этого специальной таблицы заданий, обрабатывать первую запись и удалять её (или помечать как выполненную) и т.д. Но тут меня интересует сколько ресурсов будет отнимать такой процесс? Ведь врядли мне отдельную машину под это выделят, скорее всего на каком-то имеющемся сервере придется поставить.
Старый 01.06.2009, 13:06   #4  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Нет, я не это имел ввиду. На клинетских машинах стоит клиент навижен, на еще одной машине (назовем её "сервер") надо установить NAS (Navision Application Server) или Buiseness Notification. Задача: на клиентской машине срабатывает код (процедура или триггер поля или таблицы) и инициирует выполение процедуры на "сервере".
В голове пока что есть 2 решения:
1.Пока я вычитал из мануалов только, как настроить рассылку почты из Buiseness Notification, например при изменении значения какого-то поля таблицы.
2.Ну и еще в голову приходит вариант запустить на NAS код, который через определенные интервалы времени будет мониторить появление записей в заведенной для этого специальной таблицы заданий, обрабатывать первую запись и удалять её (или помечать как выполненную) и т.д. Но тут меня интересует сколько ресурсов будет отнимать такой процесс? Ведь врядли мне отдельную машину под это выделят, скорее всего на каком-то имеющемся сервере придется поставить.
2 вариант, по моему мнению быстрее и проще (хотя смотря какая задача). Если это не коррекция или что-то подобное базо- или ресурсо-ёмкое, то без проблем на том же сервере вешайте.
Старый 01.06.2009, 13:54   #5  
Raul is offline
Raul
Участник
 
35 / 10 (1) +
Регистрация: 15.03.2006
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Какие есть варианты, чтобы инициировать с клиентской машины запуск процедуры (или триггера) на сервере (имеется ввиду не SQL-сервер, а NAS или Buisiness Notification)? Тоесть пользователь в процессе работы совершает действие (жмет кнопку, запускает процедуру или меняет значение поля и тем самым запускает триггер) и чтобы серверная программа подключенная к этой же базе могла бы на это отреагировать.
У нас SQL и NAS стоят на одном сервере, причем NAS выполняет тяжелые операции по учету и никаких тормозов к тому же плюс что данные по сетке не гоняются. А по вопросу могу посоветовать с небольшими доработками прикрутить к NAS функционал стандартного диспетчера задач, навешать на него все задания и готово. Тогда при нажатии кнопки на клиентской машине нужно всего лишь у соответствующего задания поставить в поле "след. время проверки" текущее время.
Старый 01.06.2009, 13:56   #6  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Мне тоже второй вариант импонирует. С NAS'ом дел не имел до этого, но возникает вопрос имеется же возможность даже на 1 машину ставить несколько NAS'ов, и интересно, как разделить код, который должен запускаться в каждой копии (поясняю, пример есть 2 установленых NAS'a для разных задач, к примеру у каждого по 1 процедуре, как избежать чтоб каждая копия исполняла только свою процедуру, а не обе)?
Старый 01.06.2009, 14:04   #7  
Raul is offline
Raul
Участник
 
35 / 10 (1) +
Регистрация: 15.03.2006
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Мне тоже второй вариант импонирует. С NAS'ом дел не имел до этого, но возникает вопрос имеется же возможность даже на 1 машину ставить несколько NAS'ов, и интересно, как разделить код, который должен запускаться в каждой копии (поясняю, пример есть 2 установленых NAS'a для разных задач, к примеру у каждого по 1 процедуре, как избежать чтоб каждая копия исполняла только свою процедуру, а не обе)?
Разделение нужно оформить в 1CU в триггере NASHandler, в него передается параметр с которым запускается экземпляр NAS. Экземпляров NAS может быть большое кол-во, при этом установить его с диска требуется только 1 раз, а экземпляры добавляются созданием новых служб, для каждой из которых можно настроить разные параметры запуска.
Старый 01.06.2009, 14:12   #8  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Все ясно. Тоже уже добрался до этого триггера. Интересно какие из обработчиков там являются стандартными для русской версии Navision 4.0 SP2 ?
Старый 01.06.2009, 14:14   #9  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Мне тоже второй вариант импонирует. С NAS'ом дел не имел до этого, но возникает вопрос имеется же возможность даже на 1 машину ставить несколько NAS'ов, и интересно, как разделить код, который должен запускаться в каждой копии (поясняю, пример есть 2 установленых NAS'a для разных задач, к примеру у каждого по 1 процедуре, как избежать чтоб каждая копия исполняла только свою процедуру, а не обе)?
При запуске NAS передается параметр, по которому и идет запуск того или иного кода. Только есть ли смысл несколько NAS запускать? Они же каждый по сессии жрут. У меня, вот, в базе несколько фирм. И что б больше одной сесси не занимать я их поставил в цикл старт-стопов. Они у меня отрабатывают по очереди
Старый 01.06.2009, 14:23   #10  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Мне тоже второй вариант импонирует. С NAS'ом дел не имел до этого, но возникает вопрос имеется же возможность даже на 1 машину ставить несколько NAS'ов, и интересно, как разделить код, который должен запускаться в каждой копии (поясняю, пример есть 2 установленых NAS'a для разных задач, к примеру у каждого по 1 процедуре, как избежать чтоб каждая копия исполняла только свою процедуру, а не обе)?
Через запятую параметры ставь (желательно последовательность поссмотреть в 1 СЮ) и используй всего 1 NAS!
Старый 04.06.2009, 10:37   #11  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Нашел еще в Navision такую штуку в главном меню Администрирование -> Диспетчер Задач (Форма 6093). Не изобретаю ли я велосипед? Кто-нибудь может рассказать назначение и принцип работы (тоже видимо на NAS базируется?)?
Старый 04.06.2009, 13:42   #12  
Raul is offline
Raul
Участник
 
35 / 10 (1) +
Регистрация: 15.03.2006
Цитата:
Сообщение от Raul Посмотреть сообщение
У нас SQL и NAS стоят на одном сервере, причем NAS выполняет тяжелые операции по учету и никаких тормозов к тому же плюс что данные по сетке не гоняются. А по вопросу могу посоветовать с небольшими доработками прикрутить к NAS функционал стандартного диспетчера задач, навешать на него все задания и готово. Тогда при нажатии кнопки на клиентской машине нужно всего лишь у соответствующего задания поставить в поле "след. время проверки" текущее время.
Нет этот функционал к NAS не имеет отношения в стандарте, потому как NAS не может выполнять код в формах и датапортах, но именно этот функционал я предлагал доработать для работы с NAS работы там действительно на пол часа.
Старый 06.06.2009, 00:45   #13  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Какие есть варианты, чтобы инициировать с клиентской машины запуск процедуры (или триггера) на сервере (имеется ввиду не SQL-сервер, а NAS или Buisiness Notification)? Тоесть пользователь в процессе работы совершает действие (жмет кнопку, запускает процедуру или меняет значение поля и тем самым запускает триггер) и чтобы серверная программа подключенная к этой же базе могла бы на это отреагировать.
Насколько критичное быстродействие?
При ошибке запуска процедуры или триггера на сервере транзакция на клиенской машине должна откатиться?
Если неважно - думаю помогут уже предложенные варианты.
Если да, возможна реализация через веб-сервисы:
1. Модифицируете НАВ таким образом, чтобы при запуске НАВ с определенными параметрами запускался Communcation Component, и например через сокеты и ставился на прослушку (см. функцию NASHander в 1 cu), пишете обработчик входящего XML .
2. Ставите HTTP Server (к примеру IIS) и пишете простенькую веб-страничку, перенаправлющую запросы от клиента в NAS Навижна и ответ обратно.
3. Запуск триггера со стороны клиентской части Нава будет выглядеть как обращение к определенной веб-странице с некими параметрами, ответ всегда можно обработать и при необходимости сгенерить ошибку.
4. Запуск триггера со стороны серверной части будет выглядеть разбор входящего XML, запуск функций Нава и генерации ответа
Старый 05.08.2009, 14:43   #14  
Storkich is offline
Storkich
Участник
 
149 / 10 (1) +
Регистрация: 08.03.2007
Посмотри CU 99008528-BizTalk Appln. Srv. Startup
последние три процедурки, разберись как они туду попали.
И вперёд!
 


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

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

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