Esempio n. 1
0
        private static void FillStatusAndAssignees(WfClientMainStreamActivityDescriptor client, IWfMainStreamActivityDescriptor server)
        {
            IWfActivity actInstance = server.Activity.ProcessInstance.Activities.
                                      FindActivityByDescriptorKey(server.Activity.Key);

            if (actInstance != null)
            {
                client.Status                   = actInstance.Status.ToClientActivityStatus();
                client.Elapsed                  = server.Elapsed;
                client.ActivityInstanceID       = actInstance.ID;
                client.Operator                 = (WfClientUser)actInstance.Operator.ToClientOguObject();
                client.BranchProcessGroupsCount = actInstance.BranchProcessGroups.Count;

                client.FromTransitionDescriptor = ConvertServerTransitionToClient(actInstance.FromTransitionDescriptor);
                client.ToTransitionDescriptor   = ConvertServerTransitionToClient(actInstance.ToTransitionDescriptor);

                if (actInstance.Assignees.Count != 0)
                {
                    WfClientAssigneeCollectionConverter.Instance.ServerToClient(actInstance.Assignees, client.Assignees);
                }
                else
                {
                    WfAssigneeCollection candidates = actInstance.Candidates.GetSelectedAssignees();

                    WfClientAssigneeCollectionConverter.Instance.ServerToClient(candidates, client.Assignees);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 当前用户是否在Assignee中,同时也会检查Url
        /// </summary>
        /// <returns></returns>
        private bool IsUserInAssignees(WfAssigneeCollection currentActivityAssignees)
        {
            bool result = false;

            IList <WfAssignee> assignees = currentActivityAssignees.FindAll(a => string.Compare(a.User.ID, this.User.ID, true) == 0);

            if (assignees.Count > 0)
            {
                int urlEmptyCount = 0;

                foreach (WfAssignee assignee in assignees)
                {
                    if (assignee.Url.IsNullOrEmpty())
                    {
                        urlEmptyCount++;
                    }
                    else
                    if (AssigneeUriIsSameAsEntryUri(new Uri(assignee.Url, UriKind.RelativeOrAbsolute)))
                    {
                        result = true;
                        break;
                    }
                }

                //如果所有assignees的url都是空,则不比较url了。
                if (result == false && urlEmptyCount == assignees.Count)
                {
                    result = true;
                }
            }

            return(result);
        }
		public WfControlNextStep(IWfActivity toActivity)
		{
			toActivity.NullCheck("toActivity");

			this.ActivityDescriptor = toActivity.Descriptor;
			this._Candidates = toActivity.Candidates.GetSelectedAssignees();
		}
Esempio n. 4
0
        private Control GetCandidatesOrAssigneesControl(WfAssigneeCollection assignees, string defaultValue)
        {
            HtmlGenericControl userNames = new HtmlGenericControl("span");
            string             splitter  = ",";

            if (this.EnableUserPresence)
            {
                splitter = "&nbsp";
            }

            if (assignees != null && assignees.Count > 0)
            {
                for (int i = 0; i < assignees.Count; i++)
                {
                    if (i > 0)
                    {
                        userNames.Controls.Add(new LiteralControl(splitter));
                    }

                    userNames.Controls.Add(GetUserNameControl(assignees[i].User));
                }
            }
            else
            {
                userNames.Controls.Add(new LiteralControl(HttpUtility.HtmlEncode(defaultValue)));
            }

            return(userNames);
        }
		protected override WfExecutorBase CreateExecutor()
		{
			WfAssigneeCollection wfac = new WfAssigneeCollection();
			wfac.Add(this.selectedUsers);

			return new WfAddApproverExecutor(WfClientContext.Current.OriginalCurrentActivity, WfClientContext.Current.OriginalCurrentActivity, wfac) { AddApproverMode = this.AddApproverMode };
		}
Esempio n. 6
0
        private static bool IsUserInAssignees(string userID, WfAssigneeCollection currentActivityAssignees)
        {
            return(currentActivityAssignees.Exists(a => string.Compare(a.User.ID, userID, true) == 0));
            //bool result = false;

            //IList<WfAssignee> assignees = currentActivityAssignees.FindAll(a => a.User.ID == userID);

            //if (assignees.Count > 0)
            //{
            //    int urlEmptyCount = 0;

            //    foreach (WfAssignee assignee in assignees)
            //    {
            //        if (assignee.Url.IsNullOrEmpty())
            //        {
            //            urlEmptyCount++;
            //        }
            //        else
            //        {
            //            if (AssigneeUriIsSameAsEntryUri(new Uri(assignee.Url, UriKind.RelativeOrAbsolute)))
            //            {
            //                result = true;
            //                break;
            //            }
            //        }
            //    }

            //    //如果所有assignees的url都是空,则不比较url了。
            //    if (result == false && urlEmptyCount == assignees.Count)
            //        result = true;
            //}

            //return result;
        }
		public WfAddApproverExecutor(IWfActivity operatorActivity, IWfActivity targetActivity, WfAssigneeCollection assignees)
			: base(operatorActivity, targetActivity, WfControlOperationType.AddApprover)
		{
			assignees.NullCheck("assingees");

			this.Assignees.CopyFrom(assignees);
		}
Esempio n. 8
0
        private Control GetActivityPeopleNameDisplayControl(IWfActivity wfActivity, IWfMainStreamActivityDescriptor mainStreamActivity)
        {
            Control userNames = null;

            if (wfActivity.Operator != null && wfActivity.Status != WfActivityStatus.NotRunning)
            {
                userNames = GetUserNameControl(wfActivity.Operator);
            }
            else
            if (wfActivity.Assignees.Count != 0)
            {
                userNames = GetCandidatesOrAssigneesControl(wfActivity.Assignees, mainStreamActivity.Activity.Name);
            }
            else
            {
                WfAssigneeCollection candidates = wfActivity.Candidates.GetSelectedAssignees();

                if (candidates.Count != 0)
                {
                    userNames = GetCandidatesOrAssigneesControl(candidates, mainStreamActivity.Activity.Name);
                }
                else
                {
                    userNames = new HtmlGenericControl("span")
                    {
                        InnerText = string.Empty
                    }
                };
            }

            return(userNames);
        }
        public string GetActivityRelatedUsers(string activityID)
        {
            var activityInstance = WfClientContext.Current.CurrentActivity.Process.Activities[activityID];

            if (activityInstance == null)
            {
                return(string.Empty);
            }

            if (activityInstance.Assignees.Count > 0)
            {
                WfConverterHelper.RegisterConverters();

                var userList = activityInstance.Assignees.ToUsers();
                return(JSONSerializerExecute.Serialize(userList));
            }

            WfAssigneeCollection candidates = activityInstance.Candidates.GetSelectedAssignees();

            if (candidates.Count > 0)
            {
                WfConverterHelper.RegisterConverters();

                IEnumerable <IUser> userList = candidates.ToUsers();
                return(JSONSerializerExecute.Serialize(userList));
            }

            return(string.Empty);
        }
		private static void SyncActivityAssigneesUrl(UserTask task, WfAssigneeCollection assignees)
		{
			foreach (WfAssignee assignee in assignees)
			{
				if (assignee.User != null && string.Compare(assignee.User.ID, task.SendToUserID, true) == 0)
					assignee.Url = task.Url;
			}
		}
Esempio n. 11
0
		public WfControlNextStep(IWfTransitionDescriptor transition, IWfActivity toActivity)
		{
			transition.NullCheck("transition");
			toActivity.NullCheck("toActivity");

			this.ActivityDescriptor = toActivity.Descriptor;
			this._Candidates = toActivity.Candidates.GetSelectedAssignees();;
			this.TransitionDescriptor = transition;
		}
Esempio n. 12
0
        public static void AreSame(this WfClientAssigneeCollection expected, WfAssigneeCollection actual)
        {
            Assert.AreEqual(expected.Count, actual.Count);

            for (int i = 0; i < expected.Count; i++)
            {
                expected[i].AreSame(actual[i]);
            }
        }
Esempio n. 13
0
        private int Find(WfAssigneeCollection wfAssigneeCollection, string id)
        {
            int i = 0;

            foreach (var assignee in wfAssigneeCollection)
            {
                if (string.Compare(assignee.User.ID, id) == 0)
                {
                    i++;
                }
            }
            return(i);
        }
Esempio n. 14
0
        private static void ConsignExecutorWithCondition(IWfProcess process, out List <IUser> users)
        {
            WfAssigneeCollection assignees = new WfAssigneeCollection();

            assignees.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object);

            users = new List <IUser>();
            users.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.requestor.ToString()].Object);
            users.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver2.ToString()].Object);

            WfConsignExecutor exec = new WfConsignExecutor(process.CurrentActivity, process.CurrentActivity, assignees, users, new List <IUser>(), WfBranchProcessBlockingType.WaitAllBranchProcessesComplete, WfBranchProcessExecuteSequence.Parallel);

            exec.Execute();
        }
