AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Old 01.11.2007, 17:22   #1  
trace is offline
trace
Участник
 
3 / 10 (1) +
Join Date: 06.09.2007
:( Проблема с SysClientSessions
Требуется ограничить число открывемых пользователем сессий Аксапты(4.0) .
В методе startupPost() класса Application написана проверка:
while select clientSessions where
clientSessions.userId == curUserId()
&& clientSessions.Status == 1
&& clientSessions.SessionId!= sessionid()
........
Когда заходиш в аксапту под юзером Admin, то все работает, а если заходиш под другим, то этот селект вообще пролетает и входит в аксапту независимо от количества открытых сессий. Как быть?

Заранее спасибо.
Old 02.11.2007, 01:51   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Join Date: 28.11.2005
Location: Москва
Blog Entries: 3
Quote:
Originally Posted by trace View Post
Требуется ограничить число открывемых пользователем сессий Аксапты(4.0). Как быть?
По крайней мере, для 3-ки был такой вариант, как ограничить количество входов пользователя.
Old 06.11.2007, 09:57   #3  
trace is offline
trace
Участник
 
3 / 10 (1) +
Join Date: 06.09.2007
Quote:
Originally Posted by gl00mie View Post
По крайней мере, для 3-ки был такой вариант, как ограничить количество входов пользователя.
Дело в том, что мне нужно убивать предыдущую сессию, а не новую открытую. Если у пользователя есть права на администрирование, то все отлично, а если прав нет, то ничего не происходит. Можно ли как то это обойти, тоесть не наделять пользователя правами на администрирование?
Old 06.11.2007, 10:56   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Join Date: 28.11.2005
Location: Москва
Blog Entries: 3
Quote:
Originally Posted by trace View Post
Дело в том, что мне нужно убивать предыдущую сессию, а не новую открытую.
Мне кажется, это очень неудачная идея; если ее вам подсказали аналитики или, того хуже, сами пользователи - подумайте дважды... Пользователь может запустить какую-нить длительную операцию (создание отчета, разноску журнала, еще что-то) - не в пакетном задании, а непосредственно в своей сессии и, "покурив" минуту-другую, попытаться запустить второй экземпляр клиента. В результате предыдущий клиент по вашей логике прибьется, и запущенная операция прервется с откатом транзакции, если таковая будет начата в ходе обработки. Хорошо, если это будет длительное создание отчета, а если какая-нить разноска? Вы уверены, что пользователи хотят именно этого и будут адекватно воспринимать подобное поведение системы при запуске второго клиента?
Более того, надо быть очень аккуратным при таком подходе, ведь пользователи могут быть и служебные - какие-нить proxy-пользователи для бизнес-коннектора. В результате при таком поведении системы любой функционал, их использующий, будет постоянно прибиваться при запуске второй сессии. Я точно не скажу, но вроде Enterprise Portal требует (требовал в 3-ке) двух COM-лицензий и, соотв., двух одновременно работающих сессий COM-коннектора. Подумайте об этом.

Last edited by gl00mie; 06.11.2007 at 11:01.
This post has been rated by: mazzy (5).
Old 06.11.2007, 11:10   #5  
trace is offline
trace
Участник
 
3 / 10 (1) +
Join Date: 06.09.2007
Quote:
Originally Posted by gl00mie View Post
Мне кажется, это очень неудачная идея; если ее вам подсказали аналитики или, того хуже, сами пользователи - подумайте дважды... Пользователь может запустить какую-нить длительную операцию (создание отчета, разноску журнала, еще что-то) - не в пакетном задании, а непосредственно в своей сессии и, "покурив" минуту-другую, попытаться запустить второй экземпляр клиента. В результате предыдущий клиент по вашей логике прибьется, и запущенная операция прервется с откатом транзакции, если таковая будет начата в ходе обработки. Хорошо, если это будет длительное создание отчета, а если какая-нить разноска? Вы уверены, что пользователи хотят именно этого и будут адекватно воспринимать подобное поведение системы при запуске второго клиента?
Более того, надо быть очень аккуратным при таком подходе, ведь пользователи могут быть и служебные - какие-нить proxy-пользователи для бизнес-коннектора. В результате при таком поведении системы любой функционал, их использующий, будет постоянно прибиваться при запуске второй сессии. Я точно не скажу, но вроде Enterprise Portal требует (требовал в 3-ке) двух COM-лицензий и, соотв., двух одновременно работающих сессий COM-коннектора. Подумайте об этом.
Планировалось убивать именно предыдущую сессию, потому что бывают случаи, когда аксапта просто зависает, а сессия тем не менее не обрывется. При запуске второй сессии пользователю будет выводиться сообщение, и он сможет либо закрыть предыдущую сессию, либо текущую.
Old 06.11.2007, 12:12   #6  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by gl00mie View Post
подумайте дважды...
очень грамотное замечание. ап-солютно согласен.


Quote:
Originally Posted by trace View Post
бывают случаи
ну дык и решайте эти отдельные случаи. зачем шашкой то махать?
__________________
полезное на axForum, github, vk, coub.
Old 06.11.2007, 14:14   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,723 / 1208 (44) ++++++++
Join Date: 13.01.2004
Blog Entries: 3
Quote:
Originally Posted by trace View Post
Планировалось убивать именно предыдущую сессию, потому что бывают случаи, когда аксапта просто зависает, а сессия тем не менее не обрывется. При запуске второй сессии пользователю будет выводиться сообщение, и он сможет либо закрыть предыдущую сессию, либо текущую.
Очень часто при зависании сессии ни сам пользоватиль, ни Axapta не смогут ее отключить. Помогает только внешнее отрубание процесса. В худшем случае, перезагрузка AOS. Т.е. программное отключение в критических ситуациях - не работает, хотя и ошибок не вызывает.

Это значит, что, в общем случае, единственное что можно сделать - это сообщить пользователю, что у него уже есть открытые сессии. И на этом все.

Отслеживать такие "подвисшие" сессии должен администратор, поскольку сам пользователь часто просто не имеет физической возможности как-то снять "подвисшую" сессию.
Tags
ax4.0

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Проблема с основными средствами в Axapta 3 soin DAX: Функционал 21 11.03.2004 14:43
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20
Проблема с правами доступа sa2002as DAX: Администрирование 1 30.06.2003 13:28
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 08:52.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.