Propriedade Application.GetCacheStatusForProject (Project)
Obtém o estado de um trabalho especificado que o cache ativo em Project Professional envia para o Sistema de Fila do Project Server. PjCacheJobState somente leitura.
Sintaxe
expression. GetCacheStatusForProject
expressão Uma variável que representa um Aplicativo objeto.
Parâmetros
Nome | Obrigatório/Opcional | Tipo de dados | Descrição |
---|---|---|---|
ProjectName | Obrigatório | String | O nome do projeto; pode ser o projeto ativo ou um projeto diferente que está aberto. |
ProjectJobType | Obrigatório | PjJobType | Pode ser uma das constantes PjJobType para a operação salvar, publicar ou fazer check-in. |
Comentários
Quando você usa Project Professional para executar uma operação que usa um dos métodos de fila no Project Server, como salvar uma atualização, publicar ou fazer check-in em um projeto, o cache Project Professional envia uma solicitação de trabalho para o Sistema de Fila do Project Server. A propriedade GetCacheStatusForProject expõe o status do trabalho de fila.
Exemplo
A macro TestCacheStatus no exemplo a seguir salva o projeto ativo, chama WaitForJob para aguardar a conclusão da fila com êxito e, em seguida, publica o projeto. A macro WaitForJob verifica periodicamente o estado do trabalho chamando GetCacheStatusForProject e imprime o status do trabalho na janela Imediata. Se encontrar o mesmo status mais de dez vezes consecutivas, a macro WaitForJob pressupõe que há um problema e sai. O exemplo usa um método Sleep que pode ser executado em uma instalação do Project de 64 bits ou em uma instalação do Project de 32 bits.
Option Explicit
#If Win64 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
' Save and publish the active project; wait for the queue after each operation.
Sub TestCacheStatus()
Const millisec2Wait = 500 ' Number of milliseconds to sleep between status messages.
Application.FileSave
If WaitForJob(PjJobType.pjCacheProjectSave, millisec2Wait) Then
Debug.Print "Save completed ..."
Application.Publish
If WaitForJob(PjJobType.pjCacheProjectPublish, millisec2Wait) Then
Debug.Print "Publish completed: " & ActiveProject.Name
End If
Else
Debug.Print "Save job not completed"
End If
End Sub
' Check the cache job state for a save, publish, or check-in operation.
Function WaitForJob(job As PjJobType, msWait As Long) As Boolean
' Number of times the same job status is repeated until WaitForJob exits with error.
Const repeatedLimit = 10
Dim jobState As Integer
Dim previousJobState As Integer
Dim bail As Integer
Dim jobType As String
#If Win64 Then
Dim millisec As LongLong
millisec = CLngLng(msWait)
#Else
Dim millisec As Long
millisec = msWait
#End If
WaitForJob = True
Select Case job
Case PjJobType.pjCacheProjectSave
jobType = "Save"
Case PjJobType.pjCacheProjectPublish
jobType = "Publish"
Case PjJobType.pjCacheProjectCheckin
jobType = "Checkin"
Case Else
jobType = "unknown"
End Select
bail = 0
If (jobType = "unknown") Then
WaitForJob = False
Else
Do
jobState = Application.GetCacheStatusForProject(ActiveProject.Name, job)
Debug.Print jobType & " job state: " & jobState
' Bail out if something is wrong.
If jobState = previousJobState Then bail = bail + 1
If bail > repeatedLimit Then
WaitForJob = False
Exit Do
End If
previousJobState = jobState
Sleep (msWait)
Loop While Not (jobState = PjCacheJobState.pjCacheJobStateSuccess)
End If
End Function
A seguir está a saída para um tempo de espera de 500 milissegundos entre mensagens de status. Se a latência de rede for maior, defina o tempo de espera para um intervalo mais longo. Para encontrar o significado dos valores de saída, consulte a enumeração PjCacheJobState . Por exemplo, o valor 4 é a constante pjCacheJobStateSuccess . Se você executar TestCacheStatus quando não houver alterações feitas no projeto, o estado do trabalho de salvamento será repetido muitas vezes como -1, que é o valor da constante pjCacheJobStateInvalid .
Save job state: 4
Save completed ...
Publish job state: -1
Publish job state: 3
Publish job state: 3
Publish job state: 4
Publish completed: WinProj test 1
Valor de propriedade
PJCACHEJOBSTATE
Confira também
Enumeração PjCacheJobStatePjJobType
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.