Esempio n. 15
0
        public WfExecutorBase CreateExecutor()
        {
            WfExecutorBase executor = null;

            switch (this.OperationType)
            {
            case WfControlOperationType.MoveTo:
                executor = new WfMoveToExecutor(
                    WfClientContext.Current.OriginalActivity,
                    WfClientContext.Current.OriginalActivity, ToTransferParams(),
                    WfClientContext.Current.Locks);
                break;

            case WfControlOperationType.Consign:
            {
                WfAssigneeCollection assignees = new WfAssigneeCollection();

                WfAssignee assignee = new WfAssignee(WfClientContext.Current.User);

                assignees.Add(assignee);

                executor = new WfConsignExecutor(
                    WfClientContext.Current.OriginalActivity,
                    WfClientContext.Current.OriginalActivity,
                    assignees,
                    this.Assignees.ToUsers(),
                    this.Circulators.ToUsers(),
                    BlockingType,
                    SequenceType);
            }
            break;

            case WfControlOperationType.Return:
                if (this._RejectMode == WfRejectMode.LikeAddApprover)
                {
                    executor = new WfAddApproverExecutor(WfClientContext.Current.CurrentActivity, WfClientContext.Current.CurrentActivity.Process.Activities.FindActivityByDescriptorKey(TargetActivityDescriptor.Key));
                }
                else
                {
                    executor = new WfReturnExecutor(WfClientContext.Current.CurrentActivity, WfClientContext.Current.CurrentActivity.Process.Activities.FindActivityByDescriptorKey(TargetActivityDescriptor.Key));
                }
                break;

            default:
                throw new WfRuntimeException(Translator.Translate(Define.DefaultCulture, "不能处理操作类型为{0}", this.OperationType));
            }

            return(executor);
        }
