Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Obtém o estado de uma tarefa especificada que a cache ativa no Project Professional envia para o Sistema de Filas do Project Server. PjCacheJobState só de 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 esteja aberto. |
| ProjectJobType | Obrigatório | PjJobType | Pode ser uma das constantes PjJobType para a operação de guardar, publicar ou marcar. |
Comentários
Quando utiliza Project Professional para executar uma operação que utiliza um dos métodos de fila no Project Server, como guardar uma atualização, publicar ou dar entrada de um projeto, a cache de Project Professional envia um pedido de tarefa para o Sistema de Filas do Project Server. A propriedade GetCacheStatusForProject expõe a status da tarefa de fila.
Exemplo
A macro TestCacheStatus no exemplo seguinte guarda o projeto ativo, chama WaitForJob para aguardar que a fila seja concluída com êxito e, em seguida, publica o projeto. A macro WaitForJob verifica periodicamente o estado da tarefa ao chamar GetCacheStatusForProject e imprime a tarefa status para a janela Imediato. Se encontrar o mesmo status mais de dez vezes seguidas, a macro WaitForJob pressupõe que existe um problema e sai. O exemplo utiliza um método Sleep que pode ser executado numa instalação de Projeto de 64 bits ou numa instalação de Projeto 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
Segue-se o resultado de um tempo de espera de 500 milissegundos entre status mensagens. 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, veja a enumeração PjCacheJobState . Por exemplo, o valor 4 é a constante pjCacheJobStateSuccess . Se executar TestCacheStatus quando não forem efetuadas alterações ao projeto, o estado de guardar tarefa repete-se várias 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 PjJobTypePjCacheJobState
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.