J'essaie d'écrire une règle pour un événement qui doit vérifier si quelque chose se produit pendant une fenêtre temporelle après qu'un autre événement se soit produit. Au moment où le code ressemble à ceci (il fonctionne correctement):comment écrire des règles temporelles dynamiques dans drools-fusion
rule "Detect BPM reseed not starting when requested from Mart"
when
$martDailyRefreshRequestedEvent: MessageSentEvent(
$correlationId: correlationId,
$when: timestamp,
messageTypeName == "MartDailyRefreshCompletedEvent")
from entry-point "mart"
not (MessageHandleStartedEvent(
this after[0ms, 30s] $martDailyRefreshRequestedEvent,
correlationId == $correlationId,
messageTypeName == "MartDailyRefreshCompletedEvent")
from entry-point "bpm")
then
notifier.notify("BPM not responding to MartDailyRefreshCompletedEvent quick enough",
String.format(
"At **%s** Mart sent out a **MartDailyRefreshCompletedEvent**.\n\n**BPM** was supposed to react to it within **30 seconds**.",
$when));
end
Au moment où le 30s
est efficacement codé en dur. J'ai lu que si vous voulez paramétrer des règles, vous devez utiliser d'autres faits affirmés dans la base de connaissances, mais je ne peux pas comprendre comment le faire pour les règles temporelles. Donc: Comment puis-je 'configurer' le 30s
dans ces règles afin que je puisse changer la valeur en dehors de l'application? Quelque chose comme ceci: MessageHandleStartedEvent(this after [ $duration ] ...