Example #1
0
 /// <summary>
 /// 输出用户操作日志
 /// </summary>
 /// <param name="LogType">日志的类型</param>
 public void WriteLog(OThinker.H3.Tracking.UserLogType LogType)
 {
     OThinker.H3.Tracking.UserLog log = new OThinker.H3.Tracking.UserLog(
         LogType,
         this.User.UserID,
         this.SchemaCode,
         this.BizObjectID,
         this.InstanceId,
         this.WorkItemID,
         this.WorkItem == null ? null : this.WorkItem.DisplayName,
         null,
         SheetUtility.GetClientIP(this.Request),
         SheetUtility.GetClientPlatform(this.Request),
         SheetUtility.GetClientBrowser(this.Request));
     this.Engine.UserLogWriter.Write(log);
 }
        /// <summary>
        /// 增加当前在线用户数
        /// </summary>
        /// <param name="User"></param>
        /// <param name="Request"></param>
        /// <param name="PortalType"></param>
        public static void OnUserLogin(UserValidator User,
                                       HttpRequest Request,
                                       Site.PortalType PortalType = Site.PortalType.Portal)
        {
            lock (_OnlineUserIdAliasTable)
            {
                OThinker.H3.Tracking.UserLog log = new Tracking.UserLog(
                    Tracking.UserLogType.Login,
                    User.UserID,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    SheetUtility.GetClientIP(Request),
                    SheetUtility.GetClientPlatform(Request),
                    SheetUtility.GetClientBrowser(Request));

                if (_OnlineUserIdAliasTable.ContainsKey(User.UserID.ToLower()))
                {
                    //_OnlineUserIdAliasTable.Remove(User.UserID);
                    //_OnlineUserIdLoginTimeTable.Remove(User.UserID);
                    return;
                }
                _OnlineUserIdAliasTable.Add(User.UserID, User.UserCode);
                _OnlineUserIdLoginTimeTable.Add(User.UserID, DateTime.Now);

                log.UserCode = User.UserCode;
                log.SiteType = PortalType;

                if (OThinker.H3.Controllers.AppConfig.ConnectionMode == OThinker.H3.ConnectionStringParser.ConnectionMode.Mono)
                {
                    // 私有云模式批量写入
                    if (!_UserLogTable.ContainsKey(User.UserID.ToLower()))
                    {
                        _UserLogTable.Add(User.UserID.ToLower(), log);
                    }
                }
                else
                {
                    // 公有云模式登录即写入
                    User.Engine.UserLogWriter.Write(log);
                }
            }
        }
        /// <summary>
        /// 用户登出事件
        /// </summary>
        /// <param name="User"></param>
        /// <param name="Request"></param>
        public static void OnUserLogout(UserValidator User, HttpRequest Request)
        {
            if (User == null)
            {
                return;
            }

            // 减少当前用户数
            //lock (_UserLogTable)
            lock (_OnlineUserIdAliasTable)
            {
                //if (!_UserLogTable.ContainsKey(User.UserID.ToLower()))
                //{
                //    return;
                //}
                if (!_OnlineUserIdAliasTable.ContainsKey(User.UserID.ToLower()))
                {
                    return;
                }
                _OnlineUserIdAliasTable.Remove(User.UserID);
                _OnlineUserIdLoginTimeTable.Remove(User.UserID);

                OThinker.H3.Tracking.UserLog log = new Tracking.UserLog(
                    Tracking.UserLogType.Logout,
                    User.UserID,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    SheetUtility.GetClientIP(Request),
                    SheetUtility.GetClientPlatform(Request),
                    SheetUtility.GetClientBrowser(Request));
                if (!_UserLogTable.ContainsKey(User.UserID.ToLower()))
                {
                    _UserLogTable.Add(User.UserID.ToLower(), log);
                }
            }
        }
Example #4
0
        /// <summary>
        /// 从服务器读取数据
        /// </summary>
        private void GetDataFromServer()
        {
            if (!_GetDataFromServer)
            {
                _GetDataFromServer = true;
                string strWorkItemId   = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_WorkItemID]);
                string strInstanceId   = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_InstanceId]);
                string strWorkflowCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_WorkflowCode]);
                string strSchemaCode   = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_SchemaCode]);
                int    workflowVersion = WorkflowTemplate.PublishedWorkflowTemplate.NullWorkflowVersion;
                int.TryParse(this.Request.QueryString[Param_WorkflowVersion], out workflowVersion);
                string strSheetCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[OThinker.H3.Controllers.SheetEnviroment.Param_SheetCode] + string.Empty);

                if (!string.IsNullOrEmpty(strWorkItemId) ||
                    !string.IsNullOrEmpty(strInstanceId) ||
                    (this.IsOriginateMode && !string.IsNullOrEmpty(strWorkflowCode)))
                {
                    // 流程模式
                    this._SheetDataType = SheetDataType.Workflow;
                }
                else if (!string.IsNullOrEmpty(strSchemaCode))
                {
                    // 开发平台模式
                    this._SheetDataType = SheetDataType.BizObject;
                }

                if (this.SheetDataType == SheetDataType.Workflow)
                {
                    this.Engine.Interactor.GetDataForWorkflow(
                        (InteractiveType)this.SheetMode,
                        strWorkflowCode,
                        workflowVersion,
                        strInstanceId,
                        strWorkItemId,
                        strSheetCode,
                        this.User.UserID,
                        SheetUtility.GetClientIP(this.Request),
                        SheetUtility.GetClientPlatform(this.Request),
                        SheetUtility.GetClientBrowser(this.Request),
                        out this._Authorized,
                        out this._InstanceContext,
                        out this._WorkItem,
                        out this._CirculateItem,
                        out this._Workflow,
                        out this._Schema,
                        out this._ActivityCode,
                        out this._Sheet,
                        out this._PostUnits,
                        out this._SheetDisplayName,
                        out this._LockValidation,
                        out this._Message);
                }
                else
                {
                    this.Engine.Interactor.GetDataForBizObject(
                        strSchemaCode,
                        strSheetCode,
                        out this._Schema,
                        out this._Sheet);
                }
            }
        }