Implementera MS Project beräkningslägen i Python

Microsoft Project erbjuder tre beräkningslägen: automatiserat, manuellt och inget. Varje läge erbjuder olika nivåer av kontroll över hur projektet uppdateras och räknas om. I den här artikeln kommer vi att lära oss hur man implementerar MS Projects beräkningslägen programmatiskt i Python. Oavsett om du migrerar från manuell schemaläggning till automatiserad schemaläggning eller om du behöver flexibilitet i att hantera dina projektdeadlines, kommer den här artikeln att ge dig den information och de resurser som behövs för en sådan övergång. Låt oss börja!

Den här artikeln tar upp följande ämnen:

  1. Python API för att beräkna projekt programmerat
  2. Manuell projektberäkning
  3. Automatisk projektberäkning
  4. Inget projektberäkningsläge

Python API för att beräkna projekt programmerat

Vi kommer att använda Aspose.Tasks for Python API för att implementera MS-projektet beräkningslägen. Den tillhandahåller följande beräkningslägen för att beräkna värdena för beroende egenskaper:

  • Ingen – Detta läge ställer bara in nödvändiga egenskaper och räknar inte om projektdatum och kostnader.
  • Manuellt – Detta läge ställer endast in beroende objektegenskaper utan omräkning av projektdatum och kostnader.
  • Automatisk – Detta läge räknar om projektdatum och kostnadsegenskaper automatiskt.

Vänligen ladda ner paketet eller installera API från PyPI med följande pip-kommando i konsolen:

pip install aspose-tasks

Beräkna MS Project manuellt i Python

Vi kan ställa in beräkningsläget till manuellt och verifiera det genom att följa stegen nedan:

  1. Skapa en instans av klassen Project.
  2. Ställ in beräkningsläget på MANUELL.
  3. Ange projektets startdatum.
  4. Lägg till nya uppgifter, t.ex. uppgift 1 och uppgift 2.
  5. Läs uppgiftens egenskaper.
  6. Efter det, initiera ett objekt av klassen TaskLinks och länkuppgifter.
  7. Slutligen, verifiera start- och slutdatumet för uppgift 2.

Följande kodexempel visar hur man manuellt beräknar ett projekt i Python.

# Detta kodexempel visar hur man beräknar MS-projektet med manuellt beräkningsläge i Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Skapa en instans av projektet
project = tasks.Project()

# Ställ in beräkningsläget på Manuell
project.calculation_mode = tasks.CalculationMode.MANUAL

# Ställ in projektstartdatum
project.start_date = datetime(2015, 4, 15)

# Lägg till nya uppgifter
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# De nödvändiga egenskaperna ställs in i manuellt läge
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")

# Länka två uppgifter samman deras datum ska inte räknas om i manuellt läge
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Ingen förändring i uppgift 2 datum
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

Automatisk projektberäkning i Python

På samma sätt kan vi beräkna MS-projektet med automatiskt beräkningsläge genom att följa stegen som nämnts tidigare. Men vi behöver bara ställa in beräkningsläget till automatiskt i steg 2.

Följande kodexempel visar hur man beräknar MS-projektet med automatiskt beräkningsläge i Python.

# Detta kodexempel visar hur man beräknar MS-projektet med automatiskt beräkningsläge i Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Skapa en instans av projektet
project = tasks.Project()

# Ställ in beräkningsläget på Automatisk
project.calculation_mode = tasks.CalculationMode.AUTOMATIC

# Ställ in projektstartdatum
project.start_date = datetime(2015, 4, 15)

# Lägg till nya uppgifter
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Länkuppgifter
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Verifiera de omräknade datumen
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

Inget projektberäkningsläge i Python

Vi kan ställa in beräkningsläget till INGEN och verifiera det genom att följa stegen nedan:

  1. Skapa en instans av klassen Project.
  2. Ställ in beräkningsläget på Ingen.
  3. Ange projektets startdatum.
  4. Lägg till en ny uppgift, t.ex. uppgift 1.
  5. Läs uppgiftens egenskaper.
  6. Ställ sedan in uppgiftens varaktighet i dagar.
  7. Slutligen, verifiera start- och slutdatumet för uppgiften.

Följande kodexempel visar hur man ställer in MS-projektberäkningsläge till inget med Python.

# Detta kodexempel visar hur man ställer in MS-projektets beräkningsläge som INGEN i Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Skapa en instans av projektet
project = tasks.Project()

# Ställ in beräkningsläget på Ingen
project.calculation_mode = tasks.CalculationMode.NONE

# Lägg till en ny uppgift
task = project.root_task.children.add("Task")

# Observera att även id inte beräknades
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")

# Ange durationsegenskap
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

Skaffa en gratis licens

Du kan få en gratis tillfällig licens för att prova biblioteket utan utvärderingsbegränsningar.

Beräkna projekt i Python – Lärresurser

Förutom att implementera beräkningslägen och räkna om MS-projektets schema och varaktighet, kan du utforska olika andra funktioner i biblioteket med hjälp av resurserna nedan:

Slutsats

I den här artikeln har vi lärt oss hur man ställer in projektberäkningslägen programmatiskt i Python. Vi har också sett hur värden på beroende egenskaper beräknas i varje beräkningsläge. Genom att utnyttja Aspose.Tasks för Python via .NET kan du enkelt bädda in sådan funktionalitet i dina Python-applikationer. I händelse av oklarheter är du välkommen att kontakta oss vårt gratis supportforum.

Se även