Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Obtient l’état d’une tâche spécifiée que le cache actif dans Project Professionnel envoie au système de file d’attente Project Server. PjCacheJobState en lecture seule.
Syntaxe
expression. GetCacheStatusForProject
expressionUne variable qui représente un objetApplication.
Paramètres
| Nom | Requis/Facultatif | Type de données | Description |
|---|---|---|---|
| ProjectName | Obligatoire | String | Le nom du projet ; Il peut s’agir du projet actif ou d’un autre projet ouvert. |
| ProjectJobType | Obligatoire | PjJobType | Peut être l’une des constantes PjJobType pour l’opération d’enregistrement, de publication ou de case activée. |
Remarques
Lorsque vous utilisez Project Professionnel pour effectuer une opération qui utilise l’une des méthodes de file d’attente dans Project Server, comme l’enregistrement d’une mise à jour, la publication ou l’archivage d’un projet, le cache de Project Professionnel envoie une demande de tâche au système de file d’attente Project Server. La propriété GetCacheStatusForProject expose l’état du travail de file d’attente.
Exemple
La macro TestCacheStatus dans l’exemple suivant enregistre le projet actif, appelle WaitForJob pour attendre la fin de la file d’attente, puis publie le projet. La macro WaitForJob vérifie régulièrement l’état du travail en appelant GetCacheStatusForProject et imprime le status du travail dans la fenêtre Immédiat. Si elle trouve le même status plus de dix fois de suite, la macro WaitForJob suppose qu’il y a un problème et se ferme. L’exemple utilise une méthode de veille qui peut être exécutée dans une installation de projet 64 bits ou 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
Voici la sortie pour un temps d’attente de 500 millisecondes entre les messages de status. Si la latence du réseau est plus importante, définissez le temps d’attente pour un intervalle plus long. Pour trouver la signification des valeurs de sortie, consultez l’énumération PjCacheJobState . Par exemple, la valeur 4 correspond à la constante pjCacheJobStateSuccess . Si vous exécutez TestCacheStatus alors qu’aucune modification n’est apportée au projet, l’état de la tâche d’enregistrement se répète plusieurs fois sous la forme -1, ce qui est la valeur de la 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
Valeur de la propriété
PJCACHEJOBSTATE
Voir aussi
Énumération PjCacheJobStateÉnumération PjJobType
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.