タスクを読み取るTimephasedデータ

Contents
[ Hide Show ]

Microsoft Projectでは、Timephasedデータがタスクの使用状況とリソースの使用ビューの右側に表示されます。このデータを手動でプログラム的に記述することができます。C++ APIのAspose.Tasksで作成したり、プロジェクトからアプリケーションに入力したりできます。

Timephased Dataの操作

C ++ APIのAspose.Tasksは、Microsoft Project(MPP)ファイルからタスクの時間段階データの読み取りをサポートしています。時間段階のデータは、Task ObjectのGetTimePhasedDataメソッドを使用して取得されます。

次のコードは、タスクのTimephasedデータを読み取る方法を示しています。

 1// Create project instance
 2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
 3System::SharedPtr<Project> project1 = System::MakeObject<Project>(dataDir + u"ReadWriteTimephasedData.mpp");
 4    
 5// Set project properties
 6project1->Set(Prj::StartDate(), System::DateTime(2013, 10, 30, 9, 0, 0));
 7project1->Set<NullableBool>(Prj::NewTasksAreManual(), NullableBool::to_NullableBool(false));
 8    
 9// Add task and resources
10System::SharedPtr<Task> task = project1->get_RootTask()->get_Children()->Add(u"Task");
11System::SharedPtr<Resource> rsc = project1->get_Resources()->Add(u"Rsc");
12    
13// Set resource rates and task duration
14rsc->Set<System::Decimal>(Rsc::StandardRate(), static_cast<System::Decimal>(10));
15rsc->Set<System::Decimal>(Rsc::OvertimeRate(), static_cast<System::Decimal>(15));
16task->Set<Duration>(Tsk::Duration(), project1->GetDuration(6));
17    
18// Create resource assignment
19System::SharedPtr<ResourceAssignment> assn = project1->get_ResourceAssignments()->Add(task, rsc);
20assn->Set(Asn::Stop(), System::DateTime::MinValue);
21assn->Set(Asn::Resume(), System::DateTime::MinValue);
22    
23// Set Backloaded contour, it increases task duration from 6 to 10 days
24assn->Set<WorkContourType>(Asn::WorkContour(), Aspose::Tasks::WorkContourType::BackLoaded);
25    
26project1->SetBaseline(Aspose::Tasks::BaselineType::Baseline);
27task->Set<int32_t>(Tsk::PercentComplete(), 50);
28    
29// Read timephased data
30System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<TimephasedData>>> td = assn->GetTimephasedData(assn->Get<System::DateTime>(Asn::Start()), assn->Get<System::DateTime>(Asn::Finish()), Aspose::Tasks::TimephasedDataType::AssignmentRemainingWork)->ToList();
31System::Console::WriteLine(td->get_Count());
32    
33{
34    auto timePhasedValue_enumerator = (td)->GetEnumerator();
35    decltype(timePhasedValue_enumerator->get_Current()) timePhasedValue;
36    while (timePhasedValue_enumerator->MoveNext() && (timePhasedValue = timePhasedValue_enumerator->get_Current(), true))
37    {
38        System::Console::WriteLine(timePhasedValue->get_Value());
39    }
40}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.