我如何在drl文件中动态设置事实类型和事实字段?我正在读取一个具有records.record的json文件,该记录映射到pojo类,该类是根据我使用json2pojo maven plugin的json模式动态生成的! .now我想在该班上开一些规则。但是我无法在drl文件中找到该类,因为事实与字段相同。
以下是drl规则。
rule "not null"
when
obj:Class(fieldName==null)
then
//take action
end
这个Class和fieldName是动态生成的。
请为我建议解决方案。
谢谢。
最佳答案
我已经成功实现了类似的问题陈述。快速浏览一下。
我应该在Web应用程序运行时在用户选择的sql表上动态生成规则。这里要注意的一点是pojo类也应该在运行时生成。
Drools 6有一个内置的API(类似于JAVA反射API),您可以在其中动态生成一个类,因此也可以生成factTypes。
因此,首先.drl文件:-
declare {insert tablename as chosen by the user}
{columnname} : {columntype}
{columnname} : {columntype}
end
这将生成一个pojo类以及可以在规则中直接访问的属性的获取器和设置器。
现在,java文件:-
可以在java应用程序中访问生成的类,如下所示:
//获取声明的FactType
FactType tableType = kbase.getFactType({packagename},{tablename});
//创建实例:
Object obj = tableType.newInstance();
现在,通过休眠从与所选表相对应的sql中插入事实。如果规则进行了任何修改,这还将使表保持更新。
随意问任何问题。
乐意效劳..:)
关于java - 我们可以在Drools中动态设置事实类型和事实字段吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35172555/