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

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

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

Последний раз редактировалось gl00mie; 06.11.2007 в 11:01.
За это сообщение автора поблагодарили: mazzy (5).
Старый 06.11.2007, 11:10   #5  
trace is offline
trace
Участник
 
3 / 10 (1) +
Регистрация: 06.09.2007
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Мне кажется, это очень неудачная идея; если ее вам подсказали аналитики или, того хуже, сами пользователи - подумайте дважды... Пользователь может запустить какую-нить длительную операцию (создание отчета, разноску журнала, еще что-то) - не в пакетном задании, а непосредственно в своей сессии и, "покурив" минуту-другую, попытаться запустить второй экземпляр клиента. В результате предыдущий клиент по вашей логике прибьется, и запущенная операция прервется с откатом транзакции, если таковая будет начата в ходе обработки. Хорошо, если это будет длительное создание отчета, а если какая-нить разноска? Вы уверены, что пользователи хотят именно этого и будут адекватно воспринимать подобное поведение системы при запуске второго клиента?
Более того, надо быть очень аккуратным при таком подходе, ведь пользователи могут быть и служебные - какие-нить proxy-пользователи для бизнес-коннектора. В результате при таком поведении системы любой функционал, их использующий, будет постоянно прибиваться при запуске второй сессии. Я точно не скажу, но вроде Enterprise Portal требует (требовал в 3-ке) двух COM-лицензий и, соотв., двух одновременно работающих сессий COM-коннектора. Подумайте об этом.
Планировалось убивать именно предыдущую сессию, потому что бывают случаи, когда аксапта просто зависает, а сессия тем не менее не обрывется. При запуске второй сессии пользователю будет выводиться сообщение, и он сможет либо закрыть предыдущую сессию, либо текущую.
Старый 06.11.2007, 12:12   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
подумайте дважды...
очень грамотное замечание. ап-солютно согласен.


Цитата:
Сообщение от trace Посмотреть сообщение
бывают случаи
ну дык и решайте эти отдельные случаи. зачем шашкой то махать?
__________________
полезное на axForum, github, vk, coub.
Старый 06.11.2007, 14:14   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от trace Посмотреть сообщение
Планировалось убивать именно предыдущую сессию, потому что бывают случаи, когда аксапта просто зависает, а сессия тем не менее не обрывется. При запуске второй сессии пользователю будет выводиться сообщение, и он сможет либо закрыть предыдущую сессию, либо текущую.
Очень часто при зависании сессии ни сам пользоватиль, ни Axapta не смогут ее отключить. Помогает только внешнее отрубание процесса. В худшем случае, перезагрузка AOS. Т.е. программное отключение в критических ситуациях - не работает, хотя и ошибок не вызывает.

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

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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с единицей измерения 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

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

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

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