public WfTransitionDescriptorCollection GetAllEnabledTransitions()
        {
            WfTransitionDescriptorCollection result = CreateNewCollection();

            foreach (WfTransitionDescriptor transition in this)
            {
                if (transition.Enabled)
                {
                    result.Add(transition);
                }
            }

            result.Sort((t1, t2) =>
            {
                int compareResult;

                if (t1.DefaultSelect == t2.DefaultSelect)
                {
                    compareResult = t1.Priority - t2.Priority;
                }
                else
                {
                    compareResult = (t1.DefaultSelect) ? -1 : 1;
                }

                return(compareResult);
            }
                        );

            return(result);
        }
        /// <summary>
        /// 得到所有符合条件的线。无论是否Enabled
        /// </summary>
        /// <param name="sortByDefaultSelect">是否优先按照DefaultSelect排序</param>
        /// <returns></returns>
        public WfTransitionDescriptorCollection GetAllConditionMatchedTransitions(bool sortByDefaultSelect)
        {
            WfTransitionDescriptorCollection result = CreateNewCollection();

            foreach (IWfTransitionDescriptor transition in this)
            {
                try
                {
                    if (transition.ConditionMatched())
                    {
                        result.Add(transition);
                    }
                }
                catch (WfTransitionEvaluationException ex)
                {
                    ex.WriteToLog();
                }
            }

            result.Sort(sortByDefaultSelect);

            return(result);
        }