2016-11-10 11 views
0
内のネットワーク呼び出し私は データ収集、複数の外部システムからのを、そして(トランザクションエンティティ+集められたデータ)に基づいて、いくつかのビジネスの意思決定を扱う時に動作するトランザクションシステムの

一つを作ります。複数のサブシステムからのDroolsルールエンジン:Droolsの

  1. 収集データ:

    は現在、私たちは、次の手順に従ってください。

  2. droolsへの入力として(ギャザーデータ+トランザクションエンティティ)を使用し、そこからビジネス上の決定を導き出す。上記のアプローチの

一つの大きな短所は、私も、データの有用性を気にすることなく、事前に(高価なネットワーク呼び出しを)すべてのデータを収集するために持っていることです。

私がしようとしているのは、ルール実行レイヤーに移動してサービス呼び出しを遅延させることです。 私はトランザクションの実体そのものの中で既に利用可能なデータを決定することができるならば、サービスコールを避けるためにdrools決定木を活用するつもりです。

思考プロセスを検証したい(つまり、ルール実行の一部としてサービスコールを行うのは良い方法です)。

誰でも同じ意見を共有することができます。どんなリードも評価されます

+0

あなたは主な問題を決定したようです:ネットワークコール。特定の呼び出しを避けることによる時間の増加が、そのロジックを作成する追加の作業の価値がある場合は、それだけです。あなたが提供したインプットから他に何を期待していますか? – laune

+0

私は自分のコード内でそのロジックを作成したくありません(同じものがハックのようです)。代わりに、垂れ流す自体が(決定木を通して)同じ論理を世話する正しい場所であるかどうか疑問に思っていました。思考プロセスを有効にしたいだけです(ルール実行の一環としてサービスコールを行うのは良い方法です)。 – Harshit

答えて

0

(まだ)持っていない事実を理由に考えることはできません。あなたが実際にあなたが何を必要とするかを決定させたなら、あなたは以下の簡単な例に従ってルールを書くことができます。

rule "x and y, not z" 
when 
    Dimension($id: id, coord == "x") 
    Dimension(id == $id, coord == "y") 
    not Dimension(id == $id, coord == "z") 
then 
    fetch and insert missing Dimension 
end 

rule "x, y and z" ... end 

このフェッチと挿入のプロセスは、同期して実行してはならないことに注意してください。イベントキューとして要求を挿入することができます - Javaから何かを使用してください。