Navision - советы и секреты

  Все выпуски  

Navision - советы и секреты Как управлять сессиями Navision


 Всем привет!

 В сегодняшнем выпуске рассылки – вольный перевод статьи Алена Крикилайона о сессиях Navision.

Как управлять сессиями и убивать их.

Автор: Ален Крикилайон (Alain Krikilion, alias kriki)

Представьте себе, что у вас есть 10 пользователей. Вы купили 12 сессий (две лишних на всякий пожарный случай). Но ваши пользователи всегда открывают несколько сессий.

Или например, так: у вас 100 пользователей, но одновременно в системе работают только 40. Вы покупаете 45 сессий (5 на всякий пожарный). НО – ваши сотрудники просто не выключают компьютеры, или, уходя домой, не закрывают программу.

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

Есть множество путей избежать таких проблем. Например, убивать сессии вручную, либо идти к компьютеру и закрывать сессию. Либо просить людей закрывать программу. Либо… убивать (не людей, а сессии, конечно) автоматически с помощью Navision Application Server.

Программа работает и с базой данных Navision, и с БД SQL, начиная с клиента версии 4.0 (клиент должен уметь убивать сессии удалением записи из списка сессий).

Каждая клиентская лицензия (по крайней мере, я так думаю) включает в себя лицензию на NAS-сессию. Почему бы не использовать ее?

Установка NAS выходит за рамки данной статьи. К тому же на эту тему есть отличное how-to с подробными разъяснениями  How To install a NAV Application Server (NAS)?

Можно подключаться к любой фирме при условии, что у NAS-пользователя хватает прав на удаление сессий.

Дам вам один совет по установке sessionkiller’а:

В первом кодеюните необходимо добавить следующий код к функции NASHandler (ID=99):

IF CGNASStartedinLoop = FALSE THEN

CASE Parameter OF

// START

'SESSIONKILLER': CODEUNIT.RUN(CODEUNIT::”Session Killer”);

//STOP

'OSYNCH','JOBQUEUE':

Если у вас уже работает Applicatiion Server, вы можете добавить sessionkiller’а к этому серверу добавлением в параметры запуска параметра «SESSIONKILLER».

Контролировать работу sessionkiller’а можно с помощью ряда параметров. Для их просмотра и изменений запустите форму 80000:«Session Killer Dashboard»


Форма работает на таблице 80000:”Session Killer Setup” и содержит 2 сабформы.

При изменениях установочных параметров при запущенном УС иногда появляется ошибка о том, что «Запись изменена другим пользователем». Это связано с тем, что УС проводит обновление одного из полей в установочной таблице когда проверяет сессии.

Поля в верхней левой части формы:

 “No. Of Licensed User Sessions”

Количество купленных по лицензии сессий. Когда это поле равно 0, форма берет его из текущей лицензии,  но вы можете установить его вручную. В некоторых ситуациях полезно уменьшить это число, чтобы всегда иметь свободные сессии для входа новых пользователей до того, как будет сделана очередная проверка.

 “License Per Database”

Если у вас есть несколько БД Navision (касается только MS SQL!), необходимо указать тип лицензии – на БД либо на сервер. Если у вас есть 5 лицензий на БД, сесии подключенные к другим БД, НЕ ДОЛЖНЫ учитываться NAS, управляющим конкретной БД. В случае, когда вы хотите управлять всеми БД, вам необходим NAS на каждую БД.

В случае, когда у вас есть лицензия на т.н. «serverlevel»,  одного NAS на любой БД достаточно для управления всеми БД сразу.

 Check Every N Seconds

Этот параметр задаем частоту проверки сессий сервером в секундах. Если на сервере уже запущены каки-то функции, частоту проверки необходимо снизить, в зависимости от работы других функций сервера.

“Optional Kill Session (Min.)”

Если сессия работает вхолостую дольше чем этот параметр (в минутах), ее необходимо убить, но только в случае если больше нет свободных сессий (

“Always Kill Session (Min.)”

Если сессия работает вхолостую дольше чем значение этого параметра, она ОБЯЗАТЕЛЬНО должна быть убита, даже если есть свободные сессии.

“Def. Max. Sessions Per User”

Этот параметр определяет количество сессий по умолчанию, которые одновременно может открыть пользователь. 0 – означает отсутствие ограничений. См. Также «Поля в верхней правой сабформе».

“Current No. of Sessions”

Текущее количество используемых сессий.

“Last Check”

Дата и время последней проверки сессий.

Поля в правой верхней сабформе:

В этой форме вы можете задавать исключения для поля “Def. Max. Sessions Per User”

 “Navision User ID”

ID пользователя, для которого создается исключение

Maximum Sessions Per User

Максимальное количество конкурентных сессий для этого пользователя.

Пример.

Вам необходимо задать правило – у каждого пользователя одновременно может быть только одна сессия. Кроме суперпользователей – у них количество сессий не ограничено.

Вы определяете default  = 1 и создаете новую запись в сабформе для каждого суперпользователя и ставите в поле «Maximum Sessions per User” ноль.

Нижняя сабформа:

Эта сабформа показывает данные из таблицы Session c фильтром по времени бездействия, чтобы показать только сессии, работающие вхолостую не менее 2 минут и (естественно) только клиентов Navision. Фильтры можно изменять.

Суперпользователяь, само собой, может удалять сессии вручную.

Исходный код SessionKiller’а можно скачать здесь.

Оригинал статьи находится здесь.

P.S. Некоторые читатели интересуются кодом функций SQL из прошлого выпуска. Они находятся в этой статье - "Navision + SQL".

P.P.S. Хотите запустить Navision версии 3 на SQL 2008? Или хотите запустить Navision версии 2 и 3 на Windows 7? Об этом в следующем выпуске рассылки.


В избранное