常见问题

知识包服务“不生效”

一般这种情况是快速测试,规则计算正常,但调用知识包服务规则计算结果与快速测试结果不一致。

需要检查如下几方面:

  • 调用的知识包服务传参是否与快速测试一致
  • 调用的知识包服务地址是否与快速测试一致
  • 知识包是否未发布新版本,或者发布后未在【查看当前已发布知识包版本】中将最新发布的版本启用

The object【xxx】does not exist or is not initialized

当调用规则计算时,遇到变量对象不存在或者未初始化异常时,说明当前规则计算内存中找不到xxx变量对应的实例对象,此时我们可以以下几种方法解决:

第一种:通过触发规则时传入变量实例对象。

  • 快速测试时,在输入数据中添加变量对象。

    img

  • Java API调用规则时,通过 session.insert(xxx)
  • Rest 调用时,在请求的数据中添加变量对象

    image-20220705142448090

第二种:可以在参数库中定义一个变量类型的参数。比如:定义一个参数叫【新用户】,类型设置为【用户】变量,在规则编辑时,【对象实例化】方法赋值给【新用户】这个参数,后续使用参数进行规则操作即可。

【对象实例化】方法中的完整类路径指的是,实例化变量的类路径属性填的字符串。

image-20220705142448090

Permission denied for project [601]

一般打开页面时报“Permission denied for project [601]”提示,说明你没有当前页面的权限。

还有一种情况是,当编辑一个文件,长时间没有保存,登录过期也会弹出这个提示。

img

这个时候一定要注意,不要整个刷新或关闭当前页面,因为如果之前没保存,重新打开后,将丢掉未保存部分。

正确的操作是:

  1. 在当前浏览器打开一个新的浏览器标签页,重新登录URule
  2. 登录成功后,会到之前提示“Permission denied for project [601]”的页面进行保存即可。

规则设计界面的左侧菜单树加载比较慢

可找到URule Pro4的数据库的URULEFILE表,分别给NAME、PROJECTID、PACKAGEID、TYPE_字段加上索引。

业务系统调用知识包计算结果与快速测试的结果不一致

首先,需要清楚快速测试计算与调用知识包计算的区别:

  • 快速测试计算是用当前规则文件进行编译计算,可以立即查看规则修改后的计算结果。
  • Java Api或Rest Api调用知识包是拿发布知识包时的规则文件编译好的版本进行计算。

所以当出现快速测试结果和Api调用知识包计算结果不一致时,可通过如下步骤依次排查解决:

  1. 先确认两种方式的入参是否一致,

    1. 这里需要注意的是入参Rest请求数据格式变量结构体和参数结构如下:
      [{
        "name": "变量名称",
        "fields": {
            "id": "",
            "age": 0
        },
        "class": "xxx.xxx.xxxx"
      },
      {
        "name": "参数",
        "fields": {
            "param1": ""
        },
        "class": "java.util.HashMap"
      }]
      
      可参考 Rest配置与调用.
    2. 如果是java api调用的话入参传参 可参考 java调用知识包 和 可参考 GeneralEntity的使用. .
  2. 检查知识包版本是否启用最新的版本,或者重新发布知识包版本并启用最新版本。另外,如果用的是客户端模式,可以重启一下客户端,防止知识包未重新拉取。

  3. 再根据输出的计算执行日志排查,Java Api调用知识包的日志输出配置具体可以参照 调试信息输出.

results matching ""

    No results matching ""