/// <summary>
        /// 是否当前流程实例活动的潜在代理者
        /// </summary>
        /// <param name="wii"></param>
        /// <returns></returns>
        public bool IsEffectiveByProxyUser()
        {
            var           wfps = this.GetContext().Store.GetProxyWorkflows(this.GetWorkflow().Guid);
            IUserComparer _uc  = new IUserComparer();

            if (wfps == null)
            {
                return(false);
            }

            return(wfps.Any((wfp) =>
            {
                return wfp.BeginTime <= DateTime.Now && wfp.EndTime >= DateTime.Now && wfp.State == true &&
                _uc.Equals(wfp.Owner, this.User) && _uc.Equals(wfp.ProxyUser, this.GetContext().CurUser);
            }));
        }
        /// <summary>
        /// 当前用户是否可以访问该流程实例活动
        /// </summary>
        /// <param name="wii"></param>
        /// <returns></returns>
        bool IsEffective(WorkitemInstance wii)
        {
            ///是否大管理员
            if (this.Context.CurUser.IsAdministrator())
            {
                return(true);
            }

            ///是否流程模型管理员
            if (wii.GetWorkflowInstance().GetWorkflow().IsAdministrators(this.Context.CurUser))
            {
                return(true);
            }

            ///是否当前流程实例活动的操作者
            if (wii.GetWorkflowInstance().GetWorkflow().IsLegalAuthor(this.Context.CurUser))
            {
                return(true);
            }

            ///是否当前流程实例活动的代理操作者
            if (wii.IsProxy && _uc.Equals(wii.ProxyUser, this.Context.CurUser))
            {
                return(true);
            }

            ///是否当前流程实例活动的潜在代理操作者
            return(wii.IsEffectiveByProxyUser());
        }
        /// <summary>
        /// 是否当前流程实例活动的潜在代理者
        /// </summary>
        /// <param name="wii"></param>
        /// <returns></returns>
        public bool IsEffectiveByProxyUser()
        {
            var wfps = this.GetContext().Store.GetProxyWorkflows(this.GetWorkflow().Guid);
            IUserComparer _uc = new IUserComparer();

            if (wfps == null)
            {
                return false;
            }

            return wfps.Any((wfp) =>
            {
                return wfp.BeginTime <= DateTime.Now && wfp.EndTime >= DateTime.Now && wfp.State == true
                    && _uc.Equals(wfp.Owner, this.User) && _uc.Equals(wfp.ProxyUser, this.GetContext().CurUser);
            });
        }