Beispiel #1
0
        /// <summary>
        /// 把当前环节的信息填充到意见当中
        /// </summary>
        /// <param name="opinion"></param>
        /// <param name="originalActivity"></param>
        /// <param name="user"></param>
        /// <param name="delegatedUser"></param>
        public void FillOpinionInfoByProcessByActivity(WfClientOpinion opinion, IWfActivity originalActivity, WfClientUser user, WfClientUser delegatedUser)
        {
            if (opinion != null && originalActivity != null)
            {
                if (opinion.ID.IsNullOrEmpty())
                {
                    opinion.ID = UuidHelper.NewUuidString();
                }

                opinion.ResourceID = originalActivity.Process.ResourceID;
                opinion.ProcessID  = originalActivity.Process.ID;
                opinion.ActivityID = originalActivity.ID;

                IWfActivity rootActivity = originalActivity.OpinionRootActivity;

                if (rootActivity.Process.MainStream != null && rootActivity.MainStreamActivityKey.IsNotEmpty())
                {
                    opinion.LevelName = rootActivity.MainStreamActivityKey;
                }
                else
                {
                    if (string.IsNullOrEmpty(rootActivity.Descriptor.AssociatedActivityKey))
                    {
                        opinion.LevelName = rootActivity.Descriptor.Key;
                    }
                    else
                    {
                        opinion.LevelName = rootActivity.Descriptor.AssociatedActivityKey;
                    }
                }

                if (rootActivity.Process.MainStream != null)
                {
                    opinion.LevelDesp = rootActivity.Process.MainStream.Activities[opinion.LevelName].Name;
                }
                else
                {
                    opinion.LevelDesp = rootActivity.Descriptor.Process.Activities[opinion.LevelName].Name;
                }

                if (user != null)
                {
                    opinion.IssuePersonID   = user.ID;
                    opinion.IssuePersonName = user.DisplayName;

                    if (originalActivity != null)
                    {
                        IUser delegator = originalActivity.Assignees.FindDelegator((IUser)user.ToOguObject());

                        opinion.IssuePersonID   = delegator.ID;
                        opinion.IssuePersonName = delegator.DisplayName;
                    }

                    if (delegatedUser == null)
                    {
                        delegatedUser = user;
                    }

                    opinion.AppendPersonID   = delegatedUser.ID;
                    opinion.AppendPersonName = delegatedUser.DisplayName;
                }
            }
        }
        public List <WfClientProcess> GetProcessesByResourceID(string resourceID, WfClientUser user, WfClientProcessInfoFilter filter)
        {
            resourceID.CheckStringIsNullOrEmpty("resourceID");

            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessCollection processes = WfRuntime.GetProcessByResourceID(resourceID).SortByUserRelativity((IUser)user.ToOguObject());

            WfClientProcessConverter converter = new WfClientProcessConverter(filter);

            List <WfClientProcess> result = new List <WfClientProcess>();

            foreach (IWfProcess process in processes)
            {
                WfClientProcess client = null;

                converter.ServerToClient(process, ref client);

                client.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, process.CurrentActivity, user);

                if ((filter & WfClientProcessInfoFilter.CurrentOpinion) == WfClientProcessInfoFilter.CurrentOpinion)
                {
                    client.FillCurrentOpinion(process.CurrentActivity, user);
                }

                result.Add(client);
            }

            return(result);
        }
        public List <WfClientProcessInfo> GetProcessesInfoByResourceID(string resourceID, WfClientUser user)
        {
            resourceID.CheckStringIsNullOrEmpty("resourceID");

            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessCollection processes = WfRuntime.GetProcessByResourceID(resourceID).SortByUserRelativity((IUser)user.ToOguObject());

            List <WfClientProcessInfo> result = new List <WfClientProcessInfo>();

            processes.ForEach(process => result.Add(process.ToClientProcessInfo(user).FillCurrentOpinion(process.CurrentActivity, user)));

            return(result);
        }
        public WfClientProcessInfo ReplaceAssignees(string activityID, WfClientUser originalUser, List <WfClientUser> targetUsers, WfClientRuntimeContext runtimeContext)
        {
            OperationContext.Current.FillContextToOguServiceContext();

            IWfProcess  process        = WfRuntime.GetProcessByActivityID(activityID);
            IWfActivity targetActivity = process.Activities[activityID];

            ExecuteExecutor(process, runtimeContext,
                            (p) => new WfReplaceAssigneesExecutor(targetActivity, targetActivity, (IUser)originalUser.ToOguObject(), targetUsers.ToOguObjects <WfClientUser, IUser>()));

            return(process.ToClientProcessInfo(runtimeContext.Operator).FillCurrentOpinion(process.CurrentActivity, runtimeContext.Operator));
        }