如何使用kie-feel-dmn的DecisionTableImpl类并从数据库加载规则
KIE DMN DecisionTableImpl 使用相关问题解答
能否不引入完整库集直接调用该类?
无法单独剥离org.kie.dmn.feel.runtime.decisiontables.DecisionTableImpl直接调用,该类是KIE FEEL引擎的内部实现类,强依赖FEEL类型系统、表达式解析器、规则校验组件等核心基础模块,单独引入会直接出现依赖缺失、初始化失败问题。
你可以选择最小化依赖引入,不需要导入完整的KIE全家桶,仅需引入kie-dmn-feel模块及必要的传递依赖即可,排除drools、jBPM等无关组件后,依赖体积仅为完整KIE库的20%左右。Maven项目最小依赖配置参考:
<dependency> <groupId>org.kie</groupId> <artifactId>kie-dmn-feel</artifactId> <version>匹配业务需求的稳定版本号</version> <exclusions> <exclusion> <groupId>org.drools</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>org.jbpm</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
自有数据库加载规则的实现方案
按以下步骤实现即可,全程不需要依赖KIE自带的本地文件、远程资源加载能力,符合安全政策要求:
- 提前在自有数据库中存储决策表核心元数据,至少覆盖输入项定义、输出项定义、规则行集合、命中策略4类核心信息,你可以选择序列化DMN标准XML结构存储,也可以按业务需求拆分为多张结构化表存储。
- 自定义数据加载逻辑,从数据库查询到元数据后,先组装为
org.kie.dmn.model.api.DecisionTable标准接口的实例,再调用FEEL引擎提供的模型转换接口,将标准DMN决策表模型转为可执行的DecisionTableImpl实例。 - 规则执行时直接调用
DecisionTableImpl的evaluate方法,传入业务上下文参数即可得到执行结果。
注意不要通过反射直接实例化
DecisionTableImpl,该类内部有大量隐性校验逻辑,手动实例化容易出现规则执行结果不符合预期的问题,必须通过标准DMN模型转换生成可执行实例。
内容的提问来源于stack exchange,提问作者user1800752
相关产品推荐
相关产品推荐