Esempio n. 16
0
        public void AddApproverExecutorTest()
        {
            //Initial  NormalActivity  NormalActivity1 NormalActivity2 NormalActivity3 Completed
            IUser user = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object;

            IWfProcessDescriptor     procDesp = WfProcessTestCommon.CreateProcessDescriptor();
            WfUserResourceDescriptor userDesp = new WfUserResourceDescriptor(user);

            procDesp.InitialActivity.Resources.Add(userDesp);

            WfProcessStartupParams  startParams = WfProcessTestCommon.GetInstanceOfWfProcessStartupParams(procDesp);
            WfStartWorkflowExecutor exec        = new WfStartWorkflowExecutor(null, startParams);
            IWfProcess proc = exec.Execute();             //启动流程

            IWfProcess wfp = WfRuntime.GetProcessByProcessID(proc.ID);

            MoveToExecutor(wfp);            //流转一步 ,即第2个节点

            IWfProcess           p         = WfRuntime.GetProcessByProcessID(proc.ID);
            WfAssigneeCollection assignees = new WfAssigneeCollection();

            assignees.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object);

            WfAddApproverExecutor addExec = new WfAddApproverExecutor(p.CurrentActivity, p.CurrentActivity, assignees);

            addExec.Execute();             //加签,即流转到加签点上

            IWfProcess process = WfRuntime.GetProcessByProcessID(p.ID);

            Assert.AreEqual(process.Descriptor.GetMainStreamActivities().Count, process.Activities.Count - 2, "动态添加两个活动,因被加签人要回到加签人");
            Assert.AreEqual(2, process.ElapsedActivities.Count);
            Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban));
            Assert.IsTrue(process.CurrentActivity.Descriptor.ToTransitions.Count == 1);
            Assert.IsNotNull(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity);

            IWfProcess wfProcess9 = WfRuntime.GetProcessByProcessID(process.ID);

            WfWithdrawExecutor withdrawExec = new WfWithdrawExecutor(wfProcess9.CurrentActivity, wfProcess9.CurrentActivity);

            withdrawExec.Execute();

            IWfProcess wfProcess1 = WfRuntime.GetProcessByProcessID(wfProcess9.ID);

            Assert.AreEqual(wfProcess1.Activities.Count, wfProcess1.Descriptor.GetMainStreamActivities().Count, "此处应该撤回到加签的活动点上,同时被加签的两个点都应该移除");
            Assert.AreEqual(1, wfProcess1.ElapsedActivities.Count);
            Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(wfProcess1.CurrentActivity.ID, TaskStatus.Ban));
            Assert.IsTrue(wfProcess1.CurrentActivity.Descriptor.ToTransitions.Count == 1);
        }
        public void ClientToServer(WfClientAssigneeCollection client, WfAssigneeCollection server)
        {
            client.NullCheck("client");
            server.NullCheck("server");

            server.Clear();

            foreach (WfClientAssignee c in client)
            {
                WfAssignee s = null;

                WfClientAssigneeConverter.Instance.ClientToServer(c, ref s);

                server.Add(s);
            }
        }
        public void ServerToClient(WfAssigneeCollection server, WfClientAssigneeCollection client)
        {
            server.NullCheck("server");
            client.NullCheck("client");

            client.Clear();

            foreach (WfAssignee s in server)
            {
                WfClientAssignee c = null;

                WfClientAssigneeConverter.Instance.ServerToClient(s, ref c);

                client.Add(c);
            }
        }
        public void ServerToClient(WfAssigneeCollection server, WfClientAssigneeCollection client)
        {
            server.NullCheck("server");
            client.NullCheck("client");

            client.Clear();

            foreach (WfAssignee s in server)
            {
                WfClientAssignee c = null;

                WfClientAssigneeConverter.Instance.ServerToClient(s, ref c);

                client.Add(c);
            }
        }
        public void ClientToServer(WfClientAssigneeCollection client, WfAssigneeCollection server)
        {
            client.NullCheck("client");
            server.NullCheck("server");

            server.Clear();

            foreach (WfClientAssignee c in client)
            {
                WfAssignee s = null;

                WfClientAssigneeConverter.Instance.ClientToServer(c, ref s);

                server.Add(s);
            }
        }
