1

ilog jrulesでilrmain関数を呼び出すにはどうすればよいですか、暗黙的に呼び出されるのですか、それとも明示的に呼び出す必要がありますか。後者の場合、どのように行うのですか。IBMの資料は、ilrmain関数に関して非常にあいまいです。

4

3 に答える 3

2

IlrMainは、オーバーヘッドをあまりかけずにルールをテストする簡単な方法を提供します。入力変数を定義し、テストケースを作成し、context.executeを使用してルールの実行を呼び出します。実行後、結果を表示できます。

小さな例を次に示します。ローンを付与するかどうかを決定するルールセットを作成したとします。入力はLoanApplicationタイプのアプリケーションと呼ばれ、出力での決定を期待します。IlrMainは次のようになります。

LoanApplication app = new LoanApplication();
app.loanAmount = 5000
Applicant applicant = new Applicant();
app.applicant = applicant;
applicant.dateOfBirth = new ilog.rules.xml.types.IlrDate("1980-01-01");
applicant.income = 2000;
applicant.fixedExpenses = 600;

input = app;
context.execute();

System.out.println("Loan Decision: "+output.decision);

IlrMainを開始するには、[実行] >[構成の実行...]>[ルールプロジェクト]をクリックして、ルールプロジェクトの新しい実行構成を作成します。IlrMain-Functionを使用してプロジェクトを選択し、shureを作成します。関数ilrmainを使用してプロジェクトを起動します[パラメータと引数]で、[すべての値をクリア]を選択して、IlrMainのパラメータが実行に使用されるようにする必要があります。適用して実行

コマンドラインに、ローンの決定が表示されます。何かのようなもの:

Loan Decision: green
于 2012-03-21T14:15:05.177 に答える
1

注:「実行構成」内で、ルールセットの作成を自動化できます。
したがって、ルールを変更するたびに新しいルールセットを手動で作成する必要はありません...
ルールアーティファクトで何かをテストしているときのように、ルールを頻繁に変更する場合、ルールセットをエクスポートするのは面倒です。

あなたのコードもこのように見えるかもしれません: Javaでレポートするか、何かを主張してください... それが役立つことを願っています

IlrSessionFactory factory = new IlrJ2SESessionFactory();
IlrStatelessSession session = factory.createStatelessSession();
IlrSessionRequest sessionRequest = factory.createRequest();
sessionRequest.setRulesetPath(“/RuleAppName/rulesetName”);
sessionRequest.setTraceEnabled(true);
sessionRequest.getTraceFilter().setInfoAllFilters(true);
Map inputParameters = new HashMap ();
Report in_report = new Report(); // no-arg constructor
// ...populate the report...
inputParameters.put("report", in_report);
sessionRequest.setInputParameters(inputParameters);
IlrSessionResponse sessionResponse = session.execute(sessionRequest);
Report out_report = (Report)sessionResponse.getOutputParameters().get("report“);



于 2012-04-18T15:34:35.793 に答える
0

ルールプロジェクトページ/タブで「関数ilrmainを使用してプロジェクトを起動」を選択した後、パラメータページからすべてのパラメータをクリアすることに問題があります。引数を設定せずにilrmainテクニカル関数を実行することはできません。引数式を何かに設定する必要があります。これは空の値である可能性があります。XOMに引数のないコンストラクターがあるとします{Customer()}; 次に、引数式を「new Customer()」に設定します。ilrmainを保存して実行します。CLASSPATH VARIABLEがrule-engine.jarファイルに設定されていることを確認し、関数を実行します。動作するはずです。他にご不明な点がございましたら、投稿してください。サンプルは次のとおりです-(ルールの実行カウントにより、ルールが実際に実行されたかどうかが確認されます)、ilrmainシグネチャをvoid ilrmain(Object arg)として使用します。-

    customer.firstName="Abhishek";

    customer.age=17;

    int nrules = 0;



    insert customer;



    execute ();

    System.out.println(" The last name of the customer is " + customer.lastName );

    System.out.println("The first name of the customer is " +customer.firstName);


    nrules += returnValues.getIntValue("ilog.rules.firedRulesCount");

    System.out.println("The Number of rules fired " + nrules);

    //retractAll();

    //reset (); 
于 2013-11-19T22:42:46.913 に答える