C++でMSProjectファイルを作成する

MS Projectは、マネージャーがプロジェクトを効率的に管理するのに役立つ、広く使用されているプロジェクト管理ソフトウェアです。これにより、タスクの作成、リソースの追加、リソースへのタスクの割り当て、進行状況の監視、および予算関連の操作の管理が可能になります。この記事では、MSProjectを使用せずにC++アプリケーション内にプロジェクト管理アクティビティを埋め込む方法を学習します。コードサンプルを使用して、C++を使用してプログラムでMSProjectファイル(.mpp / .xml)を作成し、タスク、リソース、およびカレンダーを追加する方法を学習します。さらに、プロジェクト内のリソースへのタスクの割り当てについても説明します。

C++MSプロジェクトファイル操作API

Aspose.Tasks for C++はC++プロジェクト管理APIであり、MS Projectファイルをプログラムで作成、操作、エクスポート、および変換できます。 APIは、プロジェクト、タスク、リソース、カレンダーを作成し、MSProjectなしで他のプロジェクト管理アクティビティを実行するための完全な機能セットを提供します。 APIの完全なパッケージは、ここからダウンロードするか、NuGetを使用してインストールできます。

C++を使用してMSProjectファイル(.mpp)を作成する

まず、空のプロジェクトを作成することから始めましょう。以下は、C++用のAspose.Tasksを使用して、MS Project(.mpp)ファイルを最初から作成する手順です。

次のコードサンプルは、C++を使用してMSProjectの.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++を使用してプロジェクトにタスクを追加する

プロジェクトを作成したら、タスクの追加に進むことができます。新しいプロジェクトを作成するか、既存のMSProjectファイルをロードしてタスクを追加できます。以下は、タスクまたはサブタスクを作成してプロジェクトに追加する手順です。

次のコードサンプルは、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++を使用してプロジェクトのタスクをリソースに割り当てます

タスクとリソースを作成したら、次のステップは、各タスクをその完了を担当するリソースに割り当てることです。タスクをリソースに割り当てる手順は次のとおりです。

  • Projectクラスを使用して、新しいプロジェクトを作成するか、.mppファイルからロードします。
  • プロジェクトが空の場合は、新しいタスクとリソースを追加します。
  • 目的のタスクとリソースにそれぞれタスクオブジェクトとリソースオブジェクトにアクセスします。
  • 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++を使用してプロジェクトにカレンダーを追加する

カレンダーは、MSProject内のプロジェクトのスケジュールを作成するために使用されます。 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);

続きを読むカレンダーに関連する拡張機能について。

結論

この記事では、MS Projectファイルを作成し、C++を使用してそれらを.mppまたは.xmlとして保存する方法を学習しました。さらに、プロジェクト内にタスク、リソース、リソース割り当て、およびカレンダーをプログラムで追加する方法を学習しました。また、ドキュメントでAspose.Tasksfor C++の拡張機能を調べて、アプリケーション内のプロジェクト管理機能をさらに強化することもできます。

関連項目