0

ルール B は A の前にトリガーされるべきであるというのは本当ですか? それは私にはうまくいかないからです。

rule A
        salience 0
        timer(int: 20s)
    when
...

rule B
        salience 1
        timer(int: 20s)
    when
...

編集:
2つの条件は同じです。したがって、両方が同じイベントでトリガーされるはずであり、明確にするために条件が省略されています。ポイントは、20 秒のタイムアウト後にルールをトリガーし、それらを序数にしたいということです。

4

1 に答える 1

1

タイマー付きのルールは、条件が true と評価されるとすぐに実行されるようにスケジュールされます。A と B の条件を示していないため、これ以上の分析はできません。2 つのタイマーがまったく同じ時点で開始されない可能性が非常に高いため、有効期限は 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
于 2015-02-23T06:49:10.423 に答える