private static void DoCopyUnit(StepContext context, AU.AdminUnit fromUnit, AU.AdminUnit targetParent, string newName, string newCodeName, bool copyRoleMembers, bool copyScopeMembers, bool copyScopeConditions)
		{
			AU.AdminUnit newUnit = CreateUnit(fromUnit, newName, newCodeName);

			int totalSteps = 1;
			if (copyRoleMembers)
				totalSteps++;
			if (copyScopeConditions)
				totalSteps++;
			if (copyScopeMembers)
				totalSteps++;

			context.TotalSteps = totalSteps;
			context.PassedSteps = 0;
			context.Div = 100.0 / totalSteps;

			ProcessProgress.Current.MinStep = 1;
			ProcessProgress.Current.CurrentStep = 1;
			ProcessProgress.Current.MaxStep = 100;

			context.Logger.WriteLine(ProcessProgress.Current.StatusText = "正在添加管理单元");

			AU.Operations.Facade.InstanceWithPermissions.AddAdminUnit(newUnit, targetParent);
			context.ResetInnerSteps();
			context.PassedSteps++;
			context.Response();

			CopyRoleMembers(fromUnit, copyRoleMembers, newUnit, context);
			context.PassedSteps++;
			context.ResetInnerSteps();
			context.Response();

			if (copyScopeMembers || copyScopeConditions)
			{
				var srcScopes = fromUnit.GetNormalScopes();
				var scopes = newUnit.GetNormalScopes();

				if (copyScopeMembers)
				{
					foreach (AU.AUAdminScope srcScope in srcScopes)
					{
						var targetScope = scopes.GetScope(srcScope.ScopeSchemaType);
						if (targetScope != null)
						{
							CopyMembers(copyScopeMembers, srcScope, targetScope, context);
						}
					}
					context.PassedSteps++;
					context.ResetInnerSteps();
					context.Response();
				}

				if (copyScopeConditions)
				{
					foreach (AU.AUAdminScope srcScope in srcScopes)
					{
						var targetScope = scopes.GetScope(srcScope.ScopeSchemaType);
						if (targetScope != null)
						{
							CopyConditions(copyScopeConditions, srcScope, targetScope, context);
							context.PassedSteps++;
							context.ResetInnerSteps();
							context.Response();
						}
					}
					context.PassedSteps++;
					context.ResetInnerSteps();
				}
			}
		}