/// <summary> /// 根据流程的走向得到活动的集合,如果没有线路联通的活动,则根据执行时间排序。如果没有开始时间,则随机排列 /// </summary> /// <returns></returns> public WfClientActivityCollection GetSortedActivities() { WfClientActivityCollection result = new WfClientActivityCollection(); this.FillMainStreamActivities(result); this.FillNotInMainStreamActivities(result); return(result); }
private void FillMainStreamActivities(WfClientActivityCollection elapsedActivities) { foreach (WfClientMainStreamActivityDescriptor msActDesp in this.MainStreamActivityDescriptors) { WfClientActivity act = this.Activities.FindActivityByDescriptorKey(msActDesp.Activity.Key); if (act != null) { elapsedActivities.Add(act); } } }
private void FillNotInMainStreamActivities(WfClientActivityCollection elapsedActivities) { List <WfClientActivity> startedActivities = new List <WfClientActivity>(); List <WfClientActivity> notStartedActivities = new List <WfClientActivity>(); foreach (WfClientActivity act in this.Activities) { if (elapsedActivities.ContainsKey(act.ID) == false) { if (act.StartTime != DateTime.MinValue) { startedActivities.Add(act); } else { notStartedActivities.Add(act); } } } startedActivities.Sort((a1, a2) => { int r = 0; if (a1.StartTime > a2.StartTime) { r = -1; } else if (a1.StartTime < a2.StartTime) { r = 1; } return(r); }); elapsedActivities.CopyFrom(startedActivities); elapsedActivities.CopyFrom(notStartedActivities); }