MS Project 是一種廣泛使用的項目管理軟件,可幫助管理人員有效地管理他們的項目。它允許創建任務、添加資源、將任務分配給資源、監控進度以及管理與預算相關的操作。在本文中,您將了解如何在沒有 MS Project 的情況下將項目管理活動嵌入到您的 C++ 應用程序中。借助代碼示例,您將學習如何使用 C++ 以編程方式創建 MS 項目文件 (.mpp/.xml)、添加任務、資源和日曆。此外,還將演示項目中資源的任務分配。
- C++ MS 項目文件操作 API
- 使用 C++ 從頭開始創建 MS 項目文件
- 使用 C++ 將任務添加到項目
- 使用 C++ 將資源添加到項目
- 使用 C++ 將項目的任務分配給資源
- 使用 C++ 在項目中添加日曆
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) 文件的步驟。
- 創建 Project 類的對象。
- 設置項目的屬性。
- 使用 Project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP) 方法將項目保存為 .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 文件來添加任務。以下是創建任務或子任務並將其添加到項目的步驟。
- 創建一個新項目或使用 Project 類從 .mpp 文件加載它。
- 使用 Project->getRootTask()->getChildren()->Add(u"Summary1") 方法向項目添加任務,並將新創建的任務存儲到 Task 對像中。
- (可選)使用 Task->getChildren()->Add(u"Subtask1") 方法向新創建的任務添加子任務。
- 使用 Project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP) 方法將項目保存為 .mpp 文件。
以下代碼示例顯示如何使用 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++ 將資源添加到項目
資源是應該完成項目的實體。通常,人被稱為項目的資源。以下是創建資源並將其添加到項目的步驟。
- 創建一個新項目或使用 Project 類從 .mpp 文件加載它。
- 使用 Project->getResources()->Add(u"Rsc") 方法添加新資源。
- 使用 Project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP) 方法保存項目。
以下代碼示例顯示瞭如何使用 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++ 將項目的任務分配給資源
創建任務和資源後,下一步是將每個任務分配給負責完成任務的資源。以下是將任務分配給資源的步驟。
- 創建一個新項目或使用 Project 類從 .mpp 文件加載它。
- 如果項目為空,則添加新任務和資源。
- 將所需的任務和資源分別訪問到 Task 和 Resource 對像中。
- 使用 Project->getResourceAssignments()->Add(Task, Resource) 方法將任務分配給資源。
- 使用 Project.Save() 方法保存項目。
以下代碼示例顯示如何使用 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++ 使得為項目創建日曆變得非常簡單。以下是創建日曆、添加工作日和指定工作時間的步驟。
- 創建一個新項目或使用 Project 類從 .mpp 文件加載它。
- 使用 Project->getCalendars()->Add(u"Calendar1") 將日曆添加到項目並將返回值存儲在 Calendar 對像中。
- 使用 Calendar->getWeekDays()->Add() 方法將工作日添加到日曆中。
- 保存項目。
您還可以在日曆中設置工作日的工作時間。為此,您可以在添加工作日後按照以下步驟操作。
- 創建 WeekDay 類的對象。
- 創建 WorkingTime 類的對象。
- 使用 WorkingTime->setFromTime() 和 WorkingTime->setToTime() 方法設置時間。
- 使用 WeekDay->getWorkingTimes()->Add(WorkingTime) 方法將工作時間添加到工作日。
- 使用 Calendar->getWeekDays()->Add(WeekDay) 方法將工作日添加到日曆中。
- 保存項目。
以下代碼示例顯示如何使用 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++ 的擴展功能,以進一步增強應用程序中的項目管理功能。