Beispiel #1
0
        /// <summary>
        /// 准备用户的签名信息
        /// </summary>
        /// <param name="opinions"></param>
        public static void PrepareSignImages(GenericOpinionCollection opinions)
        {
            if (opinions != null && opinions.Count > 0)
            {
                HashSet <string> opinionUserIDs = new HashSet <string>();

                foreach (GenericOpinion opinion in opinions)
                {
                    if (UserSignatures.ContainsKey(opinion.IssuePerson.ID) == false && opinionUserIDs.Contains(opinion.IssuePerson.ID) == false)
                    {
                        opinionUserIDs.Add(opinion.IssuePerson.ID);
                    }
                }

                UserInfoExtendCollection opinionUserInfo =
                    UserOUControlSettings.GetConfig().UserOUControlQuery.QueryUsersExtendedInfo(opinionUserIDs.ToArray());

                foreach (UserInfoExtendDataObject item in opinionUserInfo)
                {
                    string path = item.GetSignImagePath();

                    if (path.IsNotEmpty())
                    {
                        UserSignatures[item.ID] = path;
                    }
                }
            }
        }
        public List <WfClientOpinion> GetOpinionsByProcessID(string processID)
        {
            OperationContext.Current.FillContextToOguServiceContext();

            GenericOpinionCollection serverOpinions = GenericOpinionAdapter.Instance.LoadByInBuilder(builder =>
            {
                builder.DataField = "PROCESS_ID";
                builder.AppendItem(processID);
            });

            return(WfClientOpinionConverter.Instance.ServerToClient(serverOpinions));
        }
Beispiel #3
0
        private void RenderOpinions(GenericOpinionCollection opinions, HtmlTable table)
        {
            int i = 0;

            foreach (GenericOpinion opinion in opinions)
            {
                HtmlTableRow row = new HtmlTableRow();

                row.ID = "OpinionRow" + i.ToString();
                table.Controls.Add(row);

                RenderOneOpinion(opinion, row, i);

                i++;
            }
        }
Beispiel #4
0
        public List <WfClientOpinion> ServerToClient(GenericOpinionCollection server)
        {
            server.NullCheck("server");

            List <WfClientOpinion> client = new List <WfClientOpinion>();

            foreach (GenericOpinion opinion in server)
            {
                WfClientOpinion clientOpinion = null;

                ServerToClient(opinion, ref clientOpinion);

                client.Add(clientOpinion);
            }

            return(client);
        }
