Aufgabenbeschränkungen für Handhabung
Aufgabenbeschränkungen werden verwendet, um den Zeitplan eines Microsoft -Projekts zu definieren und zu definieren, wann Aufgaben gestartet oder abgeschlossen werden sollten. Einschränkungen können flexibel sein - so bald wie möglich oder so spät wie möglich - oder unflexibel. Unflexible Einschränkungen sind an bestimmte Daten gebunden.
Mit Einschränkungen arbeiten
Die Eigenschaften Constraintdate und ConstraintType werden durch die statische Klasse TSK -Klasse entlarvt, um Einschränkungen zu behandeln:
- Constraintdate akzeptiert und gibt den Datentyp DateTime zurück.
- ConstraintType akzeptiert und gibt einen der Werte der ConstraintType -Aufzählung zurück.
Setzen Sie Einschränkungen im Microsoft -Projekt ein
Einschränkungen im Microsoft -Projekt festlegen:
- Wählen Sie im Menü Ansicht Wählen Sie Weitere Ansichten und dann Aufgabeneintragsformular.
- Doppelklicken Sie auf die Aufgabe des Aufgabeneintragsformulars.
- Wählen Sie die Registerkarte Erweitert.
- Legen Sie eine Einschränkung fest, indem Sie eine Option aus der Liste Einschränkungstyp und ein Datum für die Liste Einschränkung Datum Liste auswählen.
Setzen Sie Einschränkungen mit Aspose.Tasks
Das Einschränkungsdatum ist na, wenn der Einschränkungstyp so bald wie möglich oder so spät wie möglich ** ist. Für die Datumswerte, die NA entspricht, verwendet Aspose.Tasks für C ++ API den Wert “1/1/2000” in der Bewertungsversion und datetime.minValue für das lizenzierte Produkt. Im folgenden Fall nehmen wir eine Quellprojektdatei als Eingabe an und wenden jeweils verschiedene Arten von Einschränkungen für verschiedene Aufgaben an. Das folgende Codebeispiel zeigt die Anwendung verschiedener Einschränkungen.
Die folgenden Code -Stichproben setzen den Einschränkungs -Typ fest, der nicht früher startet als.
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}