0

DroolsプラグインでEclipseを使用してルールを作成しています。私はビジネスルールを作成したいと思っています。主な目的は、ユーザーがルールを作成するために使用できる一連のオプションをユーザーに提供することです。例:Appleが3色しか持てない場合:ユーザーが自分のルールで使用できるオプションを事前に知ることができるように、ドロップダウンなどのオプションを提供したいと思います。出来ますか?dslを作成していますが、ビジネスルールに上記の機能を提供できません。基本的なdslの実装でもエラーが発生します。dslを追加するコードは、私のRuleRunner class()では次のとおりです。

InputStream ruleSource = RuleRunner.class.getClassLoader()。getResourceAsStream( "/ Rule1.dslr");

InputStream dslSource = RuleRunner.class.getClassLoader()。getResourceAsStream( "/ sample-dsl.dsl");

//DSLを使用してルールをロードします

addRulesToThisPackage.addPackageFromDrl(new InputStreamReader(ruleSource)、new InputStreamReader(dslSource));

作業ディレクトリにsample-dsl.dslとRule1.dslrの両方があります。

パッケージにDSLを追加するときにエラーが発生しました(最後の行)

エラースタック:

スレッド「メイン」の例外java.lang.NullPointerException

  at java.io.Reader.<init>(Unknown Source)

  at java.io.InputStreamReader.<init>(Unknown Source)

  at com.org.RuleRunner.loadRuleFile(RuleRunner.java:96)

  at com.org.RuleRunner.loadRules(RuleRunner.java:48)

  at com.org.RuleRunner.runStatelessRules(RuleRunner.java:109)

  at com.org.RulesTest.main(RulesTest.java:41)

私のdslファイルには、オンラインドキュメントに従って基本的なマッピングがあります。

私が作成したDSLルールは次のとおりです。

エキスパンダーサンプル-dsl.dsl

ルール「AステータスがBステータスを変更する」

  when

        There is an A

           -        has an address

         There is a B

             - has name

  then

        - print updated A and Aaddress

終わり

私はEclipseでDSLを作成しました。

パッケージにロードするために追加したコードは正しいですか?または私は何かが欠けていますか????

私のプログラムはDSLを見つけることができないようですか?

助けてください。ユーザーフレンドリーなビジネスルールを作成するための正しい方向を教えていただけますか?

ありがとう。

J

4

1 に答える 1

1

ナレッジセッションを作成するために使用しようとしている方法についてはよくわかりませんが、アプリケーションで使用されている方法の例を示します。

KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(<KnowledgeBaseConfiguration>);
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newClassPathResource( "rules/myRuleFile.drl", getClass() ),
              ResourceType.DRL );
kbuilder.add( ResourceFactory.newClassPathResource( "rules/myDslFile.dsl", getClass() ),
              ResourceType.DSL );
if ( kbuilder.hasErrors() ) {
    System.err.println( builder.getErrors().toString() );

}
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );

制約が組み込まれたルールファイルを作成する機能をユーザーに提供する限り、Drools Guvnorを見たことがありますか?(http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-guvnor /html_single/index.html)まだプロジェクトに組み込んでいませんが、少し調べました。ユーザーがルールファイルを作成および編集できるようにするために必要な機能を提供する可能性があると思います。幸運を!

于 2010-07-02T10:47:28.670 に答える