ruleunit-quarkus-example无KieServices、KieContainer可运行原因及会话类型问询
无需手动声明KieServices、KieContainer的实现原理
- 你提到的手动创建KieServices、KieContainer属于传统Drools应用的经典编程模型,而该示例是Kogito适配Quarkus的RuleUnit场景,使用了新一代的规则单元编程模型,底层封装了经典模型的初始化逻辑
- Kogito针对Quarkus做了专属扩展:构建阶段会自动扫描项目内的规则文件、RuleUnit定义类,预编译规则并生成对应的CDI可注入Bean,应用启动时自动完成规则执行上下文的初始化。所有和KieServices、KieContainer相关的底层逻辑都被框架封装处理,不需要开发者手动编写调用代码,因此你在项目业务代码中检索不到对应关键词
- 业务侧仅需要通过
@Inject注解注入对应RuleUnit实例即可直接调用规则执行能力,Kie容器的全生命周期都由框架托管。
会话类型说明
该项目默认使用无状态会话:
- 示例对外暴露的是HTTP接口形式的规则服务,单次请求触发一次规则执行,执行完成后会直接销毁当前规则执行上下文,不会保留任何会话数据供后续请求复用,完全符合无状态会话的特征
- RuleUnit模型在Quarkus运行环境下默认使用无状态会话执行规则,只有开发者手动配置开启有状态会话的持久化、上下文保留逻辑时才会切换为有状态会话,当前示例没有做相关自定义配置。
内容的提问来源于stack exchange,提问作者maxloo
相关产品推荐
相关产品推荐

