Prise en compte des évènements métiers (bp)

De Wiki1000

Lorsqu'un processus métier déclenché par un évènement métier ne se déclenche pas, vous pouvez vérifier les points suivants :

  • Vérifier que l'évènement est bien créé
  • Vérifier que la machine est bien associée à la base de données dans lequel se produit l'évènement
  • Vérifier que les évènement sont bien postérieur à la date de démarrage du processus.

Si malgré ces vérifications vous ne pouvez pas diagnostiquer la raison :

  • Exécuter le processus sur une machine locale dans la console de Conception des processus métier
  • Activer la trace des requêtes (Ctrl+T)

Wf-local-machine.png

Vous devez constatez des requêtes périodiquement émises sur la table des évènements, par exemple :

select t0.* from dbo.TDBMEVENT t0
where (((t0.EventDataBaseURL = 'mssql://xxx/dbTestWorkflow?prefix="dbo."') or (t0.EventDataBaseURL IS NULL)) and ((t0.EventDate > Convert(DateTime,'2014-05-21 14:02:25',120)) or ((t0.EventDate = Convert(DateTime,'2014-05-21 14:02:25',120)) and (t0.Sequence > 0))) and (t0.EventQueueName IS NULL))
order by t0.Sequence,t0.EventDate, t0.oid

Dans cette requête :

  • L'URL de la base correspond à la base de données associée au moteur de WF
  • La date correspond à la date de dernière exécution du processus ou à la date de démarrage du processus.
  • La séquence correspond au numéro de séquence de la dernière exécution ou à zéro.
  • EventQueueName IS NULL parce que la classe d'évènement n'est pas basée sur une file d'attente

Récupérez l'évènement censé déclencher votre processus, par exemple le dernier évènement :

select TOP 1 t0.* from dbo.TDBMEVENT t0 order by UpdDate desc

Comparez cet évènement aux critères de sélection de la requête et identifiez la raison pour laquelle l'évènement n'est pas pris en compte.

Outils personnels