ilog jrulesでilrmain関数を呼び出すにはどうすればよいですか、暗黙的に呼び出されるのですか、それとも明示的に呼び出す必要がありますか。後者の場合、どのように行うのですか。IBMの資料は、ilrmain関数に関して非常にあいまいです。
3 に答える
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
注:「実行構成」内で、ルールセットの作成を自動化できます。
したがって、ルールを変更するたびに新しいルールセットを手動で作成する必要はありません...
ルールアーティファクトで何かをテストしているときのように、ルールを頻繁に変更する場合、ルールセットをエクスポートするのは面倒です。
あなたのコードもこのように見えるかもしれません:
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“);
ルールプロジェクトページ/タブで「関数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 ();