Beispiel #5
0
        private static WfClientOpinion GetUserActivityOpinion(GenericOpinionCollection opinions, IWfActivity originalActivity, IUser user)
        {
            WfClientOpinion opinion = null;

            GenericOpinion serverOpinion = opinions.Find(o =>
                                                         string.Compare(o.ActivityID, originalActivity.ID, true) == 0 &&
                                                         string.Compare(o.IssuePerson.ID, user.ID, true) == 0);

            if (serverOpinion != null)
            {
                opinion = new WfClientOpinion(serverOpinion);
            }
            else
            {
                opinion = new WfClientOpinion()
                {
                    ID = UuidHelper.NewUuidString()
                }
            };

            return(opinion);
        }
		/// <summary>
		/// 准备用户的签名信息
		/// </summary>
		/// <param name="opinions"></param>
		public static void PrepareSignImages(GenericOpinionCollection opinions)
		{
			if (opinions != null && opinions.Count > 0)
			{
				HashSet<string> opinionUserIDs = new HashSet<string>();

				foreach (GenericOpinion opinion in opinions)
				{
					if (UserSignatures.ContainsKey(opinion.IssuePerson.ID) == false && opinionUserIDs.Contains(opinion.IssuePerson.ID) == false)
						opinionUserIDs.Add(opinion.IssuePerson.ID);
				}

				UserInfoExtendCollection opinionUserInfo =
					UserOUControlSettings.GetConfig().UserOUControlQuery.QueryUsersExtendedInfo(opinionUserIDs.ToArray());

				foreach (UserInfoExtendDataObject item in opinionUserInfo)
				{
					string path = item.GetSignImagePath();

					if (path.IsNotEmpty())
						UserSignatures[item.ID] = path;
				}
			}
		}
		private void RenderOpinions(GenericOpinionCollection opinions, HtmlTable table)
		{
			int i = 0;

			foreach (GenericOpinion opinion in opinions)
			{
				HtmlTableRow row = new HtmlTableRow();

				row.ID = "OpinionRow" + i.ToString();
				table.Controls.Add(row);

				RenderOneOpinion(opinion, row, i);

				i++;
			}
		}
		private void RenderOpinions(Control opinionContainer, GenericOpinionCollection opinions, IWfActivityDescriptor actDesp)
		{
			bool addContentToCell = false;
			int i = 0;
			foreach (GenericOpinion opinion in opinions)
			{
				if (ReadOnly ||
					OriginalActivity == null ||
					(opinion.ActivityID != OriginalActivity.ID ||
					opinion.IssuePerson.ID != WfClientContext.Current.User.ID) ||
					OriginalActivity.Status != WfActivityStatus.Running)
				{
					object nextStepsString = string.Empty;

					if (opinion.ExtData.TryGetValue("NextSteps", out nextStepsString))
					{
						RenderOriginalOpinionSelector(opinionContainer, (string)nextStepsString);
					}

					HtmlGenericControl opDiv = new HtmlGenericControl("div");
					opDiv.Attributes["class"] = "opinion";
					opDiv.Style["padding"] = "0px";

					OpinionListViewNamingContainer container = new OpinionListViewNamingContainer();
					opDiv.Controls.Add(container);
					container.ID = "Opinion" + opinion.ID;

					if (i > 0)
						opDiv.Style["border-top"] = "1px dotted silver";

					IWfActivity act = GetWfActivityByActivityID(opinion.ActivityID);

					if (act != null)
					{
						OnOpinionBind(new OpinionListViewBindEventArgs(opinion, actDesp, container, true));

						string opText = GetActivityEmptyOpinionText(actDesp);

						if (string.IsNullOrEmpty(opinion.Content) == false)
							opText = opinion.Content;

						HtmlGenericControl div = new HtmlGenericControl("div");
						div.Style["padding"] = "6px 8px";

						if (EnableUserPresence == false)
						{
							RenderOneOpinionWithoutPrecense(act, opinion, opText, div);
						}
						else
						{
							RenderOneOpinionWithPrecense(act, opinion, opText, div);
						}

						opDiv.Controls.Add(div);
						opinionContainer.Controls.Add(opDiv);
						addContentToCell = true;
					}

					i++;
				}
			}

			if (addContentToCell)
			{
				HtmlGenericControl div = new HtmlGenericControl("div");
				div.Attributes["class"] = "opinion";
				div.Style["padding"] = "0";
				opinionContainer.Controls.Add(div);
			}
		}
		private void RenderOpinionPlaceHolders()
		{
			if (Opinions != null && Opinions.Count > 0)
			{
				foreach (KeyValuePair<IWfActivityDescriptor, Control> kp in this._opinionPlaceHolders)
				{
					IWfActivityDescriptor levelActDesp = kp.Key;

					GenericOpinionCollection collectedOpinions = new GenericOpinionCollection();

					string clonedKey = levelActDesp.ClonedKey;
					while (clonedKey.IsNotEmpty())
					{
						foreach (var op in Opinions.GetOpinions(clonedKey))
						{
							collectedOpinions.Add(op);
						}

						var actDescriptor = this.CurrentProcess.Descriptor.Activities[clonedKey];
						clonedKey = actDescriptor.ClonedKey;
					}

					string levelName = levelActDesp.Instance.MainStreamActivityKey;

					if (levelName.IsNullOrEmpty())
						levelName = levelActDesp.Key;

					if (levelName.IsNotEmpty())
					{
						foreach (var op in Opinions.GetOpinions(levelName))
							collectedOpinions.Add(op);
					}

					if (collectedOpinions != null)
					{
						RenderOpinions(kp.Value, collectedOpinions, levelActDesp);
					}
				}
			}
		}
