Implementar modos de cálculo do MS Project em Python

O Microsoft Project oferece três modos de cálculo: automatizado, manual e nenhum. Cada modo oferece um nível diferente de controle sobre como o projeto é atualizado e recalculado. Neste artigo, aprenderemos como implementar os modos de cálculo do MS Project programaticamente em Python. Esteja você migrando do agendamento manual para o agendamento automatizado ou precise de flexibilidade no gerenciamento dos prazos do seu projeto, este artigo fornecerá as informações e os recursos necessários para essa transição. Vamos começar!

Este artigo cobre os seguintes tópicos:

  1. API Python para calcular o projeto programaticamente
  2. Cálculo manual do projeto
  3. Cálculo Automático do Projeto
  4. Sem modo de cálculo de projeto

API Python para calcular o projeto programaticamente

Usaremos a API Aspose.Tasks for Python para implementar o projeto MS modos de cálculo. Ele fornece os seguintes modos de cálculo para calcular os valores das propriedades dependentes:

  • Nenhum – Este modo define apenas as propriedades necessárias e não recalcula datas e custos do projeto.
  • Manual – Este modo define apenas propriedades de objetos dependentes sem recálculo de datas e custos do projeto.
  • Automático – Este modo recalcula automaticamente as datas do projeto e as propriedades de custo.

Por favor, baixe o pacote ou instale a API do PyPI usando o seguinte comando pip no console:

pip install aspose-tasks

Calcule o MS Project manualmente em Python

Podemos definir o modo de cálculo como manual e verificá-lo seguindo as etapas abaixo:

  1. Crie uma instância da classe Project.
  2. Defina o modo de cálculo para MANUAL.
  3. Especifique a data de início do projeto.
  4. Adicione novas tarefas, por exemplo, Tarefa 1 e Tarefa 2.
  5. Leia as propriedades da tarefa.
  6. Depois disso, inicialize um objeto da classe TaskLinks e vincule as tarefas.
  7. Por fim, verifique a data de início e término da Tarefa 2.

O exemplo de código a seguir mostra como calcular manualmente um projeto em Python.

# Este exemplo de código demonstra como calcular o projeto MS usando o modo de cálculo manual em Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Crie uma instância do projeto
project = tasks.Project()

# Defina o modo de cálculo para Manual
project.calculation_mode = tasks.CalculationMode.MANUAL

# Definir data de início do projeto
project.start_date = datetime(2015, 4, 15)

# Adicionar novas tarefas
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# As propriedades necessárias são definidas no modo manual
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")

# Vincular duas tarefas, suas datas não serão recalculadas no modo manual
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Nenhuma mudança nas datas da Tarefa 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

Cálculo automático de projetos em Python

Da mesma forma, podemos calcular o projeto MS usando o modo de cálculo automático seguindo as etapas mencionadas anteriormente. No entanto, só precisamos definir o modo de cálculo como automático na etapa 2.

O exemplo de código a seguir mostra como calcular o projeto MS usando o modo de cálculo automático em Python.

# Este exemplo de código demonstra como calcular o projeto MS usando o modo de cálculo automático em Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Crie uma instância do projeto
project = tasks.Project()

# Defina o modo de cálculo como Automático
project.calculation_mode = tasks.CalculationMode.AUTOMATIC

# Definir data de início do projeto
project.start_date = datetime(2015, 4, 15)

# Adicionar novas tarefas
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# Vincular tarefas
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# Verifique as datas recalculadas
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

Nenhum modo de cálculo de projeto em Python

Podemos definir o modo de cálculo como NONE e verificá-lo seguindo as etapas abaixo:

  1. Crie uma instância da classe Project.
  2. Defina o modo de cálculo como Nenhum.
  3. Especifique a data de início do projeto.
  4. Adicione uma nova tarefa, por exemplo, Tarefa 1.
  5. Leia as propriedades da tarefa.
  6. Depois disso, defina a duração da tarefa em dias.
  7. Por fim, verifique a data de início e término da tarefa.

O exemplo de código a seguir mostra como definir o modo de cálculo do projeto MS como nenhum usando Python.

# Este exemplo de código demonstra como definir o modo de cálculo do projeto MS como NONE em Python.
import aspose.tasks as tasks
from datetime import datetime, timedelta

# Crie uma instância do projeto
project = tasks.Project()

# Defina o modo de cálculo como Nenhum
project.calculation_mode = tasks.CalculationMode.NONE

# Adicione uma nova tarefa
task = project.root_task.children.add("Task")

# Observe que mesmo os ids não foram calculados
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")

# Definir propriedade de duração
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

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar a biblioteca sem limitações de avaliação.

Calcular Projeto em Python – Recursos de Aprendizagem

Além de implementar modos de cálculo e recalcular o cronograma e a duração do projeto MS, você pode explorar vários outros recursos da biblioteca usando os recursos abaixo:

Conclusão

Neste artigo, aprendemos como definir modos de cálculo de projeto programaticamente em Python. Também vimos como os valores das propriedades dependentes são calculados em cada modo de cálculo. Ao aproveitar o Aspose.Tasks for Python via .NET, você pode incorporar facilmente essa funcionalidade em seus aplicativos Python. Em caso de qualquer ambigüidade, sinta-se à vontade para entrar em contato conosco em nosso fórum de suporte gratuito.

Veja também