Робота з завданнями
Іноді неможливо виконати завдання згідно з графіком, і його потрібно розбити на дві або більше частин. Microsoft Project підтримує розбиття завдань, а Aspose.Tasks для .NET забезпечує ту саму функціональність програмно.
Розбиття завдань
Властивість SplitParts властивість, що надається Task клас використовується для визначення розбитих частин завдання, тоді як SplitTask метод, що надається ResourceAssignment клас використовується для розбиття одного завдання на кілька частин. SplitParts повертає колекцію розбитих частин, тоді як метод SplitTask приймає аргументи дати початку, дати завершення та календаря для розбиття завдання.
Розбиття та перегляд завдань у Microsoft Project
У Microsoft Project ви можете розбити завдання таким чином:
- Виберіть довге завдання, яке потрібно розділити.
- На вкладці Task вкладці, у Schedule групі, натисніть Split Task.
- Клацніть у тому місці на панелі завдання, де ви хочете створити розрив.
Розбиті завдання відображаються у Gantt Chart вигляді і з’єднані пунктирною лінією.
Приклад: Створення та розбиття завдання
Наступний приклад показує, як створити проєкт, додати завдання, призначити ресурс і програмно розбити завдання:
1// Create new project
2Project splitTaskProject = new Project();
3
4// Get a standard calendar
5Calendar calendar = splitTaskProject.Get(Prj.Calendar);
6
7// Set project's calendar settings
8splitTaskProject.Set(Prj.StartDate, new DateTime(2000, 3, 15, 8, 0, 0));
9splitTaskProject.Set(Prj.FinishDate, new DateTime(2000, 4, 21, 17, 0, 0));
10
11// Add a new task to root task
12Task rootTask = splitTaskProject.RootTask;
13rootTask.Set(Tsk.Name, "Root");
14Task taskToSplit = rootTask.Children.Add("Task1");
15taskToSplit.Set(Tsk.Duration, splitTaskProject.GetDuration(3));
16
17// Create a new resource assignment and generate timephased data
18ResourceAssignment splitResourceAssignment = splitTaskProject.ResourceAssignments.Add(taskToSplit, null);
19splitResourceAssignment.TimephasedDataFromTaskDuration(calendar);
20
21// Split the task into 3 parts.
22// Provide start date and finish date arguments to SplitTask method which will be used for split
23splitResourceAssignment.SplitTask(new DateTime(2000, 3, 16, 8, 0, 0), new DateTime(2000, 3, 16, 17, 0, 0), calendar);
24splitResourceAssignment.SplitTask(new DateTime(2000, 3, 18, 8, 0, 0), new DateTime(2000, 3, 18, 17, 0, 0), calendar);
25splitResourceAssignment.Set(Asn.WorkContour, WorkContourType.Contoured);
26
27splitTaskProject.Save("CreateSplitTasks_out.xml", SaveFileFormat.XML);
Приклад: Перегляд розбитих завдань
Наступний приклад показує, як виявити розбиті завдання в проєкті та вивести їхні деталі в консоль:
1Project project = new Project("New Project.mpp");
2
3// Access task
4Task splitTask = project.RootTask.Children.GetById(4);
5
6// Display split parts of task
7SplitPartCollection collection = splitTask.SplitParts;
8foreach (SplitPart splitPart in collection)
9{
10 Console.WriteLine("Index: " + splitPart.Index + " Start: " + splitPart.Start + " Finish: " + splitPart.Finish);
11}
Основні зауваження
- Розбиття завдань допомагає змоделювати реальні перерви в графіках проєктів.
- Цей
SplitTask
метод не видаляє роботу — він перерозподіляє наявну роботу на окремі інтервали. - Ця
SplitParts
властивість дозволяє розробникам аналізувати та обробляти кожен сегмент окремо. - Працює узгоджено з обома MPP та XML форматами проєктів.
Часті питання
П: Чи може завдання мати більше ніж два розбиття?
- Так. Завдання може бути розділене на кілька сегментів.
П: Чи впливає розбиття на тривалість завдання?
- Загальна тривалість змінюється залежно від розташування інтервалів розбиття, але загальний обсяг роботи залишається незмінним.
П: Чи можна знову об’єднати розбиті завдання?
- У Microsoft Project можна вручну відрегулювати смуги, щоб видалити розриви. В Aspose.Tasks це можна зробити, скинувши призначення завдань або створивши завдання заново.
П: Чи підтримується ця функція для повторюваних завдань?
- Ні. Розбиття призначене для звичайних завдань, а не для визначень повторюваних завдань.