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.