规则 B 是否应该在 A 之前触发?因为它对我不起作用。
rule A
salience 0
timer(int: 20s)
when
...
rule B
salience 1
timer(int: 20s)
when
...
编辑:
两者的条件是相等的,因此两者都应该在同一事件上触发,并且为了清楚起见省略了条件。关键是我想在 20 秒超时后触发规则并使它们成为序数,这可能吗?
规则 B 是否应该在 A 之前触发?因为它对我不起作用。
rule A
salience 0
timer(int: 20s)
when
...
rule B
salience 1
timer(int: 20s)
when
...
编辑:
两者的条件是相等的,因此两者都应该在同一事件上触发,并且为了清楚起见省略了条件。关键是我想在 20 秒超时后触发规则并使它们成为序数,这可能吗?
一旦条件评估为真,就会安排带有计时器的规则执行。您尚未显示 A 和 B 的条件,因此无法进行进一步分析。很可能这两个计时器不是在同一时间点启动的,因此到期时间可以按 A < B 排序。如果您在 A 之前需要 B,请为 B 运行计时器。添加一个条件元素让没有计时器的火灾并让 B 的结果插入一个事实来满足这个条件元素。大致:
rule B
timer(int: 20s)
when...
then
insert( new TriggerForA() )
end
rule A
when
$t: TriggerForA()
...
then
delete( $t );
end