Я пытаюсь написать правило для события, которое должно проверить, что-то происходит в течение некоторого временного окна после чего-то еще. На данный момент код выглядит следующим образом (он работает правильно):Как написать динамические временные правила в 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
На данный момент 30s
эффективно жестко. Я читал, что если вы хотите параметризовать правила, вам нужно использовать другие факты, заявленные в КБ, но я не могу понять, как это сделать для временных правил.
Итак: как я могу «настроить» 30s
в этих правилах, чтобы изменить значение вне приложения? Что-то вроде этого: MessageHandleStartedEvent(this after [ $duration ] ...