我如何在ilog jrules中调用ilrmain函数,它是隐含调用的,还是必须解释调用,在后一种情况下,我该如何调用。关于ilrmain功能,IBM文档非常模糊。
IlrMain提供了一种简单的方法来测试规则,而不需要太多开销。定义输入变量,创建测试用例并调用规则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函数选择项目,并启动shure选择了具有ilrmain功能的项目。在参数&参数您应该选择清除所有值,这样您的IlrMain中的参数正在用于执行。应用并运行
在您的命令行中,应该显示您的贷款决定。类似于:
Loan Decision: green
注意:在"运行配置"中,您可以自动创建规则集
因此,您不需要在每次更改规则时手动创建新规则集
如果您经常更改规则,例如在测试规则工件中的某些内容时,导出规则集是一件麻烦的事
您的代码也可能是这样的:
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“);
和你一起玩Java报告或断言的东西
希望它能帮助
在规则项目页面/选项卡中选择"使用函数ilrmain启动项目"后,从参数页面清除所有参数时出现问题;如果没有设置参数,就无法运行ilrmain技术函数。您需要将参数表达式设置为某个值,它可能是empty值。假设XOM有一个没有参数的构造函数{Customer()};然后将参数表达式设置为"new Customer()"保存并运行ilrmain。确保CLASSPATH VARIABLE设置为ruleengine.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 ();