01.11.2007, 17:22 | #1 |
Участник
|
Проблема с 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 |
Участник
|
Цитата:
|
|
06.11.2007, 09:57 | #3 |
Участник
|
Цитата:
Сообщение от gl00mie
По крайней мере, для 3-ки был такой вариант, как ограничить количество входов пользователя.
|
|
06.11.2007, 10:56 | #4 |
Участник
|
Цитата:
Более того, надо быть очень аккуратным при таком подходе, ведь пользователи могут быть и служебные - какие-нить proxy-пользователи для бизнес-коннектора. В результате при таком поведении системы любой функционал, их использующий, будет постоянно прибиваться при запуске второй сессии. Я точно не скажу, но вроде Enterprise Portal требует (требовал в 3-ке) двух COM-лицензий и, соотв., двух одновременно работающих сессий COM-коннектора. Подумайте об этом. Последний раз редактировалось gl00mie; 06.11.2007 в 11:01. |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
06.11.2007, 11:10 | #5 |
Участник
|
Цитата:
Сообщение от gl00mie
Мне кажется, это очень неудачная идея; если ее вам подсказали аналитики или, того хуже, сами пользователи - подумайте дважды... Пользователь может запустить какую-нить длительную операцию (создание отчета, разноску журнала, еще что-то) - не в пакетном задании, а непосредственно в своей сессии и, "покурив" минуту-другую, попытаться запустить второй экземпляр клиента. В результате предыдущий клиент по вашей логике прибьется, и запущенная операция прервется с откатом транзакции, если таковая будет начата в ходе обработки. Хорошо, если это будет длительное создание отчета, а если какая-нить разноска? Вы уверены, что пользователи хотят именно этого и будут адекватно воспринимать подобное поведение системы при запуске второго клиента?
Более того, надо быть очень аккуратным при таком подходе, ведь пользователи могут быть и служебные - какие-нить proxy-пользователи для бизнес-коннектора. В результате при таком поведении системы любой функционал, их использующий, будет постоянно прибиваться при запуске второй сессии. Я точно не скажу, но вроде Enterprise Portal требует (требовал в 3-ке) двух COM-лицензий и, соотв., двух одновременно работающих сессий COM-коннектора. Подумайте об этом. |
|
06.11.2007, 12:12 | #6 |
Участник
|
очень грамотное замечание. ап-солютно согласен.
ну дык и решайте эти отдельные случаи. зачем шашкой то махать? |
|
06.11.2007, 14:14 | #7 |
Участник
|
Цитата:
Это значит, что, в общем случае, единственное что можно сделать - это сообщить пользователю, что у него уже есть открытые сессии. И на этом все. Отслеживать такие "подвисшие" сессии должен администратор, поскольку сам пользователь часто просто не имеет физической возможности как-то снять "подвисшую" сессию. |
|