场景如下:
我有一个java pojo类Name
,具有2个变量type
和name
以及适当的getter和setter。我正在使用决策表流,我想要:
条件:当类型设置为“1”时
操作:调用name类的setName setter,并从excel中设置适当的参数
现在,我想在java中访问name的这个集值。
这就是我所做的:
Name.java-
public class Name{
String name,type;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
MainClass.java-这有口水实现!!
public class MainClass {
public static StatefulKnowledgeSession session;
public static KnowledgeBase kbase;
public static Name name;
public static void main(String args[])
{
init();
initialiseNameObject();
fireAllRules();
}
public static void init()
{
System.out.println("inside init");
KnowledgeBuilder kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();
DecisionTableConfiguration dconf=KnowledgeBuilderFactory.newDecisionTableConfiguration();
dconf.setInputType(DecisionTableInputType.XLS);
dconf.setWorksheetName("rulesW");
kbuilder.add(ResourceFactory.newClassPathResource("/drools.xls",MainClass.class), ResourceType.DTABLE, dconf);
KnowledgeBuilderErrors errors=kbuilder.getErrors();
if(!errors.isEmpty())
{
System.out.println("Errors in package");
Iterator i=errors.iterator();
while(i.hasNext())
{
System.out.println("The error: "+i.next());
}
}
kbase=KnowledgeBaseFactory.newKnowledgeBase();
try
{
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
session=kbase.newStatefulKnowledgeSession();
name=new Name();
}
catch(Exception e)
{
System.out.println("The exception "+e);
}
}
public static void initialiseNameObject()
{
System.out.println("insideNameObject");
name.setType("1");
}
public static void fireAllRules()
{
System.out.println("inside fire all");
session.fireAllRules();
System.out.println(name.getName());
}
决策表e::
http://www.imageurlhost.com/images/tf2m0omib1jkt8wyjra8_Decision.png
问题是我无法获取名称。。始终为空。应该在对象中更新名称,并且我应该将ABCD作为输出。我想它必须对全局实例做些什么!!
你的代码对我来说毫无意义。主要问题之一是,在创建StatefulKnowledgeSession之后,没有在会话中插入任何对象。如果没有任何东西,我怀疑Drool能做什么。
尝试执行以下操作:
name.setType(1);
session.insert(name); // Important! Drools need the objects to work on
// inserted to session
session.fireAllRules();
然后在决策表中,将操作更改为namea。设置名称($参数)
我相信在这样的变化之后它应该会起作用
我在DRL文件中有以下代码 终止 这是工程,但我需要将其转换为电子表格。我尝试了这么多的变体,但没有一个有效。如何在决策表中写入此规则?
当我尝试使用Drools引擎计算保险费时,我有一个潜在的性能/内存瓶颈。 我在我的项目中使用Drools将业务逻辑与java代码分开,我决定也将其用于溢价计算。 我是不是用错了口水 如何以更高性能的方式满足要求 详情如下: 我必须为给定的合同计算保险费。 合约配置有 productCode(来自字典的代码) 合同代码(来自字典的代码) 客户的个人资料(例如年龄、地址) 保险金额(SI) 等等 目前
我对口水和决策表还不熟悉。我需要创建一个规则,使用规则中的人的年龄来测试一个人是否年长/年轻。该规则在无限循环中工作。 这是规则,是基本的,人的年龄 我的角色类是一个简单的POJO,用于测试决策表: Person类(静态,在主类中): 我的主要方法是在JRE 1.7中使用drools 6.5: 这是无限循环的输出。 感谢您提供的任何提示、链接、教程等。
我在excel电子表格中有一个drools决策表,其中有两条规则。(此示例已大大简化,我正在使用的示例有更多规则。) 我的目标是让规则自上而下地触发,随后的规则可能取决于早期规则对事实/对象所做的更改。 这个问题有解决办法吗?任何帮助都将不胜感激,谢谢!
我有一个drools决策表,其中包含条件和位置类型 我的excel如下所示 设置参数的代码如下 我按要求提供的excel文件条件对象: 需求级别==$参数位置类型==$参数 当我像上面那样设置时,我得到以下错误: 创建KieBase时出错[消息[id=1,级别=错误,路径=规则.xls,行=8,列=0文本=[错误102]行8:14不匹配的输入'=='在规则“替换规则”中],消息[id=2,级别=错
我很难找到一条我知道有效的规则。drl表单,用于在决策表中工作。 这是我的drl形式的规则: 以下是我在电子表格中尝试的内容: 当我尝试从电子表格中运行规则时,我遇到以下错误: from子句似乎有问题,但我不知道为什么。我尝试了无数次谷歌搜索,这是我唯一能找到的:http://drools-moved.46999.n3.nabble.com/Question-on-excel-decision-t