Esempio n. 1
0
        /// <summary>
        /// 根据流程的走向得到活动的集合,如果没有线路联通的活动,则根据执行时间排序。如果没有开始时间,则随机排列
        /// </summary>
        /// <returns></returns>
        public WfClientActivityCollection GetSortedActivities()
        {
            WfClientActivityCollection result = new WfClientActivityCollection();

            this.FillMainStreamActivities(result);
            this.FillNotInMainStreamActivities(result);

            return(result);
        }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 3
0
        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);
        }