Triển khai các chế độ tính toán dự án MS bằng Python

Microsoft Project cung cấp ba chế độ tính toán: tự động, thủ công và không có chế độ nào. Mỗi chế độ cung cấp một mức độ kiểm soát khác nhau về cách cập nhật và tính toán lại dự án. Trong bài viết này, chúng ta sẽ học cách triển khai các chế độ tính toán MS Project theo chương trình bằng Python. Cho dù bạn đang chuyển từ lập lịch thủ công sang lập lịch tự động hay bạn cần sự linh hoạt trong việc quản lý thời hạn dự án của mình, bài viết này sẽ cung cấp cho bạn thông tin và tài nguyên cần thiết cho quá trình chuyển đổi đó. Bắt đầu nào!

Bài viết này bao gồm các chủ đề sau:

  1. API Python để tính toán dự án theo chương trình
  2. Tính toán dự án thủ công
  3. Tính toán dự án tự động
  4. Không có chế độ tính toán dự án

API Python để tính toán dự án theo chương trình

Chúng tôi sẽ sử dụng API Aspose.Tasks for Python để triển khai dự án MS chế độ tính toán. Nó cung cấp các chế độ tính toán sau để tính giá trị của các thuộc tính phụ thuộc:

  • Không có - Chế độ này chỉ đặt các thuộc tính cần thiết và không tính toán lại ngày và chi phí của dự án.
  • Thủ công – Chế độ này chỉ đặt các thuộc tính đối tượng phụ thuộc mà không tính toán lại ngày và chi phí của dự án.
  • Tự động - Chế độ này tự động tính toán lại ngày dự án và thuộc tính chi phí.

Vui lòng tải xuống gói hoặc cài đặt API từ PyPI bằng cách sử dụng lệnh pip sau trong bảng điều khiển:

pip install aspose-tasks

Tính toán dự án MS theo cách thủ công bằng Python

Chúng ta có thể đặt chế độ tính toán thành thủ công và xác minh nó bằng cách thực hiện theo các bước bên dưới:

  1. Tạo một thể hiện của lớp Project.
  2. Đặt chế độ tính toán thành MANUAL.
  3. Chỉ định ngày bắt đầu dự án.
  4. Thêm nhiệm vụ mới, ví dụ: Nhiệm vụ 1 và Nhiệm vụ 2.
  5. Đọc thuộc tính nhiệm vụ.
  6. Sau đó, khởi tạo một đối tượng của lớp TaskLinks và liên kết các tác vụ.
  7. Cuối cùng, xác minh ngày bắt đầu và ngày kết thúc của Nhiệm vụ 2.

Mẫu mã sau đây cho biết cách tính toán thủ công một dự án bằng Python.

# Ví dụ mã này trình bày cách tính toán dự án MS bằng chế độ tính toán thủ công trong Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Tạo một phiên bản của Dự án
project = tasks.Project()

# Đặt chế độ tính toán thành Thủ công
project.calculation_mode = tasks.CalculationMode.MANUAL

# Đặt ngày bắt đầu dự án
project.start_date = datetime(2015, 4, 15)

# Thêm nhiệm vụ mới
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Các thuộc tính cần thiết được đặt ở chế độ thủ công
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")

# Liên kết hai nhiệm vụ với nhau ngày của chúng sẽ không được tính toán lại ở chế độ thủ công
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Không có thay đổi về ngày của Nhiệm vụ 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

Tính toán dự án tự động trong Python

Tương tự, chúng ta có thể tính toán dự án MS bằng chế độ tính toán tự động bằng cách làm theo các bước được đề cập trước đó. Tuy nhiên chúng ta chỉ cần thiết lập chế độ tính toán thành tự động ở bước 2 là được.

Mẫu mã sau đây cho thấy cách tính toán dự án MS bằng chế độ tính toán tự động trong Python.

# Ví dụ mã này trình bày cách tính toán dự án MS bằng chế độ tính toán tự động trong Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Tạo một phiên bản của Dự án
project = tasks.Project()

# Đặt chế độ tính toán thành Tự động
project.calculation_mode = tasks.CalculationMode.AUTOMATIC

# Đặt ngày bắt đầu dự án
project.start_date = datetime(2015, 4, 15)

# Thêm nhiệm vụ mới
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Liên kết nhiệm vụ
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Xác minh ngày tính toán lại
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

Không có chế độ tính toán dự án trong Python

Chúng ta có thể đặt chế độ tính toán thành KHÔNG và xác minh nó bằng cách thực hiện theo các bước dưới đây:

  1. Tạo một thể hiện của lớp Project.
  2. Đặt chế độ tính toán thành Không.
  3. Chỉ định ngày bắt đầu dự án.
  4. Thêm một nhiệm vụ mới, ví dụ: Nhiệm vụ 1.
  5. Đọc thuộc tính nhiệm vụ.
  6. Sau đó, đặt thời lượng nhiệm vụ tính bằng ngày.
  7. Cuối cùng, xác minh ngày bắt đầu và ngày kết thúc của Nhiệm vụ.

Mẫu mã sau đây cho biết cách đặt chế độ tính toán dự án MS thành không bằng cách sử dụng Python.

# Ví dụ mã này trình bày cách đặt chế độ tính toán dự án MS là KHÔNG trong Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Tạo một phiên bản của Dự án
project = tasks.Project()

# Đặt chế độ tính toán thành Không có
project.calculation_mode = tasks.CalculationMode.NONE

# Thêm nhiệm vụ mới
task = project.root_task.children.add("Task")

# Lưu ý rằng ngay cả id cũng không được tính
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")

# Đặt thuộc tính thời lượng
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

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử thư viện mà không bị giới hạn về đánh giá.

Tính toán dự án bằng Python – Tài nguyên học tập

Bên cạnh việc triển khai các chế độ tính toán và tính toán lại tiến độ và thời lượng dự án MS, bạn có thể khám phá nhiều tính năng khác của thư viện bằng cách sử dụng các tài nguyên bên dưới:

Phần kết luận

Trong bài viết này, chúng ta đã học cách thiết lập các chế độ tính toán dự án theo chương trình trong Python. Chúng ta cũng đã thấy cách tính giá trị của các thuộc tính phụ thuộc trong từng chế độ tính toán. Bằng cách tận dụng Aspose.Tasks for Python thông qua .NET, bạn có thể dễ dàng nhúng chức năng đó vào các ứng dụng Python của mình. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi diễn đàn hỗ trợ miễn phí của chúng tôi.

Xem thêm