Esempio n. 21
0
        private static string GetAssigneesName(WfAssigneeCollection assignees)
        {
            StringBuilder strB = new StringBuilder();

            foreach (WfAssignee assignee in assignees)
            {
                if (strB.Length > 0)
                {
                    strB.Append(",");
                }

                strB.Append(assignee.User.DisplayName);
            }

            return(strB.ToString());
        }
Esempio n. 22
0
        private string GetCandidatesOrAssigneesText(WfAssigneeCollection assignees, string defaultValue)
        {
            StringBuilder strB = new StringBuilder();

            if (assignees != null && assignees.Count > 0)
            {
                for (int i = 0; i < assignees.Count; i++)
                {
                    strB.Append(assignees[i].User.DisplayName + (i < assignees.Count - 1 ? "," : ""));
                }
            }
            else
            {
                strB.Append(defaultValue);
            }

            return(strB.ToString());
        }
Esempio n. 23
0
		public WfConsignExecutor(IWfActivity operatorActivity,
								IWfActivity targetActivity,
								WfAssigneeCollection assignees,
								IEnumerable<IUser> consignUsers,
								IEnumerable<IUser> circulateUsers,
								WfBranchProcessBlockingType blockingType,
								WfBranchProcessExecuteSequence sequence)
			: base(operatorActivity, targetActivity, WfControlOperationType.Consign)
		{
			assignees.NullCheck("assignees");
			consignUsers.NullCheck("users");

			(consignUsers.Count() > 0).FalseThrow<WfRuntimeException>("参与会签的用户数必须大于零");

			this.Assignees.CopyFrom(assignees);
			this.ConsignUsers = consignUsers;
			this.CirculateUsers = circulateUsers;
			this.BlockingType = blockingType;
			this.Sequence = sequence;
		}
