4

私はビジネスルールの世界に不慣れですが、DroolsExpertとDroolsGuvnorの概念を理解したと思いますが、Expertと比較してGuvnorを正確に使用する方法/時期/理由についてはまだ少し混乱しています。また、彼らがお互いを排除するか、能力があるか、あるいは並んで働くことを好むかどうか。以下は、主にアプリケーションの保守性に焦点を当てた、私の懸念の背後にあるパズルと少しの説明のいくつかのハイライトされたトピックです。

Guvnorには、Expertで利用できるすべての機能に加えてその他の機能がありますか?

Guvnorは、ルールの保存(バージョン管理を含む)を制御し、サービスを他のアプリの使用に公開するビジネスルール管理システム(BRMS)であることを知っています。Guvnorには、ルールを生成するためのUI(テキストとグラフィック)とそれらを実行するためのエンジンが含まれているため、この意味で、エキスパートシステムのすべての機能が含まれていると思います。私の要件に基づいて、Guvnorが私に必要なものであると確信していますが、その後何かのためにDrools Expertが必要ですか?

言い換えれば、Drools ExpertはGuvnorには存在しない何かを提供しますか?

Guvnorでのテストルール

私が見たDroolsに関する多くのチュートリアルは、ルールが単純なjUnitテストでテストされるTDDの例から始まります。ルールがGuvnorにインポートされたら(またはそこで生成された後)、そのルールの単体テストを使用/作成する方法はありますか?

テストは公開インターフェース(REST)のみを介して実行する必要がありますか?

システムのユーザーが独自のルールを開発する場合、テストを作成することは期待していません。ここでは主に「コア」ルールとその保守性に関心があります。

「コア」ルールの場合、それらをバージョン管理システムに保存し、システム全体のスケジュールされた更新時にGuvnorにインポートする必要がありますか?この場合、単体テストはこれらのルール用に記述され、ビルドサイクルの一部として自動的に実行されます。

前もって感謝します。

4

1 に答える 1

9

あなたの質問の 1 つに基づいて、最初に解決しなければならないことがあります。本質的に:

  • エキスパートは、ルール エンジン ランタイムです。
  • Guvnor は、後で Expert で実行されるルールを作成および保存するためのツールです。

Guvnor は、テスト ハーネスに必要なものを除いて、ルールのランタイムを提供しません。ランタイム環境には常に Expert が必要です。Guvnor を使用すると、ルールを管理して保存できます。また、ガイド付きエディターや Web デシジョン テーブルなど、いくつかの便利な GUI ツールも提供します。ただし、Eclipse などの IDE でルールを編集し、Guvnor WebDav Eclipse プラグインを使用してそれらを Guvnor にプッシュすることもできます。

通常、Guvnor Web アプリケーションを 1 つのサーバーに配置し、アプリケーションを別のサーバーに配置します。コンパイル済みのルールを Guvnor からアプリケーション ビルドにダウンロードし、アプリケーションと共にデプロイできます。または、コードで URL リソースを定義してナレッジ ベースを作成し、Guvnor パッケージの URL を指定することもできます。その場合、アプリケーションは起動時にナレッジ ベースをロードし、実行時に再ロードできます。

たとえば、次のコードは、"Approved" というパッケージ スナップショットを、ナレッジ ベースを構築するためのリソースとしてダウンロードします。

UrlResource urlResource = 
    (UrlResource) ResourceFactory.newUrlResource(
        "http://my.guvnor.local/.../package/mypackage/Approved");
urlResource.setBasicAuthentication("enabled");
urlResource.setUsername("myusername");
urlResource.setPassword("mypassword");
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
builder.add(urlResource, resource.getType());

編集- Guvnor でルールが変更されたときに実行時にルールをリロードしたい場合は、KnowledgeAgent を見てください。

私が Guvnor を使用する主な理由は、非技術者がデシジョン テーブルと DSL ベースのガイド付きエディターを使用してルールを作成できるようにすることです。

私は Eclipse で技術的なルールを編集するのが好きです。そこでは、それらに関する単体テストを簡単に作成し、期待どおりに動作していることを評価できます。Guvnor のテスト機能よりもずっと簡単だと思います。また、Guvnor はいくつかのバージョン管理を提供していますが、技術的なルールのバージョン管理としては Subversion/Git の方がずっと好きです。

また、Eclipse で DSL を作成し、それを Guvnor にデプロイします。これにより、ガイド付きルールは、技術者以外のユーザーにとって非常に簡単に操作できるようになります。

テスト規則

テストに関しては、いくつかのオプションがあります。Guvnor にはテスト機能があり、さまざまな入力に基づいて期待値を記述できます。ただし、個人的には、その方法は扱いにくく、使用が制限されていると感じています。私は Java/JUnit でテストを書くことをはるかに好みます。

まず、DRL で記述された 1 つまたは 2 つの技術ルールをロードし、必要に応じてアクティブ化されていることを評価し、必要に応じて推論された事実を生成する単純な単体テストを作成できます。

より複雑なテストでは、Guvnor でパッケージを使用してナレッジ ベースを作成し、ファクトを挿入してルールを実行するテストを作成し、ガイド付きエディターで構築されたルールを含め、パッケージ全体が正しく機能していることを評価します。意思決定表。

Guvnorのその他の用途

Guvnor エディターの機能がより豊富になり、単なるルール以上のエディターおよびリポジトリーになりつつあることは注目に値します。たとえば、BPM プロセス用の豊富なツールがあり、これはすぐに Eclipse などの IDE で得られるものよりも優れたものになるはずです。

概要

すべてのルールが自分自身や他の開発者によって DRL で記述されている場合、Guvnor を使用するメリットはほとんどありません。実際、私はそれが邪魔だと思うでしょう。ただし、ガイド付きエディターまたはデシジョン テーブルを利用したい場合、または「ビジネス」ユーザーにいくつかのルールを管理させたい場合は、Guvnor を詳しく調べる必要があります。

于 2012-12-14T10:54:51.480 に答える