Реализация режимов расчета MS Project в Python

Microsoft Project предлагает три режима расчета: автоматический, ручной и никакой. Каждый режим предлагает разный уровень контроля над обновлением и перерасчетом проекта. В этой статье мы научимся программно реализовывать режимы вычислений MS Project на Python. Независимо от того, переходите ли вы от ручного планирования к автоматизированному или вам нужна гибкость в управлении сроками проекта, эта статья предоставит вам информацию и ресурсы, необходимые для такого перехода. Давайте начнем!

В этой статье рассматриваются следующие темы:

  1. Python API для программного расчета проекта
  2. Ручной расчет проекта
  3. Автоматический расчет проекта
  4. Без режима расчета проекта

API Python для программного расчета проекта

Мы будем использовать API Aspose.Tasks for Python для реализации проекта MS режимы расчета. Для расчета значений зависимых свойств предусмотрены следующие режимы расчета:

  • Нет — в этом режиме задаются только необходимые свойства и не производится перерасчет дат и затрат проекта.
  • Ручной – в этом режиме задаются только зависимые свойства объекта без перерасчета сроков и стоимости проекта.
  • Автоматически – в этом режиме автоматически пересчитываются даты проекта и свойства затрат.

Пожалуйста, загрузите пакет или установите API из PyPI, используя следующую команду pip в консоли:

pip install aspose-tasks

Рассчитать MS Project вручную на Python

Мы можем установить ручной режим расчета и проверить его, выполнив следующие действия:

  1. Создайте экземпляр класса Project.
  2. Установите режим расчета РУЧНОЙ.
  3. Укажите дату начала проекта.
  4. Добавьте новые задачи, например, Задача 1 и Задача 2.
  5. Прочтите свойства задачи.
  6. После этого инициализируйте объект класса TaskLinks и свяжите задачи.
  7. Наконец, проверьте дату начала и окончания задачи 2.

В следующем примере кода показано, как вручную рассчитать проект в Python.

# В этом примере кода показано, как рассчитать проект MS, используя режим ручного расчета в Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Создать экземпляр проекта
project = tasks.Project()

# Установите режим расчета «Вручную».
project.calculation_mode = tasks.CalculationMode.MANUAL

# Установить дату начала проекта
project.start_date = datetime(2015, 4, 15)

# Добавляйте новые задачи
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Необходимые свойства задаются в ручном режиме
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")

# Свяжите две задачи вместе, их сроки не будут пересчитываться в ручном режиме.
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Даты выполнения Задания 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

Автоматический расчет проекта в Python

Аналогичным образом мы можем рассчитать проект MS, используя режим автоматического расчета, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить автоматический режим расчета на шаге 2.

В следующем примере кода показано, как рассчитать проект MS с использованием режима автоматического расчета в Python.

# В этом примере кода показано, как рассчитать проект MS с использованием режима автоматического расчета в Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Создать экземпляр проекта
project = tasks.Project()

# Установите режим расчета на автоматический.
project.calculation_mode = tasks.CalculationMode.AUTOMATIC

# Установить дату начала проекта
project.start_date = datetime(2015, 4, 15)

# Добавляйте новые задачи
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Связать задачи
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Проверьте пересчитанные даты
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

В Python нет режима расчета проекта

Мы можем установить режим расчета NONE и проверить его, выполнив шаги, указанные ниже:

  1. Создайте экземпляр класса Project.
  2. Установите режим расчета на Нет.
  3. Укажите дату начала проекта.
  4. Добавьте новую задачу, например, Задача 1.
  5. Прочтите свойства задачи.
  6. После этого установите длительность задачи в днях.
  7. Наконец, проверьте дату начала и окончания задачи.

В следующем примере кода показано, как отключить режим расчета проекта MS с помощью Python.

# В этом примере кода показано, как установить для режима расчета проекта MS значение NONE в Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Создать экземпляр проекта
project = tasks.Project()

# Установите режим расчета на «Нет».
project.calculation_mode = tasks.CalculationMode.NONE

# Добавить новую задачу
task = project.root_task.children.add("Task")

# Обратите внимание, что даже идентификаторы не были рассчитаны.
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")

# Установить свойство продолжительности
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

Получите бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы опробовать библиотеку без ограничений ознакомительной версии.

Вычисление проекта на Python — учебные ресурсы

Помимо реализации режимов расчета и пересчета расписания и продолжительности проекта MS, вы можете изучить различные другие функции библиотеки, используя ресурсы ниже:

Заключение

В этой статье мы узнали, как программно устанавливать режимы расчета проекта в Python. Мы также увидели, как рассчитываются значения зависимых свойств в каждом режиме расчета. Используя Aspose.Tasks for Python через .NET, вы можете легко встроить такую функциональность в свои приложения Python. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем бесплатном форуме поддержки.

Смотрите также