/// <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)); }
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++; } }
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); }
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(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); } } } }
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); }