Zaimplementuj tryby obliczeń MS Project w Python

Microsoft Project oferuje trzy tryby obliczeń: automatyczny, ręczny i żaden. Każdy tryb oferuje inny poziom kontroli nad sposobem aktualizacji i przeliczania projektu. W tym artykule dowiemy się, jak programowo zaimplementować tryby obliczeń MS Project w Python. Niezależnie od tego, czy przeprowadzasz migrację z planowania ręcznego do planowania automatycznego, czy też potrzebujesz elastyczności w zarządzaniu terminami projektu, w tym artykule znajdziesz informacje i zasoby potrzebne do takiego przejścia. Zacznijmy!

W tym artykule poruszono następujące tematy:

  1. API Python do programowego obliczania projektu
  2. Ręczne obliczanie projektu
  3. Automatyczne obliczanie projektu
  4. Brak trybu obliczania projektu

API Python do programowego obliczania projektu

Do realizacji projektu MS tryby obliczeniowe wykorzystamy API Aspose.Tasks for Python. Udostępnia następujące tryby obliczeń do obliczania wartości właściwości zależnych:

  • Brak – ten tryb ustawia tylko niezbędne właściwości i nie przelicza terminów i kosztów projektu.
  • Ręczny – w tym trybie ustawiane są tylko właściwości obiektu zależnego, bez przeliczania terminów i kosztów projektu.
  • Automatyczny – ten tryb automatycznie przelicza daty projektu i właściwości kosztów.

Proszę pobierz pakiet lub zainstaluj API z PyPI, używając następującego polecenia pip w konsoli:

pip install aspose-tasks

Oblicz ręcznie MS Project w Python

Możemy ustawić tryb obliczeń na ręczny i zweryfikować go, wykonując poniższe czynności:

  1. Utwórz instancję klasy Project.
  2. Ustaw tryb obliczeń na RĘCZNY.
  3. Określ datę rozpoczęcia projektu.
  4. Dodaj nowe zadania, np. Zadanie 1 i Zadanie 2.
  5. Przeczytaj właściwości zadania.
  6. Następnie zainicjuj obiekt klasy TaskLinks i połącz zadania.
  7. Na koniec sprawdź datę rozpoczęcia i zakończenia Zadania 2.

Poniższy przykładowy kod pokazuje, jak ręcznie obliczyć projekt w języku Python.

# Ten przykład kodu demonstruje, jak obliczyć projekt MS przy użyciu trybu obliczeń ręcznych w języku Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Utwórz instancję projektu
project = tasks.Project()

# Ustaw tryb obliczeń na Ręczny
project.calculation_mode = tasks.CalculationMode.MANUAL

# Ustaw datę rozpoczęcia projektu
project.start_date = datetime(2015, 4, 15)

# Dodaj nowe zadania
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Niezbędne właściwości ustawia się w trybie ręcznym
print("Task1.Id Equals 1 : ", task1.id == 1)
print("Task1 OutlineLevel Equals 1 : ", task1.outline_level == 1)
print("Task1 Start Equals 15/04/2015 08:00 AM : ", task1.start) == datetime(2015, 4, 15, 8, 0, 0)
print("Task1 Finish Equals 15/04/2015 05:00 PM : ", task1.finish) == datetime(2015, 4, 15, 17, 0, 0)
print("Task1 Duration Equals 1 day : ", str(task1.duration) == "1 day")
print("Task2 Start Equals 15/04/2015 08:00 AM : ", task2.start == datetime(2015, 4, 15, 8, 0, 0))
print("Task2 Finish Equals 15/04/2015 05:00 PM : ", task2.finish == datetime(2015, 4, 15, 17, 0, 0))
print("Task2 Duration Equals 1 day : ", str(task2.duration) == "1 day")

# Połącz ze sobą dwa zadania, których daty nie będą przeliczane w trybie ręcznym
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Brak zmian w terminach Zadania 2
print("Task1 Start Equals Task2 Start : ", task1.start == task2.start)
print("Task1 Finish Equals Task2 Finish : ", task1.finish == task2.finish)
Task1.Id Equals 1 :  True
Task1 OutlineLevel Equals 1 :  True
Task1 Start Equals 15/04/2015 08:00 AM :  2015-04-15 08:00:00
Task1 Finish Equals 15/04/2015 05:00 PM :  2015-04-15 17:00:00
Task1 Duration Equals 1 day :  True
Task2 Start Equals 15/04/2015 08:00 AM :  True
Task2 Finish Equals 15/04/2015 05:00 PM :  True
Task2 Duration Equals 1 day :  True
Task1 Start Equals Task2 Start :  True
Task1 Finish Equals Task2 Finish :  True

Automatyczne obliczanie projektu w Python

