タスクの制約の処理
タスクの制約は、Microsoft Project Projectのスケジュールを定義し、タスクをいつ開始または終了するかを定義するために使用されます。制約は柔軟になります - できるだけ早く、またはできるだけ早く開始または終了します - または柔軟性がありません。柔軟性のない制約は、特定の日付と結びついています。
制約の操作
ConstraintDateおよびConstraintTypeプロパティは、制約を処理するための静的クラス TSKクラスによって公開されます。
- ConstraintDateは、DateTimeデータ型を受け入れて返します。
- ConstraintTypeは、ConstraintType Enumerationの値の1つを受け入れて返します。
Microsoftプロジェクトの制約の設定
Microsoftプロジェクトで制約を設定するには:
- ビューメニューで、その他のビューを選択し、タスクエントリフォームを選択します。
- タスクエントリフォームのタスクをダブルクリックします。
- [詳細]タブを選択します。
- 制約タイプリストからオプションを選択し、制約日付リストの日付を選択して制約を設定します。
Aspose.Tasksで制約を設定
制約タイプができるだけ早くまたはできるだけ遅くの場合、制約日はNAです。 Naに等しい日付値の場合、Aspose.Tasks for C ++ APIは、評価バージョンで値「1/1/2000」、およびライセンス製品のMinValueを使用します。以下の場合、ソースプロジェクトファイルを入力として使用し、それぞれの場合にさまざまなタスクにさまざまなタイプの制約を適用します。次のコードの例は、さまざまな制約タイプの適用を示しています。
以下のコードサンプルは、制約タイプを設定して設定されています。
1// The path to the documents directory.
2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
3
4// Create project instance
5System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"ConstraintStartNoEarlierThan.mpp");
6
7// Set constraint Start No Earlier Than on task with Id 1
8System::SharedPtr<Task> summary = project->get_RootTask()->get_Children()->GetById(1);
9summary->Set<ConstraintType>(Tsk::ConstraintType(), Aspose::Tasks::ConstraintType::StartNoEarlierThan);
10summary->Set(Tsk::ConstraintDate(), System::DateTime(2016, 12, 1, 9, 0, 0));
11
12// Save project as pdf
13System::SharedPtr<SaveOptions> o = System::MakeObject<PdfSaveOptions>();
14o->set_StartDate(project->Get<System::DateTime>(Prj::StartDate()));
15o->set_Timescale(Aspose::Tasks::Visualization::Timescale::ThirdsOfMonths);
16project->Save(dataDir + u"project_StartNoEarlierThan_out.pdf", o);
The code samples below set the constraint type set to Finish No Earlier Than.
1// Set constraint Finish No Earlier Than on task with Id 2
2System::SharedPtr<Task> first = project1->get_RootTask()->get_Children()->GetById(2);
3first->Set<ConstraintType>(Tsk::ConstraintType(), Aspose::Tasks::ConstraintType::FinishNoEarlierThan);
4first->Set(Tsk::ConstraintDate(), System::DateTime(2016, 12, 1, 18, 0, 0));
5
6// Save project as pdf
7System::SharedPtr<SaveOptions> options = System::MakeObject<PdfSaveOptions>();
8options->set_StartDate(project1->Get<System::DateTime>(Prj::StartDate()));
9options->set_Timescale(Aspose::Tasks::Visualization::Timescale::ThirdsOfMonths);
10project1->Save(dataDir + u"project_FinishNoEarlierThan_out.pdf", options);
The code samples below set the constraint type set to Must Start On.
1// Set constraint Must Start On for task with Id 5
2System::SharedPtr<Task> roof = project1->get_RootTask()->get_Children()->GetById(5);
3roof->Set<ConstraintType>(Tsk::ConstraintType(), Aspose::Tasks::ConstraintType::MustStartOn);
4roof->Set(Tsk::ConstraintDate(), System::DateTime(2017, 1, 1, 9, 0, 0));
5
6// Save project as pdf
7System::SharedPtr<SaveOptions> options = System::MakeObject<PdfSaveOptions>();
8options->set_StartDate(project1->Get<System::DateTime>(Prj::StartDate()));
9options->set_Timescale(Aspose::Tasks::Visualization::Timescale::ThirdsOfMonths);
10project1->Save(dataDir + u"project_MustStartOn_out.pdf", options);
The code samples below set the constraint type set to As Late As Possible.
1// Set constraint As Late As Possible for task with Id 11
2System::SharedPtr<Task> wallBoard = project1->get_RootTask()->get_Children()->GetById(11);
3wallBoard->Set<ConstraintType>(Tsk::ConstraintType(), Aspose::Tasks::ConstraintType::AsLateAsPossible);
4
5// Save project as pdf
6System::SharedPtr<SaveOptions> options = System::MakeObject<PdfSaveOptions>();
7options->set_StartDate(project1->Get<System::DateTime>(Prj::StartDate()));
8options->set_Timescale(Aspose::Tasks::Visualization::Timescale::ThirdsOfMonths);
9project1->Save(dataDir + u"project_AsLateAsPossible_out.pdf", options);
The code sample below shows the constraint type set to Must Finish On.
1// Set constraint Must Finish On for task with Id 15
2System::SharedPtr<Task> interiorFixtures = project1->get_RootTask()->get_Children()->GetById(15);
3interiorFixtures->Set<ConstraintType>(Tsk::ConstraintType(), Aspose::Tasks::ConstraintType::MustFinishOn);
4interiorFixtures->Set(Tsk::ConstraintDate(), System::DateTime(2017, 3, 1, 18, 0, 0));
5
6// Save project as pdf
7System::SharedPtr<SaveOptions> options = System::MakeObject<PdfSaveOptions>();
8options->set_StartDate(project1->Get<System::DateTime>(Prj::StartDate()));
9options->set_Timescale(Aspose::Tasks::Visualization::Timescale::ThirdsOfMonths);
10project1->Save(dataDir + u"project_MustFinishOn_out.pdf", options);
Getting Constraints
This code sample displays any constraints found when traversing the tasks in the project to a command window.
1System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
2System::SharedPtr<Project> project1 = System::MakeObject<Project>(dataDir + u"Project2.mpp");
3
4// Create a ChildTasksCollector instance
5System::SharedPtr<ChildTasksCollector> collector = System::MakeObject<ChildTasksCollector>();
6
7// Collect all the tasks from RootTask using TaskUtils
8TaskUtils::Apply(project1->get_RootTask(), collector, 0);
9
10// Parse through all the collected tasks
11
12{
13 auto tsk1_enumerator = (collector->get_Tasks())->GetEnumerator();
14 decltype(tsk1_enumerator->get_Current()) tsk1;
15 while (tsk1_enumerator->MoveNext() && (tsk1 = tsk1_enumerator->get_Current(), true))
16 {
17 if (tsk1->Get<System::DateTime>(Tsk::ConstraintDate()).ToShortDateString() == u"1/1/2000")
18 {
19 System::Console::WriteLine(u"NA");
20 }
21 else
22 {
23 System::Console::WriteLine(tsk1->Get<System::DateTime>(Tsk::ConstraintDate()).ToShortDateString());
24 }
25
26 System::Console::WriteLine(System::ObjectExt::ToString(tsk1->Get<ConstraintType>(Tsk::ConstraintType())));
27 }
28}