Генерація даних, розподілених у часі, для різних контурів роботи
Під час управління графіками проекту часто потрібно аналізувати, як робота розподіляється в часі для різних призначень ресурсів. Aspose.Tasks for .NET дозволяє це зробити, генеруючи дані, розподілені в часі для призначень ресурсів на основі різних контурів роботи. Це дозволяє розробникам точніше моделювати, відстежувати та звітувати про використання ресурсів.
Генерація даних, розподілених у часі, для контурів роботи
Контур роботи визначає, як робота розподіляється протягом тривалості завдання. Aspose.Tasks for .NET дозволяє застосовувати різні контури (наприклад, Flat, Back Loaded, Front Loaded, Turtle, Bell тощо) та генерувати відповідні дані, розподілені в часі. Згенеровані дані отримуються за допомогою TimeScaleData
методу, який вимагає дати початку та завершення проекту як вхідні параметри.
Приклад коду
У наведеному прикладі різним типам контурів роботи призначаються ресурси, і для аналізу отримуються їхні дані, розподілені в часі:
1Project project = new Project("New Project.mpp");
2
3// Get the first task of the Project
4Task task = project.RootTask.Children.GetById(1);
5
6// Get the First Resource Assignment of the Project
7ResourceAssignment firstRA = project.ResourceAssignments.ToList()[0];
8
9// Flat contour is default contour
10Console.WriteLine("Flat contour");
11
12var tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
13foreach (TimephasedData td in tdList)
14{
15 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
16}
17
18// Change contour
19firstRA.Set(Asn.WorkContour, WorkContourType.Turtle);
20Console.WriteLine("Turtle contour");
21tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
22foreach (TimephasedData td in tdList)
23{
24 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
25}
26
27// Change contour
28firstRA.Set(Asn.WorkContour, WorkContourType.BackLoaded);
29Console.WriteLine("BackLoaded contour");
30tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
31foreach (TimephasedData td in tdList)
32{
33 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
34}
35
36// Change contour
37firstRA.Set(Asn.WorkContour, WorkContourType.FrontLoaded);
38Console.WriteLine("FrontLoaded contour");
39tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
40foreach (TimephasedData td in tdList)
41{
42 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
43}
44
45// Change contour
46firstRA.Set(Asn.WorkContour, WorkContourType.Bell);
47Console.WriteLine("Bell contour");
48tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
49foreach (TimephasedData td in tdList)
50{
51 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
52}
53
54// Change contour
55firstRA.Set(Asn.WorkContour, WorkContourType.EarlyPeak);
56Console.WriteLine("EarlyPeak contour");
57tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
58foreach (TimephasedData td in tdList)
59{
60 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
61}
62
63// Change contour
64firstRA.Set(Asn.WorkContour, WorkContourType.LatePeak);
65Console.WriteLine("LatePeak contour");
66tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
67foreach (TimephasedData td in tdList)
68{
69 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
70}
71
72// Change contour
73firstRA.Set(Asn.WorkContour, WorkContourType.DoublePeak);
74Console.WriteLine("DoublePeak contour");
75tdList = task.GetTimephasedData(project.Get(Prj.StartDate), project.Get(Prj.FinishDate));
76foreach (TimephasedData td in tdList)
77{
78 Console.WriteLine(td.Start.ToShortDateString() + " " + td.Value);
79}
У цьому коді кожен контур роботи застосовується до призначення ресурсу, і згенеровані дані, розподілені в часі, відображаються. Це дозволяє легко побачити, як робота розподіляється протягом тривалості призначення залежно від типу контуру.
Поширені запитання
П: Що таке контур роботи в Microsoft Project?
- Контур роботи визначає, як зусилля ресурсу розподіляються протягом тривалості завдання. Наприклад, Flat застосовує рівномірне навантаження, тоді як Bell розподіляє зусилля більш інтенсивно в середині.
П: Як Aspose.Tasks генерує дані, розподілені в часі?
- Воно використовує
TimeScaleData
метод, який приймає дати початку і завершення проекту, щоб обчислити розподіл роботи для кожного призначення.
П: Чи можна згенерувати дані, розподілені в часі, для кількох призначень одночасно?
- Так. Ви можете перебрати всі призначення ресурсів у проекті й згенерувати для кожного дані, розподілені в часі.
П: Чи потрібно мати встановлений Microsoft Project, щоб генерувати дані, розподілені в часі?
- Ні. Aspose.Tasks працює автономно і не вимагає Microsoft Project для читання, обчислення або експорту даних, розподілених в часі.
Висновок
У цій статті ми розглянули, як згенерувати дані, розподілені в часі для різних контурів роботи призначень ресурсів за допомогою Aspose.Tasks for .NET. Застосовуючи різні контури і отримуючи відповідні дані, розробники можуть краще аналізувати навантаження на ресурси, покращувати прогнозування проекту та програмно генерувати детальні звіти про використання.