Podobnie możemy obliczyć projekt MS w trybie automatycznym, wykonując kroki wspomniane wcześniej. Musimy jednak po prostu ustawić tryb obliczeń na automatyczny w kroku 2.

Poniższy przykładowy kod pokazuje, jak obliczyć projekt MS przy użyciu trybu automatycznego obliczania w języku Python.

# Ten przykład kodu demonstruje, jak obliczyć projekt MS przy użyciu trybu automatycznego obliczania w Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Utwórz instancję projektu
project = tasks.Project()

# Ustaw tryb obliczeń na Automatyczny
project.calculation_mode = tasks.CalculationMode.AUTOMATIC

# Ustaw datę rozpoczęcia projektu
project.start_date = datetime(2015, 4, 15)

# Dodaj nowe zadania
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Połącz zadania
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Sprawdź ponownie obliczone daty
print("Task1 Start + 1 Equals Task2 Start : ", (task1.start + timedelta(days=1)) == task2.start)
print("Task1 Finish + 1 Equals Task2 Finish : ", (task1.finish + timedelta(days=1)) == task2.finish)
print("RootTask Finish Equals Task2 Finish : ", task2.finish == project.root_task.finish)
print("Project Finish Date Equals Task2 Finish : ", task2.finish == project.finish_date)
Task1 Start + 1 Equals Task2 Start :  True
Task1 Finish + 1 Equals Task2 Finish :  True
RootTask Finish Equals Task2 Finish :  True
Project Finish Date Equals Task2 Finish :  False

Brak trybu obliczania projektu w Python

Możemy ustawić tryb obliczeń na NONE i zweryfikować go, wykonując poniższe kroki:

  1. Utwórz instancję klasy Project.
  2. Ustaw tryb obliczeń na Brak.
  3. Określ datę rozpoczęcia projektu.
  4. Dodaj nowe zadanie, np. Zadanie 1.
  5. Przeczytaj właściwości zadania.
  6. Następnie ustaw czas trwania zadania w dniach.
  7. Na koniec sprawdź datę rozpoczęcia i zakończenia Zadania.

Poniższy przykładowy kod pokazuje, jak ustawić tryb obliczeń projektu MS na none przy użyciu języka Python.

# Ten przykład kodu demonstruje, jak ustawić tryb obliczeń projektu MS na NONE w Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Utwórz instancję projektu
project = tasks.Project()

# Ustaw tryb obliczeń na Brak
project.calculation_mode = tasks.CalculationMode.NONE

# Dodaj nowe zadanie
task = project.root_task.children.add("Task")

# Należy pamiętać, że nawet identyfikatory nie zostały obliczone
print("Task.Id Equals 0 : ", task.id == 0)
print("Task.OutlineLevel Equals 0 : ", task.outline_level == 0)
print("Task Start Equals DateTime.MinValue : ", task.start == datetime.min)
print("Task Finish Equals DateTime.MinValue : ", task.finish == datetime.min)
print("Task Duration Equals 0 mins : ", str(task.duration) == "0 mins")

# Ustaw właściwość czasu trwania
task.duration = project.get_duration(2.0, tasks.TimeUnitType.DAY)
print("Task Duration Equals 2 days : ", str(task.duration) == "2 days")
print("Task Start Equals DateTime.MinValue  : ", task.start == datetime.min)
print("Task Finish Equals DateTime.MinValue  : ", task.finish == datetime.min)
Task.Id Equals 0 :  True
Task.OutlineLevel Equals 0 :  False
Task Start Equals DateTime.MinValue :  True
Task Finish Equals DateTime.MinValue :  True
Task Duration Equals 0 mins :  True
Task Duration Equals 2 days :  True
Task Start Equals DateTime.MinValue  :  True
Task Finish Equals DateTime.MinValue  :  True

Zdobądź bezpłatną licencję

Możesz uzyskać bezpłatną licencję tymczasową, aby wypróbować bibliotekę bez ograniczeń ewaluacyjnych.

Oblicz projekt w Python – zasoby edukacyjne

Oprócz implementowania trybów obliczeń i ponownego obliczania harmonogramu i czasu trwania projektu MS, możesz eksplorować różne inne funkcje biblioteki, korzystając z poniższych zasobów:

Wniosek

W tym artykule dowiedzieliśmy się, jak programowo ustawić tryby obliczania projektu w Python. Widzieliśmy także, jak obliczane są wartości właściwości zależnych w każdym trybie obliczeniowym. Wykorzystując Aspose.Tasks for Python poprzez .NET, możesz łatwo osadzić taką funkcjonalność w swoich aplikacjach Python. W przypadku jakichkolwiek niejasności prosimy o kontakt z nami na naszym bezpłatnym forum pomocy technicznej.

Zobacz też