java - 我们可以在 Drools 中动态设置事实类型和事实字段吗

标签 java json drools pojo

如何在 drl 文件中动态设置事实类型和事实字段?我正在读取一个包含记录的 json 文件。该记录我映射到从我使用的 json 模式动态生成的 pojo 类 json2pojo maven plugin ! .现在我想对该类取消一些规则。但我无法在 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 类以及可以在规则中直接访问的属性的 getter 和 setter。 现在,java 文件:-

生成的类可以在java应用程序中访问,如下所示:

//获取声明的FactType

FactType  tableType = kbase.getFactType({packagename},{tablename});

//创建实例:

Object obj = tableType.newInstance();

现在,事实是从与所选表相对应的sql中插入的,是通过hibernate实现的。如果规则发生任何修改,这也会使表格保持更新。

如有任何问题,请随时提出。 很高兴提供帮助..:)

关于java - 我们可以在 Drools 中动态设置事实类型和事实字段吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172555/

相关文章:

java - 我如何在java中使用setPreferredSize?

jquery - 如何使用新的 jstree v3.0.0 按需加载子项

java - 对数组或集合中的元素进行高效的 Drools 评估

java - 为什么 drools 规则引擎即使在循环内给出也只执行一次?

java - 从数组列表中提取聚合对象值

java - 内存不足异常+分析hprof文件转储

json - 使用 ng-repeat 在 AngularJS 中打印嵌套的 JSON 数组值

php - 如何解析 facebook graph api 响应

java - Drools:在运行时添加和删除规则

java - 向 map 添加标记