gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:41:17 25 4
gpt4 key购买 nike

如何在 drl 文件中动态设置事实类型和事实字段?我正在读取一个包含记录的 json 文件。我正在映射到 pojo 类的记录,该类是从我使用的 json 模式动态生成的 json2pojo maven plugin ! .现在我想在那个类开除一些规则。但我无法将 drl 文件中的该类作为 fact.same 用于字段。下面是drl规则。

rule "not null"

when

obj:Class(fieldName==null)
then
//take action
end

这个类和字段名是动态生成的。请建议我解决这个问题。谢谢。

最佳答案

我已经成功地实现了类似的问题陈述。快速浏览一下。我应该在用户在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com