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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.08.2014, 15:29   #13  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 112 (4) +++++
Регистрация: 06.03.2012
Цитата:
Сообщение от Dolores Посмотреть сообщение
А как лучше проводить мониторинг активности пользователей, чтобы определить делает ли пользователь что-то в программе или просто сеанс открыл ? По какой таблице? К журналу базы данных нельзя привязаться, т.к. не все действия пользователей журнализируются...
На случай если пользователь ничего не делает - есть timeout сессии, тут придумывать не нужно.

В AX 2012 следующие методы реализуют подсчет числа активных сессий:
Info::licensedUsers(),
Info::licensedComUsers(),
так же в Info::licensedUsersTotal() идет подсчет.
Есть замечательный класс SysUserOnline:
X++:
server static container getAllOnlineUserInfo()
{
    int num;
    int idleTicks;
    container users;
    xSession session;
    UserInfo userInfo;
    AOSClientMode clientMode;
    SysClientSessions clientSessions;
    ;

    num = 0;

    // SessionId field is not recognized
    // BP deviation documented
    while select clientSessions where
    //clientSessions.Status == SessionState::Running || clientSessions.Status == SessionState::Killed
    clientSessions.Status == SessionStatus::Running
    || clientSessions.Status == SessionStatus::Killed
    || clientSessions.Status == SessionStatus::MarkedAsKill
    {
        session = new xSession(clientSessions.SessionId);
        if(clientSessions.UserId)
        {
            select firstonly userInfo
                where userInfo.Id == clientSessions.UserId;

            if (userInfo) //If no SYS_OPEN_DOMAIN access they should not be shown
            {
                num++;
                clientMode = AOSClientMode::Thin;
                idleTicks = 0;

                users += [[clientSessions.SessionId,
                           clientSessions.UserId,
                           clientSessions.ClientType,
                           DateTimeUtil::applyTimeZoneOffset(clientSessions.LoginDateTime, DateTimeUtil::getUserPreferredTimeZone()),
                           clientSessions.ClientComputer,
                           session.databaseSpid(),
                           userInfo.Name,
                           clientMode,
                           idleTicks
                           ]];
            }
        }
    }
    users = [users,num];
    return users;
}
Ограничить количество входов одного пользователя. В классе Info:
X++:
void startupPost()
{
    int         counter;
    int         num = 0;
    int         maxSessions = Info::licensedUsersTotal();
    xSession    session;
    UserInfo    userInfo;
    UserId      currentUserId;
    ;

    currentUserId = curuserid();
    for(counter = 1; counter < maxSessions;counter++ )
    {
        session = new xSession(counter, true);
        if(session && session.userId())
        {
            select firstOnly userInfo
                where userInfo.id == session.userId();

            if (userInfo && (currentUserId == session.userId()))
            {  
                num++ ;
            }
        }
    }

    if (num > 1)
    {
        if(ox::yesno("Вы пытаетесь посторно войти пот тем же именем пользователя, а это не разрешается. Все равно войти?",
                   DialogButton::Yes, "Войти", "Выйти") == DialogButton::No)
        {
            infolog.shutDown(true);
        }
    }
}

Последний раз редактировалось iCloud; 19.08.2014 в 15:33.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проверка количества товара с помощью методов в InventSum MaxHammer DAX: Программирование 9 28.02.2013 12:37
Проверка ВР не заглядывает внутрь расширенных типов-массивов glibs DAX: Программирование 0 26.01.2010 20:16
Проверка целостности coja DAX: Администрирование 6 06.09.2006 13:14
Проверка количества в заказе PMS DAX: Программирование 2 01.11.2005 09:58
Проверка количества компаний в 3.0 CIS SP3 Valery DAX: Администрирование 16 20.04.2005 17:29

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

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

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