常见问题
知识包服务“不生效”
一般这种情况是快速测试,规则计算正常,但调用知识包服务规则计算结果与快速测试结果不一致。
需要检查如下几方面:
- 调用的知识包服务传参是否与快速测试一致
- 调用的知识包服务地址是否与快速测试一致
- 知识包是否未发布新版本,或者发布后未在【查看当前已发布知识包版本】中将最新发布的版本启用
The object【xxx】does not exist or is not initialized
当调用规则计算时,遇到变量对象不存在或者未初始化异常时,说明当前规则计算内存中找不到xxx变量对应的实例对象,此时我们可以以下几种方法解决:
第一种:通过触发规则时传入变量实例对象。
第二种:可以在参数库中定义一个变量类型的参数。比如:定义一个参数叫【新用户】,类型设置为【用户】变量,在规则编辑时,【对象实例化】方法赋值给【新用户】这个参数,后续使用参数进行规则操作即可。
【对象实例化】方法中的完整类路径指的是,实例化变量的类路径属性填的字符串。
Permission denied for project [601]
一般打开页面时报“Permission denied for project [601]”提示,说明你没有当前页面的权限。
还有一种情况是,当编辑一个文件,长时间没有保存,登录过期也会弹出这个提示。
这个时候一定要注意,不要整个刷新或关闭当前页面,因为如果之前没保存,重新打开后,将丢掉未保存部分。
正确的操作是:
- 在当前浏览器打开一个新的浏览器标签页,重新登录URule
- 登录成功后,会到之前提示“Permission denied for project [601]”的页面进行保存即可。
规则设计界面的左侧菜单树加载比较慢
可找到URule Pro4的数据库的URULEFILE表,分别给NAME、PROJECTID、PACKAGEID、TYPE_字段加上索引。
业务系统调用知识包计算结果与快速测试的结果不一致
首先,需要清楚快速测试计算与调用知识包计算的区别:
- 快速测试计算是用当前规则文件进行编译计算,可以立即查看规则修改后的计算结果。
- Java Api或Rest Api调用知识包是拿发布知识包时的规则文件编译好的版本进行计算。
所以当出现快速测试结果和Api调用知识包计算结果不一致时,可通过如下步骤依次排查解决:
先确认两种方式的入参是否一致,
- 这里需要注意的是入参Rest请求数据格式变量结构体和参数结构如下:
可参考 Rest配置与调用.[{ "name": "变量名称", "fields": { "id": "", "age": 0 }, "class": "xxx.xxx.xxxx" }, { "name": "参数", "fields": { "param1": "" }, "class": "java.util.HashMap" }]
- 如果是java api调用的话入参传参 可参考 java调用知识包 和 可参考 GeneralEntity的使用. .
- 这里需要注意的是入参Rest请求数据格式变量结构体和参数结构如下:
检查知识包版本是否启用最新的版本,或者重新发布知识包版本并启用最新版本。另外,如果用的是客户端模式,可以重启一下客户端,防止知识包未重新拉取。
- 再根据输出的计算执行日志排查,Java Api调用知识包的日志输出配置具体可以参照 调试信息输出.