問題タブ [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.
java - 小さなRule-Engineを開発するためのシンプルなデザインパターン
Java値オブジェクトに対して検証された多くのルールを取り、結果を生成する要件があります。(当社ではルールエンジンアプリを使用することはできません。多くの手続きと多くの質問に答える必要があります)。したがって、ルールを Java コードで ifs として実装するのではなく、単純で拡張可能な小さなルール エンジンを実装することを提案しました。どの設計パターンに従うべきか?
定義されたルールの大まかな xml 構造を下に追加しました。
java - Drools - ルール条件または結果内で複雑なことを行う
私の会社では、いくつかのプロジェクトで Drools を BRE として使用する予定です。ここで、いくつかのベスト プラクティスを定義しようとしています。
私の質問は、ルール条件/結果内で何をすべきか、何をすべきでないかです。Java を直接記述したり、メソッドを呼び出すことができる場合 (たとえば、ワーキング メモリ内のグローバル オブジェクトから)。
例。一般的なオブジェクト (Person など) を評価するルールが与えられた場合、プロパティは true に設定されます。現在、その特定のプロパティは、データベースに移動してその情報をフェッチするオブジェクトに対してのみ定義できます。したがって、それを実装するには2つの方法があります。
代替案 A:
- データベースに移動し、オブジェクト プロパティ (true/false、コード) をフェッチします。
- オブジェクトをワーキングメモリに挿入する
- ルールを評価する
代替 B:
- データベースに接続するメソッドを持つグローバル オブジェクトを挿入し、指定されたオブジェクトのプロパティを確認します。
- 評価するオブジェクトをワーキングメモリに挿入する
- ルールでは、グローバル オブジェクトを呼び出して、データベースへのアクセスを実行します。
それらのどれがより良いと考えられていますか? 私は A が本当に好きですが、B の方が簡単な場合もありますが、データベースからの例外のようなものが発生した場合はどうなりますか?
私は、Packt Publishing の Drools 5.0 Book に実装されている代替 B を見てきましたが、それらは嘲笑を行っており、データベースにアクセスすることの実際の意味についてはまったく話していません。
ありがとうございました、
java - 簡単なルールエンジンが必要だと思いますか?
この問題を解決するための最善のアプローチについてアドバイスが必要です。
私はDROOLS、JavaRuleEngineなどを調査しました。これらはすべて強力であり、良い点があります。どちらが(もしあれば)私にとって最良の選択になるかわかりません。
1つのビジネスオブジェクトがあります。(デモ用に簡略化)
これらのフィールドを中心に複雑なルールを作成できるようにするエディターをWebアプリケーションで作成する必要があります。複雑なネストされたAND/ORロジックをサポートする必要があります。基本的な演算子が必要なだけで、ルールは単純にtrueまたはfalseに評価されます。ルールがtrueまたはfalseと評価された場合、それぞれ1つのアクションが発生します。
例えば、
firstName CONTAINS "value" AND(lastName EQUALS "input" OR department CONTAINS "input")
自分でパーサーを書いて、自分のコードでロジックを評価するだけでいいのではないかと思っていました。どうしたらいいかわからないので、何かアドバイスや読み物へのリンクをいただければ幸いです。調査できる特定のデザインパターンはありますか?
この問題をどのように解決しますか?ルールエンジンに関する1つの懸念は、単純な問題には複雑すぎるのではないかということです。
logic - 生産ルールによる数独の解決
Droolsを推論エンジンとして、プロダクションルールを使用して数独パズルを解こうとしています。Droolsが詰め込まれた例の1つは、まさに数独ソルバーです。関連するルールは次のとおりです。
...しかし、それは正しく機能しません。常に、グリッド内の1つ以上のセルが空になり、プログラムはパズルを「未解決」として報告します。
数独のための実用的な推論規則ベースのソルバーを構築した人はいますか?使用する言語やエンジンは関係ありません。Droolsに適応できるように、一連のルールを確認したいと思います。
oracle - 構成ルール エンジン - 代替案?
私は、「A Disallows B」または「X Requires Y」という形式のルールを使用して、複雑なアイテムを構成できるアプリケーションを作成するソフトウェアを開発しています。
より完全に説明するために、いくつかのサブフォルダーを持つレベルのフォルダーがあり、それらのサブフォルダーのそれぞれにいくつかのアイテムがあると想像してください。その意図は、ユーザーが有効な選択のコレクションを作成するのに役立つ方法でアイテム間の関係を表現することです。
したがって、実際のルールは「All(A, B, C) Disallows Any(X, Y, Z)」に似ており、ユーザーが A、B、および C を選択した場合、X のいずれも選択できないことを示しています。 Y、または Z。基本的には単なるブール論理です。
A を選択した場合は B も選択する必要があるなど、追加のタイプがありますが、そのすべての詳細に入る価値はありません。
これはビジネス ロジックではなく (少なくとも通常の意味では)、ルールはいつでも変更される可能性があるため (変更される可能性があります)、文字列から読み取って解釈するか、複雑なデータベース構造を介して接続する必要があります (から離れることを好む)。
本当のポイントは、この種の実行時の動作を扱う何らかのシステムまたはフレームワークが存在するかどうかです。Oracle には、私が話していることを正確に実行する「Oracle Configurator」と呼ばれるものがあることは知っていますが、法外に高価だと思います。
プロジェクトはほぼ終了し、「動作する」システムを構築しましたが、事後分析を行って、より良く/より速く/より安く行うことができたかどうかを確認しようとしています.
c# - C# の複雑な if/else 問題のライブラリ/アルゴリズム
アンケート エンジンを実装する必要があり、1 つの質問に対する各回答がまったく異なる結果になる可能性があります。
したがって、それぞれに 10 個の答えがある 10 個の質問がある場合、10 の 10 乗の可能性があります。
これは、スクリプト化された AI のようなものになるはずです...
では、このような問題に対してどのようなルール エンジンまたは実装方法を使用すればよいでしょうか。
この種のアルゴリズムは少し単純すぎると思いますか?
これに関するアドバイスをありがとう。
scope - Droolsを使用してローカルルール変数を宣言します
Droolsルールエンジンを使用してローカル変数をローカルルール定義に作成することは可能ですか?
サンプルコードを書きましたが、コンパイルされていません。この例は、ローカル宣言に関するアイデアを公開するためのものです(私はそれが間違っていることを知っています)
エラーメッセージは次のとおりです。
位置[25,2]は、次の行で定義されます。
java - Drools は私のシナリオに適用できますか? そうでない場合、他に何がありますか?
シナリオ 1. エンド ユーザーは、フロント エンドからルールを作成できる必要があります。ルールには条件があります (ユーザーが作成したルールに基づいて .drl ファイルを動的に変更する方法が Drools でわかりませんでした)。
ルールは階層で定義できる必要があり、同じルールが複数の階層に属することができます
エンド ユーザーは、ルールの実行をトリガーできる必要があります。ここでの注意点は、ファクトが KnowledgeSession で利用できない可能性があることです。ルールは、基礎となるデータベースに従って関連するクエリに変換され、基礎となる DB でトリガーされます。
したがって、エンティティの限られた知識でルールが作成されるという考え方です->ルールがトリガーされると、基礎となるデータベースと連携して、基礎となるデータベースに存在するエンティティに関連するクエリを作成します
カスタム実装を構築する代わりに、別のルール エンジンである Drools で何かできるでしょうか?
java - リストのすべての要素をチェックする (Drools Expert)
Drools Expert でルールを記述しようとしています。when
ルールの部分では、Application
オブジェクトのいくつかのプロパティをチェックします。このオブジェクトにはリストが含まれており、このリスト内の SomeOtherType のすべてのオブジェクトに一連のルールが適用されるかどうかを確認したいと思います。ルールは、そのリスト内のすべてのオブジェクトに対して制約が有効な場合にのみ実行する必要があります。