如何修改 package rules;dialect "mvel"import model.PI;rule "CalcPI" no-loop false when pi: PI() eval(pi.getIterValue() % 5 == 0) // 每五次循环触发规则 then System.out.println("执行规则中 ... "); System.out.println("PI的值: " + pi.getPi() + " 迭代值: " + pi.getIterValue()); pi.iterOne(); update(pi); // 询问用户是否继续循环 java.util.Scanner input = new java.util.Scanner(System.in); System.out.print("是否继续循环?(Y/N)"); String choice = input.nextLine(); if (choice.equalsIgnoreCase("N")) { pi.setIterValue(100); // 结束循环 } end里面的null类型
时间: 2024-01-09 11:04:04 浏览: 19
在规则的 end 部分,可以不需要显示地返回一个 null 类型。如果没有返回值,Drools 引擎会默认返回一个 null 值。因此,可以省略 end 部分的返回值。例如:
```
rule "CalcPI"
dialect "mvel"
no-loop false
when
pi: PI()
eval(pi.getIterValue() % 5 == 0) // 每五次循环触发规则
then
System.out.println("执行规则中 ... ");
System.out.println("PI的值: " + pi.getPi() + " 迭代值: " + pi.getIterValue());
pi.iterOne();
update(pi);
// 询问用户是否继续循环
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("是否继续循环?(Y/N)");
String choice = input.nextLine();
if (choice.equalsIgnoreCase("N")) {
pi.setIterValue(100); // 结束循环
}
end
```
在这个例子中,我们省略了 end 部分的返回值,Drools 引擎会默认返回一个 null 值。
相关问题
package rules; dialect "mvel" import model.PI; rule "CalcPI" no-loop false when pi: PI(iterValue<183) then System.out.println("exec rule CalcPI ... "); System.out.println("PI: " + pi.getPi() + " iterValue: " + pi.getIterValue()); pi.iterOne(); update(pi); end
这是一个使用规则引擎Drools编写的规则,该规则名为"CalcPI"。它使用了一个Java类PI,并且在条件中对其进行了过滤,只有当iterValue小于183时才会触发规则。在规则执行的时候,它会打印出PI的值和iterValue的值,并且对iterValue进行加一的操作,然后更新PI对象。no-loop属性表示在一个对象上不会重复执行该规则。
package rules; dialect "mvel" import model.PI; rule "CalcPI" no-loop false //规则的条件部分,满足条件:iterValue小于100时,进入规则。 when pi: PI( ) //规则的动作部分,打印"执行中 ...",输出一条日志消息 then System.out.println("执行规则中 ... "); System.out.println("PI的值: " + pi.getPi() + " 迭代值: " + pi.getIterValue()); pi.iterOne(); update(pi); end 如何修改为每五次循环后询问是否再次进行循环
可以修改规则的动作部分,增加一个输入操作,询问用户是否继续循环。可以参考下面的代码修改:
```
package rules;
dialect "mvel"
import model.PI;
rule "CalcPI"
no-loop false
when
pi: PI()
eval(pi.getIterValue() % 5 == 0) // 每五次循环触发规则
then
System.out.println("执行规则中 ... ");
System.out.println("PI的值: " + pi.getPi() + " 迭代值: " + pi.getIterValue());
pi.iterOne();
update(pi);
// 询问用户是否继续循环
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("是否继续循环?(Y/N)");
String choice = input.nextLine();
if (choice.equalsIgnoreCase("N")) {
pi.setIterValue(100); // 结束循环
}
end
```
这样修改后,每五次循环会询问用户是否继续循环。如果用户输入"N",则结束循环。