Esempio n. 24
0
        public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            WfMoveToSelectedResult result = new WfMoveToSelectedResult();

            result.OperationType = DictionaryHelper.GetValue(dictionary, "OperationType", WfControlOperationType.MoveTo);
            result.BlockingType  = DictionaryHelper.GetValue(dictionary, "BlockingType", WfBranchProcessBlockingType.WaitAllBranchProcessesComplete);
            result.SequenceType  = DictionaryHelper.GetValue(dictionary, "SequenceType", WfBranchProcessExecuteSequence.Parallel);
            result.RejectMode    = DictionaryHelper.GetValue(dictionary, "RejectMode", WfRejectMode.SelectRejectStep);

            result.TargetActivityDescriptor = JSONSerializerExecute.Deserialize <IWfActivityDescriptor>(dictionary["TargetActivityDescriptor"]);
            result.FromTransitionDescriptor = JSONSerializerExecute.Deserialize <IWfTransitionDescriptor>(dictionary["FromTransitionDescriptor"]);
            result.BranchTemplate           = JSONSerializerExecute.Deserialize <IWfBranchProcessTemplateDescriptor>(dictionary["BranchTemplate"]);

            WfAssigneeCollection assignees = JSONSerializerExecute.Deserialize <WfAssigneeCollection>(dictionary["Assignees"]);

            result.Assignees.CopyFrom(assignees);

            WfAssigneeCollection circulators = JSONSerializerExecute.Deserialize <WfAssigneeCollection>(dictionary["Circulators"]);

            result.Circulators.CopyFrom(circulators);

            return(result);
        }
Esempio n. 25
0
        private string GetActivityPeopleNameDisplayText(IWfActivity wfActivity, IWfMainStreamActivityDescriptor mainStreamActivity)
        {
            string result = string.Empty;

            if (wfActivity.Operator != null && wfActivity.Status != WfActivityStatus.NotRunning)
            {
                result = wfActivity.Operator.DisplayName;
            }
            else
            if (wfActivity.Assignees.Count != 0)
            {
                result = GetCandidatesOrAssigneesText(wfActivity.Assignees, mainStreamActivity.Activity.Name);
            }
            else
            {
                WfAssigneeCollection candidates = wfActivity.Candidates.GetSelectedAssignees();

                if (candidates.Count != 0)
                {
                    result = GetCandidatesOrAssigneesText(candidates, mainStreamActivity.Activity.Name);
                }
            }
            return(result);
        }
        public static void AreSame(this WfClientAssigneeCollection expected, WfAssigneeCollection actual)
        {
            Assert.AreEqual(expected.Count, actual.Count);

            for (int i = 0; i < expected.Count; i++)
                expected[i].AreSame(actual[i]);
        }
