Compartilhar via


Propriedade Application.GetCacheStatusForProject (Project)

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.