Je dois écrire une règle dans Drools 6.5 qui vérifie l'existence d'un événement de type A. Il y a une deuxième classe nommée B qui a un champ date
.Drools LHS vérifier contre le fait optionnel
Tout en vérifiant l'existence d'un événement A
, si au moins un événement de type B
existe, A
doit se produire après la dernière B.date
pour que la règle au feu; Dans le cas contraire, la règle doit être déclenchée quels que soient les événements B
.
Les deux types d'événement A
et B
ont leur propre champ d'horodatage explicite.
when
// TODO if at least one event of type B exists, A must happen after max(b.date). Otherwise, the rule must fire regardless of any B
$a : A(...)
then
...
Comment effectuer cette vérification?
EDIT: Si aucun B
n'est présent dans la mémoire de travail et que A
répond aux exigences, la règle doit être déclenchée indépendamment.
Cela rend le déclenchement de la règle dépendant d'au moins un 'B' existant. J'ai besoin de cette règle pour savoir si des 'B' sont en mémoire de travail. – fzwd
Ajouter une autre règle (vous pouvez combiner le LHS en utilisant 'ou') nécessitant l'absence de tout Bs et un motif A sans la contrainte. Je ne peux pas ajouter cela à la réponse puisque votre question ne le dit pas. – laune
Merci pour votre réponse. J'ai édité et clarifié la question. – fzwd