Esempio n. 27
0
        //private bool CanTransit(IWfActivity targetActivity)
        //{
        //    //广度遍历。。。找最近的目标点。
        //    bool result = false;
        //    string key= targetActivity.Descriptor.Key;
        //    if (targetActivity.Descriptor.AssociatedActivityKey != null)
        //        key = targetActivity.Descriptor.AssociatedActivityKey;
        //    foreach (var trans in this.Descriptor.ToTransitions)
        //    {

        //        if (trans.ToActivity.Key == key)
        //        {
        //            result = true;
        //            break;
        //        }
        //    }
        //    return result;
        //}

        private static IEnumerable<WfResourceDescriptor> GetResources(WfAssigneeCollection wfAssignees)
        {
            List<WfResourceDescriptor> list = new List<WfResourceDescriptor>();

            foreach (WfAssignee item in wfAssignees)
            {
                list.Add(new WfUserResourceDescriptor(item.User));
            }

            return list;
        }
        public WfExecutorBase CreateExecutor()
        {
            WfExecutorBase executor = null;

            switch (this.OperationType)
            {
                case WfControlOperationType.MoveTo:
                    executor = new WfMoveToExecutor(
                        WfClientContext.Current.OriginalActivity,
                        WfClientContext.Current.OriginalActivity, ToTransferParams(),
                        WfClientContext.Current.Locks);
                    break;
                case WfControlOperationType.Consign:
                    {
                        WfAssigneeCollection assignees = new WfAssigneeCollection();

                        WfAssignee assignee = new WfAssignee(WfClientContext.Current.User);

                        assignees.Add(assignee);

                        executor = new WfConsignExecutor(
                            WfClientContext.Current.OriginalActivity,
                            WfClientContext.Current.OriginalActivity,
                            assignees,
                            this.Assignees.ToUsers(),
                            this.Circulators.ToUsers(),
                            BlockingType,
                            SequenceType);
                    }
                    break;
                case WfControlOperationType.Return:
                    if (this._RejectMode == WfRejectMode.LikeAddApprover)
                        executor = new WfAddApproverExecutor(WfClientContext.Current.CurrentActivity, WfClientContext.Current.CurrentActivity.Process.Activities.FindActivityByDescriptorKey(TargetActivityDescriptor.Key));
                    else
                        executor = new WfReturnExecutor(WfClientContext.Current.CurrentActivity, WfClientContext.Current.CurrentActivity.Process.Activities.FindActivityByDescriptorKey(TargetActivityDescriptor.Key));
                    break;
                default:
                    throw new WfRuntimeException(Translator.Translate(Define.DefaultCulture, "不能处理操作类型为{0}", this.OperationType));
            }

            return executor;
        }
Esempio n. 29
0
        /// <summary>
        /// 得到被委托的人员
        /// </summary>
        /// <param name="sourceAssignees"></param>
        /// <returns></returns>
        private static WfAssigneeCollection GetDelegatedAssignees(WfAssigneeCollection sourceAssignees, IWfProcess process)
        {
            WfAssigneeCollection result = new WfAssigneeCollection();

            foreach (WfAssignee sourceAssignee in sourceAssignees)
            {
                WfDelegationCollection delegations = WfDelegationSettings.GetConfig().Reader.GetUserActiveDelegations(sourceAssignee.User, process);

                foreach (WfDelegation delegation in delegations)
                {
                    OguUser user = new OguUser(delegation.DestinationUserID);

                    user.DisplayName = delegation.DestinationUserName;
                    user.Name = delegation.DestinationUserName;

                    OguUser delegator = new OguUser(delegation.SourceUserID);
                    delegator.DisplayName = delegation.SourceUserName;
                    delegator.Name = delegation.SourceUserName;

                    WfAssignee assignee = new WfAssignee(user);

                    assignee.AssigneeType = WfAssigneeType.Delegated;
                    assignee.Delegator = delegator;

                    result.Add(assignee);
                }
            }

            return result;
        }
		private string GetCandidatesOrAssigneesText(WfAssigneeCollection assignees, string defaultValue)
		{
			StringBuilder strB = new StringBuilder();
			if (assignees != null && assignees.Count > 0)
			{
				for (int i = 0; i < assignees.Count; i++)
				{
					strB.Append(assignees[i].User.DisplayName + (i < assignees.Count - 1 ? "," : ""));
				}
			}
			else
			{
				strB.Append(defaultValue);
			}

			return strB.ToString();
		}
