Створення файлів MS Project на C++

MS Project – це широко використовуване програмне забезпечення для керування проектами, яке допомагає менеджерам ефективно керувати своїми проектами. Це дозволяє створювати завдання, додавати ресурси, розподіляти завдання між ресурсами, контролювати прогрес і керувати бюджетними операціями. У цій статті ви дізнаєтесь, як вбудувати дії з керування проектами у ваші програми C++ без MS Project. За допомогою зразків коду ви навчитеся створювати файли MS Project (.mpp/.xml), програмно додавати завдання, ресурси та календарі за допомогою C++. Крім того, також буде продемонстровано призначення завдань ресурсам у проекті.

C++ MS Project File Manipulation API

Aspose.Tasks for C++ — це API керування проектами C++, який дозволяє створювати, маніпулювати, експортувати та конвертувати файли MS Project програмним шляхом. API надає вам повний набір функцій для створення проектів, завдань, ресурсів, календарів і виконання інших дій з керування проектами без MS Project. Ви можете завантажити повний пакет API тут або встановити його за допомогою NuGet.

Створюйте файли MS Project (.mpp) за допомогою C++

Давайте спочатку створимо порожній проект. Нижче наведено кроки для створення файлу MS Project (.mpp) з нуля за допомогою Aspose.Tasks for C++.

У наведеному нижче прикладі коду показано, як створити файл .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, щоб додати завдання. Нижче наведено кроки для створення та додавання завдань або підзавдань до проекту.

У наведеному нижче прикладі коду показано, як створити та додати завдання до проекту за допомогою 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++

Після створення завдань і ресурсів наступним кроком буде призначення кожного завдання ресурсу, який відповідає за його виконання. Нижче наведено кроки, щоб призначити завдання ресурсу.

  • Створіть новий проект або завантажте його з файлу .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);

Додайте календарі в Project за допомогою C++

Календарі використовуються для створення розкладу проекту в MS Project. Aspose.Tasks for C++ дуже спростив створення календаря для проекту. Нижче наведено кроки для створення календаря, додавання днів тижня та визначення робочого часу.

  • Створіть новий проект або завантажте його з файлу .mpp за допомогою класу Project.
  • Додайте календар до проекту за допомогою Project->getCalendars()->Add(u"Calendar1") і збережіть повернуте значення в об’єкті Calendar.
  • Додайте робочі дні до календаря за допомогою методу Calendar->getWeekDays()->Add().
  • Збережіть проект.

Ви також можете встановити робочий час для буднього дня в календарі. Для цього ви можете виконати наведені нижче дії після додавання робочих днів.

У наведеному нижче прикладі коду показано, як створити календар у проекті за допомогою 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++, щоб ще більше розширити можливості керування проектами у ваших програмах.

Дивись також