private Step GetNext(Step current)
 {
     LinkedListNode<Step> aCurrent = this.flowSteps.Find(current);
     if (aCurrent.Next != null)
         return aCurrent.Next.Value;
     return null;
 }
 /// <summary>
 /// 移除步骤
 /// </summary>
 /// <param name="step">步骤</param>
 public void Remove(Step step)
 {
     if (this.flowSteps.Contains(step))
     {
         this.flowSteps.Remove(step);                
     }
 }
 /// <summary>
 /// 插入步骤
 /// </summary>
 /// <param name="newStep">新步骤</param>
 /// <param name="index">插入位置</param>
 public void Insert(Step newStep, int index)
 {
     if (index == this.flowSteps.Count())
     {
         this.flowSteps.AddLast(newStep);
         return;
     }
     if (index < 0 || index > this.flowSteps.Count)
     {
         throw new ArgumentException("Insert step overflow index");
     }
     if (!this.flowSteps.Contains(newStep))
     {
         Step step = this.flowSteps.ElementAt(index);
         LinkedListNode<Step> current = this.flowSteps.Find(step);
         this.flowSteps.AddBefore(current, newStep);                
     }
 }
 /// <summary>
 /// addAfter
 /// </summary>
 /// <param name="step"></param>
 /// <param name="newStep"></param>
 public void AddAfter(Step step, Step newStep)
 {
     this.flowSteps.AddAfter(this.flowSteps.Find(step), newStep);
 }
 /// <summary>
 /// 添加流程步骤
 /// </summary>
 /// <param name="step">步骤</param>
 public void Add(Step step)
 {
     this.flowSteps.AddLast(step);             
 }
 private static void SetDisableAtReturned(FlowEngine flowEngine, Step returnedStep)
 {
     LinkedListNode<Step> stepNode = flowEngine.FlowSteps.Find(returnedStep);
     if (stepNode == null) return;
     stepNode = stepNode.Next;
     while (stepNode != null)
     {
         Step step = stepNode.Value;
         foreach (var node in step.Nodes)
         {
             if (node.AuditType != AuditType.Disable)
             {
                 node.AuditType = AuditType.Disable;
             }
         }
         stepNode = stepNode.Next;
     }
 }