Пример #1
0
        public WfClientUISwitches FillByProcess(IWfProcess process, string originalActivityID, IUser user)
        {
            if (process != null)
            {
                this.CanMoveTo = process.GetInMoveToMode(originalActivityID, user) ||
                                 (process.GetInMoveToStatus(originalActivityID) && process.GetIsProcessAdmin(user));

                this.CanSave = (process.GetInMoveToMode(originalActivityID, user) && process.CurrentActivity.Descriptor.Properties.GetValue("AllowSave", true)) ||
                               (process.GetInMoveToStatus(originalActivityID) && process.GetIsProcessAdmin(user));

                this.CanPause = process.CanPause && process.GetIsProcessAdmin(user);

                this.CanResume = process.CanResume && process.GetIsProcessAdmin(user);

                this.CanRestore = process.CanRestore && (process.GetInAssignees(originalActivityID, user) || process.GetIsProcessAdmin(user));

                this.CanWithdraw = process.CanWithdraw(user);
                this.CanCancel   = process.CanCancel(originalActivityID, user);
            }

            return(this);
        }
Пример #2
0
        public static bool CanCancel(this IWfProcess process, string originalActivityID, IUser user)
        {
            bool result = false;

            if (process != null && user != null)
            {
                result = process.CanCancel;

                if (result)
                {
                    //当前环节允许的话,要看是否是待办人或者流程已经办结
                    result = ((process.GetInMoveToMode(originalActivityID, user) || process.Status == WfProcessStatus.Completed) &&
                              process.CurrentActivity.Descriptor.Properties.GetValue("AllowAbortProcess", true));

                    if (result == false)
                    {
                        result = process.GetIsProcessAdmin(user);
                    }
                }
            }

            return(result);
        }