問題タブ [rule-engine]

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.

0 投票する
6 に答える
4183 参照

c++ - C++ での大規模な決定木ベースの AI の設計パターン

私は現在、c++ で書かれたゲームの AI を書いています。AI は概念的にはかなり単純で、意思決定ツリーを実行して適切なアクションを選択するだけです。以前は意思決定エンジンにプロローグを使用していましたが、他の開発者が c++ を使用しており、プロローグ コードの統合に関するいくつかの問題があるため、現在は c++ に移植しようとしています。

現在、プロローグ (100 以上) には多くの事実とルールがあります。if game_state then do action xyz という形で多くのことを表現します。ほとんどのルールは非常に単純ですが、いくつかはかなり複雑です。私は有限状態マシンのアプローチを検討しましたが、それはより大きな状況にうまく対応できていないようでした。これを C++ でコーディングする最初の試みは、if then else case ステートメントの巨大な悪夢でした。この種のコードがどこにでも現れました:

複雑さはすぐに手に負えなくなりました。

この種の問題を C++ でコーディングする良い方法があれば教えてください。この種の状況に対処するための適切な設計パターンはありますか? ロジックがソース内に含まれている必要はありません。C++ からアクセスできる必要があるだけです。唯一の実際の要件は、適度に高速であることです。

また、ルール エンジンも調べましたが、十分に高速であれば適切である可能性があります。適切なオープン ソースの C++ ルール エンジンがあるかどうか知っていますか?

0 投票する
1 に答える
402 参照

python - データにフィルターを適用するためのフレームワークまたはパターンはありますか?

問題:

Django アプリケーションに、javascript に渡される階層データがいくつかあります。このデータの一部は、javascript 内のいくつかのデータ クラスの状態に基づいて、javascript から除外する必要があります。バックエンド (Django) でフィルターを定義し、JavaScript で適用する方法が必要です。

フィルターは次のようになります。

フィルターは条件付きにすることもできます。

そして、おそらく次のような条件の任意の組み合わせ:

一部のキーには許可された値のセットがあり、他のキーには自由なテキスト フィールドがあります。このシステムは、ビジネス タイプのエンド ユーザーが使用できる必要があります。そうでなければ、このシステムを使用する意味がありません。主な目標は、エンド ユーザーによって完全に管理されるシステムを持つことです。これらの目標のほとんどが実現できれば、私はそれを勝利と考えます。

ルール エンジンはこのシナリオに適していますか? この動作または明確に定義されたパターンを実装するために利用できる python または django フレームワークはありますか?

更新(S.Lottの回答に基づく):

Django ORM を使用してデータをフィルタリングすることについて話しているのではありません。すべてのデータとすべてのルールを JavaScript に渡したいので、JavaScript アプリケーションは「切断」されたままになります。

私が必要としているのは、ユーザーにこれらのルールとルールの組み合わせを定義させ、それらをデータベースに保存する方法です。次に、ページが読み込まれると、このデータとすべてのルールが取得され、ページに配置されます。ルールの定義は、パズルの重要なピースです。

0 投票する
2 に答える
489 参照

oracle - Oracle Rules ManagerとExpression Filterは既存の標準に基づいていますか?

そうでない場合、ルール エンジン ストレージの標準は存在しますか?

また

Oracle Rules Engine構文のC#実装はありますか?

0 投票する
6 に答える
4793 参照

prolog - プロローグ Web プログラミング

職場では、Web アプリのルール エンジンのバックエンドとして Prolog を使用するという議論がありました。

これは既存のシステムにどのように結び付けられますか?

プロローグモジュールの呼び出しを可能にする他の言語用の利用可能なプロローグライブラリはありますか?

0 投票する
2 に答える
886 参照

c# - RuleSetDialog でラムダ式を使用して条件を定義する方法はありますか?

アプリケーションで WF のルール エンジンを使用していますが、一部の条件では、条件のコレクションを検索する必要があります。次のようなことをするのが理想的です:

残念ながら、コレクションの Linq 拡張機能にアクセスできないようです。param forSystem.Data.Linqを渡そうとしましたが、Linq メソッドが表示されませんでした。TypeProviderRuleSetDialog

どんな助けやアイデアも大歓迎です!

0 投票する
2 に答える
2339 参照

java - ルールエンジンによる検証

テキストベース(XMLなし)のメッセージを処理します。私たちの目標はメッセージを検証することです。内容が正しければメッセージは有効です。メッセージのルールを表現するために、XMLで定義された独自の言語を開発しました。より複雑なルールを追加する必要があり、今度は他の代替案を検討して実際のルールエンジンを使用するときが来たと思います。これらのタイプのルールをサポートします。

  • 値のリストまたは正規表現の名前ex{SMITH、MOORE、A *}
  • メッセージに名前があります-
  • メッセージに名前がありません
  • if条件thenname= John else name = Jane 条件は単純であり、論理演算子が含まれていないことに注意してください。

