Red Hat PAM/KIE Server是否支持通过RESTful接口执行DRL业务规则?
核心结论
7.10.0版本的Red Hat Process Automation Manager配套KIE Server,完全可以通过原生集成的Swagger UI REST服务完成DRL规则的测试,不需要额外编写Java、Maven类自定义客户端。
为啥会觉得DRL必须写客户端才能测
- 6.x及更早版本的老KIE平台,独立编写的DRL规则确实没有默认开放通用REST调用通道,必须自己写客户端或者自定义REST端点对接,这类老文档的内容被大量转载,传着传着就成了“DRL不能直接用Swagger测”的固有印象
- 官方教程的引导逻辑本来就是把DRL定位成面向开发者的底层规则写法,默认引导大家在Maven项目里写单元测试验证逻辑,根本没专门讲部署到KIE Server之后怎么用Swagger快速测,自然很多人找不到对应路径
Swagger UI测试DRL的实际操作路径
整个过程和测试DMN、Guided Decision Tables复用同一套KIE Server REST通道,没有额外的配置门槛,核心步骤如下:
- 前置准备:将写好的DRL规则连同对应事实对象(比如经纬度校验的入参POJO,带纬度、经度字段、校验结果字段的普通Java类)打包成标准KIE Jar包,完成部署并确认对应KIE Container处于运行状态
- 打开对应KIE Server的Swagger UI页面,定位到
Kie Session Command分组下的POST执行端点,对应接口路径为/server/services/rest/server/containers/{你的容器ID}/commands - 按照KIE Command的标准JSON结构拼装测试入参,直接在Swagger的入参编辑器里填写、调用即可:
- 先通过
insert命令把待测试的经纬度事实对象插入到KIE工作内存 - 再通过
fireAllRules命令触发所有已定义DRL规则的执行 - 最后通过
getObjects类命令把规则执行完成后的结果对象从工作内存中取出,就能拿到规则的实际执行效果
- 先通过
和DMN、Guided Decision Tables测试的差异
两者唯一的区别只是入参的封装程度不同,不存在能力上的差异:
- DMN、Guided Decision Tables因为是面向业务人员的无代码规则类型,KIE Server为它们做了专门的简化入参模板,Swagger里直接填键值对就能测试
- DRL走的是通用的Kie Session命令通道,没有做简化的入参封装,需要手动拼装标准命令结构,操作步骤看起来更繁琐,但本质上完全复用同一套Swagger测试能力,不需要额外开发
常见踩坑提示
- 如果调用接口时报类找不到的序列化错误,不是DRL不支持REST调用,是你打包KIE Jar的时候没有把对应事实类的依赖打进去,重新打包上传部署即可解决
- 7.10.0版本的Swagger不会为DRL自动生成命令结构模板,需要手动参照KIE Command的JSON格式填写,这部分没有专门的快速引导,也是很多人误以为不能直接用Swagger测的原因
内容的提问来源于stack exchange,提问作者littleK
相关产品推荐
相关产品推荐