Beispiel #10
0
        public static WfClientProcess GetClientProcess(IWfProcess process)
        {
            process.NullCheck("process");

            WfClientProcess clientProcess = new WfClientProcess()
            {
                ProcessID     = process.ID,
                ProcessStatus = process.Status.ToString(),
                Activities    = new List <WfClientActivity>(),
                ResourceID    = process.ResourceID
            };

            if (process.Status == WfProcessStatus.Completed)
            {
                clientProcess.ProcessStatusString = "已完成";
            }
            else
            if (process.Status == WfProcessStatus.Aborted)
            {
                clientProcess.ProcessStatusString = "已驳回";
            }

            clientProcess.UISwitches.FillByProcess(process, process.CurrentActivity.ID, DeluxeIdentity.CurrentUser);

            GenericOpinionCollection opinions = GenericOpinionAdapter.Instance.Load(
                builder => builder.AppendItem("RESOURCE_ID", process.ResourceID));

            clientProcess.CurrentOpinion = GetUserActivityOpinion(opinions, process.CurrentActivity, DeluxeIdentity.CurrentUser);

            WfMainStreamActivityDescriptorCollection activityCollection = process.GetMainStreamActivities(false);

            foreach (var item in activityCollection)
            {
                IWfActivity activity = item.Activity.Instance;

                WfClientActivity clientActivity = new WfClientActivity()
                {
                    ActivityID     = item.Activity.Instance.ID,
                    ActivityName   = item.Activity.Name,
                    ActivityStatus = item.Activity.Instance.Status.ToString(),
                    IsActive       = (item.Activity.Instance.Status == WfActivityStatus.Running),
                    Approvers      = (item.Activity.Instance.Candidates.Count > 0 ? item.Activity.Instance.Candidates[0].User.Name : ""),
                    ApproverCount  = item.Activity.Instance.Candidates.Count,
                    ActivityScene  = item.Activity.Scene,
                    StartTime      = item.Activity.Instance.StartTime
                };

                if (item.Activity.Instance.Candidates.Count > 1)
                {
                    clientActivity.Approvers += "...";
                }

                clientActivity.ApproverList = string.Join(",", item.Activity.Instance.Candidates.Select(a => a.User.Name).ToArray());

                if (item.Activity.Instance.Status == WfActivityStatus.Running)
                {
                    clientProcess.CurrentActivity = clientActivity;
                }
                else if (item.Activity.Instance.Status == WfActivityStatus.Completed || item.Activity.Instance.Status == WfActivityStatus.Aborted)
                {
                    var opinion = opinions.Where(o => o.ActivityID == clientActivity.ActivityID).FirstOrDefault();
                    if (opinion != null)
                    {
                        clientActivity.Comment             = opinion.Content;
                        clientActivity.Action              = opinion.OpinionType;
                        clientActivity.Approver            = opinion.IssuePerson.DisplayName;
                        clientActivity.ApprovalTime        = opinion.IssueDatetime;
                        clientActivity.ApprovalElapsedTime = FormatElapsedTime(opinion.IssueDatetime - activity.StartTime);
                    }
                }

                clientProcess.Activities.Add(clientActivity);
            }

            foreach (GenericOpinion go in opinions)
            {
                WfClientActivity parentActivity = clientProcess.Activities.Where(a => a.ActivityID == go.ActivityID).FirstOrDefault();
                if (parentActivity != null)
                {
                    WfClientActivityHistory history = new WfClientActivityHistory()
                    {
                        ID                  = go.ID,
                        ActivityID          = go.ActivityID,
                        ActivityName        = parentActivity.ActivityName,
                        Action              = go.OpinionType,
                        Comment             = go.Content,
                        Approver            = go.IssuePerson.DisplayName,
                        ApprovalType        = parentActivity.ApprovalType,
                        ApprovalTime        = go.IssueDatetime,
                        ApprovalElapsedTime = FormatElapsedTime(go.IssueDatetime - parentActivity.StartTime)
                    };
                    clientProcess.ActivityHistories.Add(history);
                }
            }
            clientProcess.ActivityHistories = clientProcess.ActivityHistories.OrderBy(a => a.ApprovalTime).ToList();

            foreach (string key in process.ApplicationRuntimeParameters.Keys)
            {
                clientProcess.ProcessParameters.Add(key, process.ApplicationRuntimeParameters[key]);
            }

            return(clientProcess);
        }