問題タブ [drools-fusion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
drools - 作業メモリーから特定のタイプのファクトを取得する
すべてのファクトを取得する代わりに、作業メモリーから特定のタイプのファクトを取得する必要があります。
以下のように、ワーキングメモリからすべての事実を取得できることを学びました。
作業メモリーから特定のタイプのオブジェクトを取得するためのポインターをいくつか提供してください。
drools - ルールの条件でリトラクトを使用する際の問題
特定のイベントが最後の「m」の期間に「n」回発生したかどうかを検出するルールを作成しようとしています。私はdroolsバージョン5.4.Finalを使用しています。5.5.Finalも試しましたが効果はありません。
Droolsがそれを呼んでいるように、いくつかの条件付き要素があり、蓄積して収集することがわかりました。以下のサンプルルールでcollectを使用しました
終わり
ログを挿入するコードは以下のとおりです。このコードは、3秒ごとにログを挿入し、ルールを実行します。
これで、私が達成できたのは、過去10秒間に上記のLogMessageの存在を確認することです。また、ルールをトリガーする最後の10秒間に発生したLogMessageの正確なセットを見つけることもできました。
問題は、これらのメッセージが処理されたら、次の評価サイクルに参加してはならないということです。これは私が達成できなかったことです。これを例を挙げて説明します。
以下のタイムラインを検討してください。タイムラインには、ログメッセージの挿入と、発生する必要のあるアラート生成の状態が表示されます。
期待される結果
秒- ログ - アラート
0-LogMessage1-アラートなし
3--LogMessage2-アラートなし
6 --LogMessage3 --Alert1(LogMessage1、LogMessage2、LogMessage3)
9--LogMessage4-アラートなし
12--LogMessage5-アラートなし
15 --LogMessage6-Alert2(LogMessage4、LogMessage5、LogMessage6)
しかし、現在のコードで何が起こっているのか
実結果
秒 - ログ - アラート
0-LogMessage1-アラートなし
3--LogMessage2-アラートなし
6 --LogMessage3 --Alert1(LogMessage1、LogMessage2、LogMessage3)
9 --LogMessage4-Alert2(LogMessage2、LogMessage3、LogMessage4)
12 --LogMessage5-Alert3(LogMessage3、LogMessage4、LogMessage5)
15 --LogMessage6-Alert4(LogMessage4、LogMessage5、LogMessage6)
基本的に、すでに処理されてアラート生成に参加しているメッセージを破棄することはできません。リトラクトを使用して、処理されたファクトを作業メモリーから削除しようとしました。しかし、ルールのその部分にリトラクトを追加すると、ルールはまったく実行されなくなりました。リトラクトを追加した後、ルールの実行が停止する理由を理解できませんでした。
どこがおかしいのか教えてください。
drools - Drools 一時ルール
私は Drools の初心者です。ここでは、プロセスが一定時間以上実行されている場合に通知を生成しようとしています - 5 分としましょう。
上記を実現するために、DRL ファイルに次のコードを記述しています。しかし、それは機能していないようです。
drl ファイル
上記の.drl
ファイルには、Message
宣言されたという名前のイベントがあります。ルールは 5 分間実行されているかどうかをチェックmsgtext
し1st message
ています。その場合は、通知を生成する必要があります。この例では、結果を出力しているだけです。
前もって感謝します。私はあなたの助けに感謝します。
drools - Drools イベントの有効期限の問題
現在、drools 5.1 バージョンを使用しています。しばらくしてからイベントを期限切れにしたいと考えています。次のアプローチを試しています。
ルール内で蓄積関数を使用しています。また、インスタンスが作業メモリから取り消されていない (期限切れになっている) ことを観察しました。私は常に同じファクトカウントを取得しています。
しばらくしてイベントを期限切れにするポインタはありますか。
5.3 を試してみたところ、CEP と累積機能のあるルールの場合、有効期限が期待どおりに機能しないことがわかりました。
問題を解決するためのポインタを提供してください。
java - changeset.xml で複数の drl ディレクトリを指定する
現在、drools 5.1.1 を使用しています。changeset を使用して drls で複数のディレクトリを構成しようとすると、最後のディレクトリのみが drools によってスキャンされていることがわかりました。この動作は正しいですか?私の要件は、複数の drl ディレクトリを構成する必要があるということです。代替手段がある場合に備えて、問題を解決するための指針をいくつか提供してください。
drools - Drools Fusion の一時的なオペレーターの「実行中」の問題
Drools Fusion の使用を開始しましたが、temporal オペレーターの実行中に奇妙な問題に直面しました。理由により、たとえばオペレーターが正常に動作した後でも、それを機能させることはできません。
これが私のイベントの宣言です-特定のタイプの間隔が含まれているだけです:
これが私のルールです:
実行しても何も発生しません。
ただし、途中から後に変更すると、次の結果が得られます。
値を見ると、開始タイムスタンプと期間に基づいて、2 番目のイベントが最初のイベント内にあるため、期間が発生するはずであることがはっきりとわかります。
Drools Fusion のバグですか、それとも何か間違っていますか?
ところで-私はクラウドモードで実行しています
drools - イベントベース Drools ルール
Drools Fusion を初めて使用するので、以下の条件のルールを作成できません
- (日付、エラー メッセージなど) でサーバー ログ ファイルを読み取ります。
- 見つかった場合、イベント タイプ: ERROR、イベント メッセージ: "Memory Error"が何らかのイベントをトリガーする必要があります (現時点ではSOP ) 。
- もう 1 時間は、同じイベント メッセージとイベント タイプのイベントをトリガーしてはなりません(ログ ファイルにある場合)。
- 1時間後に同じことが見つかった場合、イベントをトリガーする必要があります
注:ログ ファイルで指定された同じ日付と時刻を使用する必要があります
同じために必要なことをしてください。
drools - イベント処理
Drools は初めてです。Drools Fusion を使用して単純な複合イベント処理 (CEP) アプリケーションを作成しようとしています。
私の要件は
次のような単純な Event クラスがあります。
ルール ファイルは次のとおりです。
テストのために、次のタイムライン 0m、4m、10m、12m でそれぞれ e1、e2、e3、e4 の 4 つのイベントをワーキング メモリに注入しています。
Java クラス ファイル
前のイベントがないため、e1 はルールに合格すると予想されます。また、前のイベントが 6 分離れているため、e3 も合格すると予想しています。
ただし、別の出力が得られます。
出力を期待する
- イベントによる重大なアラート: e1
- イベントによるクリティカル アラート: e3
しかし、私は得ています
- イベントによる重大なアラート: e1
- イベントによる重大なアラート: e2
- イベントによるクリティカル アラート: e3
追加情報: イベント処理に STREAM モードを使用しています。誰でも出力を説明して、どこが間違っているか教えてください。ありがとう!
drools - Drools Fusion イベントの暗黙的なタイムスタンプにアクセスすることはできますか?
既存の Drools Fusion ルールを編集しようとしています。イベントに使用するクラスにはタイムスタンプの種類がないため、ルールは、イベントの作成時に Drools によって暗黙的に追加されたものに依存しています。
ルールの「then」ブロックにコードを追加して、イベントが発生した時間に関連するデータをデータベースから取得したいと考えています。しかし、これらの暗黙のタイムスタンプにアクセスする方法が見つかりません。
これを行う方法はありますか、またはイベント クラスを再定義する必要がありますか?
drools - Drools Fusion-ヘルプが必要
これは、小規模な POC で特定の機能を実装するために使用している DRL です。
これが私の質問です(私が核融合に慣れていないため、理解の欠如から生じた場合はご容赦ください)...
これを行うと、
私はこの出力を期待しています、
しかし、私は、
これは予想される動作ですか?私の理解は間違っていますか?誰かがここで正確に何が起こっているのか教えてもらえますか?
注: セッションは、「ストリーム」モード用に構成されたステートフル セッションです。クロックは SessionPseudoClock です。