これらのタイプのルールをサポートする必要があります。

  • if then elseしかし、条件に論理演算子が含まれている
  • for ...ループ:
    • メッセージ内のすべてのお客様には、米国から少なくとも1つ、フランスから少なくとも1つが必要です。
    • メッセージに含まれるすべての顧客に対して、米国からの顧客で、年間1000ドル以上を購入している顧客が少なくとも5人必要です。
    • Johnという名前の顧客の場合、姓はDoeである必要があります
  • John<15という名前の顧客の総数
  • 会社の名前は、メッセージ内の別の場所にある会社の名前と同じです。

ルールは、処理するメッセージの種類によって異なります。そのため、次のようないくつかの既存のソリューションを調査していました。

  • ジェス
  • OWL(整合性チェック)
  • Schematron(メッセージをXMLに変換することにより)

Javaで開発することを考えると、最良の選択肢は何でしょうか。考慮すべきもう1つのことは、エラーの説明、エラーの場所(行と列の番号)などのエラー報告を実行できる必要があるということです。

0 投票する
5 に答える
18172 参照

junit - junit を使用した Drools のテスト

junit で drools ルールをテストするためのベスト プラクティスは何ですか?

これまでは、ルールをテストするために dbunit で junit を使用していました。hsqldb に入れられたサンプル データがありました。いくつかのルール パッケージがありましたが、プロジェクトの終わりまでに、特定のルールをテストし、他のルールを起動しないようにするための適切なテスト入力を作成することは非常に困難です。

したがって、正確な問題は、junit でのテストをテスト用の 1 つ以上の特定のルールに制限するにはどうすればよいかということです。

0 投票する
3 に答える
2941 参照

sql - データベースレベルでのビジネスルールの適用

私は、データベースに保存されている大勢の人々の特定のタイプのステータスを判別する必要があるプロジェクトに取り組んでいます。これらのステータスを決定するためのビジネスルールはかなり複雑であり、変更される可能性があります。

例えば、

数十のステータスと、場合によっては数百のグループと属性を掛けます。人、グループ、および属性はすべてデータベースにあります。

これはJavaアプリによって消費されますが、データベースに対して直接レポートを実行できるようにすることも必要なので、計算されたステータスのセットがデータレベルで利用可能であることが最善です。

したがって、現在の設計計画では、各人のブールフラグのセット(hasStatusA?hasStatusB?hasStatusC?)で構成されるテーブルまたはビューを作成します。このように、ステータスCを持つすべての人にクエリを実行する場合、ステータスCを計算するためのすべてのルールを知る必要はありません。旗をチェックするだけです。

(実際には、フラグにはより意味のある名前が付けられることに注意してください:isEligibleForReview?、isPastDueForReview?など)。

したがって、a)これは合理的なアプローチであり、b)もしそうなら、それらのフラグを計算するための最良の方法は何ですか?

フラグを計算するために検討しているいくつかのオプション:

  1. フラグのセットをビューにし、SQLまたはPL-SQL(これはOracle DB)を使用して、基礎となるデータからリアルタイムでフラグ値を計算します。このように、値は常に正確ですが、パフォーマンスが低下する可能性があり、開発者がルールを維持する必要があります。

  2. フラグのセットを静的データで構成し、ある種のルールエンジンを使用して、基になるデータが変更されたときにそれらのフラグを最新の状態に保ちます。このようにして、ルールをより簡単に維持できますが、特定の時点でフラグが不正確になる可能性があります。(このアプローチを採用する場合、この方法でデータベース内のデータを簡単に操作できるルールエンジンはありますか?)

0 投票する
2 に答える
735 参照

rule-engine - 多数の条件とアクションを含むデシジョン テーブル

条件とアクションの数が多い場合 (私の場合、それぞれ 12 の条件と 13 のアクションです!)、手動で決定表を作成/維持することは非常に困難であることがわかります。目の前のケースで可能なルールの数は膨大で (11 の条件では Y/N、12 の条件では 3 通りの選択)、私はびっくりしています。また、これらの条件とアクションを折りたたむ/合体させることはできません。それらはすべて非常に必要とされています。

意思決定表に代わるより良い方法は何ですか? 同じモデルを作成するための一般的な無料ツールは何ですか?

本当にありがとう。

0 投票する
1 に答える
134 参照

java - 相互依存性チェックを備えた検証レイヤー

既存のバックエンドサービスは、より多くのクライアントに対して開かれます(WebフロントエンドクライアントにWebサービスレイヤーを追加します)。
現在、XMLスキーマはDTOの検証に使用されていますが、フロントエンドが制御できないため、拡張テスト(相互依存性テストなど)をフロントエンドレイヤーから新しい「検証レイヤー」に移動する必要があります。
ここで私たちの質問は、これに共通のパターンが存在するかどうかです。RELAX NGまたはルールエンジンの使用に似ていますか?要件は、データ型(ここではXMLスキーマを使用します)と相互依存性をチェックできるようにすることですが、これらの相互依存性は非常に複雑になる可能性があります。入力データでは利用できないデータのチェックが含まれる場合があります(ただし、一部の外部システムでは利用できません)。
そのため、パターンと、パターンの実装を容易にするフレームワークを探しています。