在 C++ 中創建 MS 項目文件

MS Project 是一種廣泛使用的項目管理軟件,可幫助管理人員有效地管理他們的項目。它允許創建任務、添加資源、將任務分配給資源、監控進度以及管理與預算相關的操作。在本文中,您將了解如何在沒有 MS Project 的情況下將項目管理活動嵌入到您的 C++ 應用程序中。借助代碼示例,您將學習如何使用 C++ 以編程方式創建 MS 項目文件 (.mpp/.xml)、添加任務、資源和日曆。此外,還將演示項目中資源的任務分配。

C++ MS 項目文件操作 API

Aspose.Tasks for C++ 是一個 C++ 項目管理 API,可讓您以編程方式創建、操作、導出和轉換 MS Project 文件。 API 為您提供了一套完整的功能來創建項目、任務、資源、日曆,並在沒有 MS Project 的情況下執行其他項目管理活動。您可以從 此處 下載完整的 API 包或使用 NuGet 安裝它。

使用 C++ 創建 MS 項目文件 (.mpp)

讓我們首先從創建一個空項目開始。以下是使用 Aspose.Tasks for C++ 從頭開始創建 MS 項目 (.mpp) 文件的步驟。

以下代碼示例顯示瞭如何使用 C++ 創建 MS 項目的 .mpp 文件。

// 創建項目
System::SharedPtr<Project> project = System::MakeObject<Project>();

// 設置項目信息
project->Set<System::String>(Prj::Author(), u"Author");
project->Set<System::String>(Prj::LastAuthor(), u"Last Author");
project->Set<int32_t>(Prj::Revision(), 15);
project->Set<System::String>(Prj::Keywords(), u"MSP Aspose");
project->Set<System::String>(Prj::Comments(), u"Comments");

// 將項目另存為 .mpp 文件
project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

使用 C++ 將任務添加到項目

創建項目後,您可以繼續向其添加任務。您可以創建新項目或加載現有的 MS Project 文件來添加任務。以下是創建任務或子任務並將其添加到項目的步驟。

以下代碼示例顯示如何使用 C++ 創建任務並將其添加到項目。

// 創建項目實例
System::SharedPtr<Project> project = System::MakeObject<Project>(u"project.mpp");

// 添加任務、子任務並保存項目
System::SharedPtr<Task> task = project->get_RootTask()->get_Children()->Add(u"Summary1");
task->Set(Tsk::Start(), project->get_RootTask()->Get<System::DateTime>(Tsk::Start()).AddDays(1));
task->Set<System::String>(Tsk::Name(), u"new name");
System::SharedPtr<Task> subtask = task->get_Children()->Add(u"Subtask1");

// 保存項目
project->Save(dataDir + u"CreateTasks_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

閱讀更多 關於與任務相關的擴展功能。

使用 C++ 將資源添加到項目

資源是應該完成項目的實體。通常,人被稱為項目的資源。以下是創建資源並將其添加到項目的步驟。

以下代碼示例顯示瞭如何使用 C++ 在項目中添加資源。

// 創建項目實例
System::SharedPtr<Project> project = System::MakeObject<Project>();  

// 添加資源
System::SharedPtr<Resource> rsc1 = project->get_Resources()->Add(u"Rsc");    

// 設置資源屬性,資源屬性用靜態類Rsc表示
rsc1->Set<System::Decimal>(Rsc::StandardRate(), static_cast<System::Decimal>(15));
rsc1->Set<System::Decimal>(Rsc::OvertimeRate(), static_cast<System::Decimal>(20));  

// 將項目另存為 XML
project->Save(u"CreateResources_out.xml", Aspose::Tasks::Saving::SaveFileFormat::XML);

閱讀更多 關於與資源相關的擴展功能。

使用 C++ 將項目的任務分配給資源

創建任務和資源後,下一步是將每個任務分配給負責完成任務的資源。以下是將任務分配給資源的步驟。

以下代碼示例顯示如何使用 C++ 將任務分配給項目中的資源。

// 創建空項目
System::SharedPtr<Project> project1 = System::MakeObject<Project>();    

// 添加新任務和資源
System::SharedPtr<Task> task1 = project1->get_RootTask()->get_Children()->Add(u"Task");
System::SharedPtr<Resource> rsc1 = project1->get_Resources()->Add(u"Rsc");  

// 分配資源所需的任務
System::SharedPtr<ResourceAssignment> assn = project1->get_ResourceAssignments()->Add(task1, rsc1);

使用 C++ 在項目中添加日曆

日曆用於在 MS Project 中為項目創建時間表。 Aspose.Tasks for C++ 使得為項目創建日曆變得非常簡單。以下是創建日曆、添加工作日和指定工作時間的步驟。

您還可以在日曆中設置工作日的工作時間。為此,您可以在添加工作日後按照以下步驟操作。

以下代碼示例顯示如何使用 C++ 在項目中創建日曆。

// 創建項目實例
System::SharedPtr<Project> project = System::MakeObject<Project>();    

// 定義日曆
System::SharedPtr<Aspose::Tasks::Calendar> cal = project->get_Calendars()->Add(u"Calendar1");    

// 使用默認時間從星期一到星期四添加工作日
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Monday));
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Tuesday));
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Wednesday));
cal->get_WeekDays()->Add(WeekDay::CreateDefaultWorkingDay(Aspose::Tasks::DayType::Thursday));
cal->get_WeekDays()->Add(System::MakeObject<WeekDay>(Aspose::Tasks::DayType::Saturday));
cal->get_WeekDays()->Add(System::MakeObject<WeekDay>(Aspose::Tasks::DayType::Sunday));  

// 將星期五設置為短工作日
System::SharedPtr<WeekDay> myWeekDay = System::MakeObject<WeekDay>(Aspose::Tasks::DayType::Friday);  

// 設置工作時間。只有 DateTime 的時間部分很重要
System::SharedPtr<WorkingTime> wt1 = System::MakeObject<WorkingTime>();
wt1->set_FromTime(System::DateTime(1, 1, 1, 9, 0, 0, 0));
wt1->set_ToTime(System::DateTime(1, 1, 1, 12, 0, 0, 0));
System::SharedPtr<WorkingTime> wt2 = System::MakeObject<WorkingTime>();
wt2->set_FromTime(System::DateTime(1, 1, 1, 13, 0, 0, 0));
wt2->set_ToTime(System::DateTime(1, 1, 1, 16, 0, 0, 0));
myWeekDay->get_WorkingTimes()->Add(wt1);
myWeekDay->get_WorkingTimes()->Add(wt2);
myWeekDay->set_DayWorking(true);
cal->get_WeekDays()->Add(myWeekDay);   

// 保存項目
System::String dataDir = Examples::CPP::RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
project->Save(u"Project_DefineCalendarWeekdays_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

閱讀更多 關於與日曆相關的擴展功能。

結論

在本文中,您學習瞭如何使用 C++ 創建 MS 項目文件並將它們保存為 .mpp 或 .xml。此外,您還學習瞭如何以編程方式在項目中添加任務、資源、資源分配和日曆。您還可以瀏覽 文檔,了解 Aspose.Tasks for C++ 的擴展功能,以進一步增強應用程序中的項目管理功能。

也可以看看