Esempio n. 31
0
		/// <summary>
		/// 当前用户是否在Assignee中,同时也会检查Url
		/// </summary>
		/// <returns></returns>
		private bool IsUserInAssignees(WfAssigneeCollection currentActivityAssignees)
		{
			bool result = false;

			IList<WfAssignee> assignees = currentActivityAssignees.FindAll(a => string.Compare(a.User.ID, this.User.ID, true) == 0);

			if (assignees.Count > 0)
			{
				int urlEmptyCount = 0;

				foreach (WfAssignee assignee in assignees)
				{
					if (assignee.Url.IsNullOrEmpty())
					{
						urlEmptyCount++;
					}
					else
						if (AssigneeUriIsSameAsEntryUri(new Uri(assignee.Url, UriKind.RelativeOrAbsolute)))
						{
							result = true;
							break;
						}
				}

				//如果所有assignees的url都是空,则不比较url了。
				if (result == false && urlEmptyCount == assignees.Count)
					result = true;
			}

			return result;
		}
Esempio n. 32
0
		private int Find(WfAssigneeCollection wfAssigneeCollection, string id)
		{
			int i = 0;
			foreach (var assignee in wfAssigneeCollection)
			{
				if (string.Compare(assignee.User.ID, id) == 0)
				{
					i++;
				}
			}
			return i;
		}
        private static bool IsUserInAssignees(string userID, WfAssigneeCollection currentActivityAssignees)
        {
            return currentActivityAssignees.Exists(a => string.Compare(a.User.ID, userID, true) == 0);
            //bool result = false;

            //IList<WfAssignee> assignees = currentActivityAssignees.FindAll(a => a.User.ID == userID);

            //if (assignees.Count > 0)
            //{
            //    int urlEmptyCount = 0;

            //    foreach (WfAssignee assignee in assignees)
            //    {
            //        if (assignee.Url.IsNullOrEmpty())
            //        {
            //            urlEmptyCount++;
            //        }
            //        else
            //        { 
            //            if (AssigneeUriIsSameAsEntryUri(new Uri(assignee.Url, UriKind.RelativeOrAbsolute)))
            //            {
            //                result = true;
            //                break;
            //            }
            //        }
            //    }

            //    //如果所有assignees的url都是空,则不比较url了。
            //    if (result == false && urlEmptyCount == assignees.Count)
            //        result = true;
            //}

            //return result;
        }
		private static string GetAssigneesName(WfAssigneeCollection assignees)
		{
			StringBuilder strB = new StringBuilder();

			foreach (WfAssignee assignee in assignees)
			{
				if (strB.Length > 0)
					strB.Append(",");

				strB.Append(assignee.User.DisplayName);
			}

			return strB.ToString();
		}
		private Control GetCandidatesOrAssigneesControl(WfAssigneeCollection assignees, string defaultValue)
		{
			HtmlGenericControl userNames = new HtmlGenericControl("span");
			string splitter = ",";

			if (this.EnableUserPresence)
				splitter = "&nbsp";

			if (assignees != null && assignees.Count > 0)
			{
				for (int i = 0; i < assignees.Count; i++)
				{
					if (i > 0)
						userNames.Controls.Add(new LiteralControl(splitter));

					userNames.Controls.Add(GetUserNameControl(assignees[i].User));
				}
			}
			else
			{
				userNames.Controls.Add(new LiteralControl(HttpUtility.HtmlEncode(defaultValue)));
			}

			return userNames;
		}
        private void ReplaceResources(WfAssigneeCollection collection)
        {
            this.TargetActivity.Descriptor.Resources.Clear();

            foreach (IUser user in collection.ToUsers())
                this.TargetActivity.Descriptor.Resources.Add(new WfUserResourceDescriptor(user));
        }
        private void ReplaceAssignees(WfAssigneeCollection collection)
        {
            foreach (IUser user in this._OriginalAssignees)
                collection.Remove(a => string.Compare(a.User.ID, user.ID, true) == 0);

            collection.Add(this.TargetAssignees);
        }