internal WfActivityLevelGroupCollection GetAllLevels(bool autoCalcaulatePath, IWfProcess process)
		{
			List<IWfActivityDescriptor> alreadyScanedActivities = new List<IWfActivityDescriptor>();

			FindNextStepActivityDescriptor(this.InitialActivity, autoCalcaulatePath, process, alreadyScanedActivities);

			WfActivityLevelGroupCollection result = new WfActivityLevelGroupCollection(alreadyScanedActivities);

			//寻找那些在线上不能达到,但是又属于某个环节的
			foreach (IWfActivityDescriptor actDesp in this.Activities)
			{
				try
				{
					WfActivityLevelGroup group = result[actDesp.LevelName];

					if (group.Data.Exists(actInGroup => actInGroup.Key == actDesp.Key) == false)
						group.Data.Add(actDesp);
				}
				catch (KeyNotFoundException)
				{
				}
			}

			return result;
		}
		internal WfActivityLevelGroupCollection GetAllBranchesLevels(bool autoCalcaulatePath, IWfProcess process)
		{
			List<IWfActivityDescriptor> alreadyScanedActivities = new List<IWfActivityDescriptor>();

			FindAllNextStepActivityDescriptor(this.InitialActivity, autoCalcaulatePath, process, alreadyScanedActivities);

			WfActivityLevelGroupCollection result = new WfActivityLevelGroupCollection(alreadyScanedActivities);

			return result;
		}