MS Project — это широко используемое программное обеспечение для управления проектами, которое помогает менеджерам эффективно управлять своими проектами. Это позволяет создавать задачи, добавлять ресурсы, распределять задачи по ресурсам, отслеживать ход выполнения и управлять операциями, связанными с бюджетом. В этой статье вы узнаете, как внедрить действия по управлению проектами в ваши приложения C++ без MS Project. С помощью примеров кода вы узнаете, как программно создавать файлы MS Project (.mpp/.xml), добавлять задачи, ресурсы и календари с помощью C++. Кроме того, также будет продемонстрировано назначение задач ресурсам в проекте.
- C++ API управления файлами MS Project
- Создание файлов MS Project с нуля с помощью C++
- Добавить задачи в проект с помощью C++
- Добавить ресурсы в проект с помощью C++
- Назначьте задачу проекта ресурсу с помощью С++
- Добавить календари в проект с помощью C++
C++ API управления файлами MS Project
Aspose.Tasks for C++ — это API управления проектами C++, который позволяет программно создавать, манипулировать, экспортировать и преобразовывать файлы MS Project. API предоставляет вам полный набор функций для создания проектов, задач, ресурсов, календарей и выполнения других действий по управлению проектами без MS Project. Вы можете загрузить полный пакет API здесь или установить его с помощью NuGet.
Создайте файлы проекта MS (.mpp) с помощью C++
Давайте сначала начнем с создания пустого проекта. Ниже приведены шаги по созданию файла MS Project (.mpp) с нуля с помощью Aspose.Tasks для C++.
- Создайте объект класса Project.
- Установите свойства проекта.
- Сохраните проект как файл .mpp, используя метод Project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP).
В следующем примере кода показано, как создать MPP-файл MS Project с помощью C++.
// Создать проект
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, чтобы добавить задачи. Ниже приведены шаги по созданию и добавлению задач или подзадач в проект.
- Создайте новый проект или загрузите его из файла .mpp, используя класс Project.
- Добавьте задачу в проект с помощью метода Project->getRootTask()->getChildren()->Add(u"Summary1") и сохраните вновь созданную задачу в объекте Task.
- (Необязательно) Добавьте подзадачу к только что созданной задаче, используя метод Task->getChildren()->Add(u"Subtask1").
- Сохраните проект как файл .mpp, используя метод Project->Save(u"project.mpp", Aspose::Tasks::Saving::SaveFileFormat::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++
Ресурсы — это объекты, которые должны завершить проект. Обычно людей называют ресурсами проекта. Ниже приведены шаги по созданию и добавлению ресурсов в проект.
- Создайте новый проект или загрузите его из файла .mpp, используя класс Project.
- Добавьте новый ресурс, используя метод 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);
Подробнее о расширенных функциях, связанных с ресурсами.
Назначьте задачу проекта ресурсу с помощью С++
После того как вы создали задачи и ресурсы, следующим шагом будет назначение каждой задачи ресурсу, отвечающему за ее выполнение. Ниже приведены шаги для назначения задачи ресурсу.
- Создайте новый проект или загрузите его из файла .mpp, используя класс Project.
- Добавьте новые задачи и ресурсы, если проект пуст.
- Получите доступ к нужной задаче и ресурсу в объект 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++ упростил создание календаря для проекта. Ниже приведены шаги по созданию календаря, добавлению дней недели и указанию рабочего времени.
- Создайте новый проект или загрузите его из файла .mpp, используя класс Project.
- Добавьте календарь в проект с помощью 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);
Подробнее о расширенных функциях, связанных с календарями.
Вывод
В этой статье вы узнали, как создавать файлы MS Project и сохранять их в формате .mpp или .xml с помощью C++. Кроме того, вы узнали, как программно добавлять задачи, ресурсы, назначения ресурсов и календари в проект. Вы также можете изучить документацию для расширенных функций Aspose.Tasks for C++, чтобы еще больше расширить возможности управления проектами в ваших приложениях.