2

ユーザーが1つ以上のパターンを選択できるアプリ(Ruby)を作成する必要があります。これらのパターンが一致した場合は、一連のアクションを続行して完了します。私の研究をしている間、私はルールベースのシステムの新しい(私にとって)分野を発見し、それについて読むのに時間を費やしました、そしてそれはまさに私が必要とする種類の機能のようです。

アプリはさまざまなWebサービスと統合され、次のようなルールが許可されます。

Highriseの連絡先が追加され、Zendeskチケットが作成されたら、データベースにメールを追加してください

これを構築するための2つのアイデアがありました。1つ目は、ある種のos DSLを構築して、ルール条件を指定し、ユーザー入力を使用してその場で構築できるようにすることです。

2つ目は、それぞれがパターン/マッチャーとアクションメソッドを持ついくつかのルールクラスを構築することです。パターンは式を評価してtrueまたはfalseを返し、一致が正の場合にアクションが実行されます。

その後、ルールを永続化し、定期的に評価する必要があります。

誰かがこのデザインに光を当てたり、これについてもっと情報を得ることができる場所を指摘したりできますか?

ありがとう

4

2 に答える 2

0

問題をグラフベースの表現で表現できると思いますか?あなたの問題はグラフベースの問題と見なすことができると確信しています

はいの場合は、グラフ変換システムを使用してルールを定義および適用してみませんか。私がお勧めするのはGrGen.NETです。GrGen.NETの使用は、5つのステップに基づいています

  1. メタモデルの定義:ここでは、ビルディングブロック、つまりグラフノードとグラフエッジのタイプを定義します。
  2. ルールセットの定義:ここに、パターン検出ルールを配置できます。さらに、グラフベースのデータ構造を操作するためのルールカプセル化プロシージャを作成できます。
  3. コンパイル:前の2つの手順に基づいて、C#アセンブリ(DLL)が作成されます。RubyからそのようなDLLにアクセスする方法があるはずです。
  4. ルールシーケンスの定義:ルールシーケンスには、個々のルールが実行される構造が含まれています。通常、これはルールが連結された論理構造です。
  5. グラフ変換: DLLにルールシーケンスを適用すると、グラフが変換され、後でエクスポート、保存、またはさらに操作することができます。

GrGen.NETの非常に優れたマニュアルはここにあります:http://www.info.uni-karlsruhe.de/software/grgen/GrGenNET-Manual.pdf

于 2012-12-26T00:26:24.550 に答える
0

Drools、FlexRuleなどの商用ルールエンジンでは、パターンマッチングはRETEアルゴリズムによって処理されます。また、それらのいくつかは、手続き、検証、推論、フロー、ワークフローなど、さまざまなロジックに複数の異なるエンジンを提供します。また、DSLのカスタマイズも提供します。ルールの順序付けと実行は、アジェンダとアクティブ化に基づいて処理されます。エンジンで定義されます。そして、紛争解決戦略は、発砲するための適切なアクティベーションを見つけるのに役立ちます。

ホスト/サービスでホスティングしている商用製品を使用することをお勧めします。また、単純なJson / Xml形式を使用して、ルールサーバーと通信し、ルールを実行します。これにより、おそらく独自の結果を作成するよりも良い結果が得られます。ただし、パターンマッチングエンジンとして独自のものを作成することに興味がある場合は、複雑な本番システムのRETEアルゴリズム、アジェンダ、およびアクティベーションメカニズムを検討してください。

RETEアルゴリズムでは、少なくとも正と負の条件を実装することを検討できます。RETEを実装するには、ベータメモリとアルファメモリ、および左右のアクティベーションをサポートする広告結合ノードを実装する必要があります。

于 2013-09-24T11:13:50.303 に答える