ILog JRules常见问题

ILog JRules常用的数据:
工作空间路径:C:\Documents and Settings\co-zengjin001\workspace
安装路径:C:\Program Files\IBM\WebSphereILOGJRules701Zh
应用程序web界面登陆:http://localhost:8080/项目名称
Rule Teamserver登陆:
权限1,普通用户:UserName:rtsUser1;Pwd:rtsUser1
权限2,管理员:UserName:rtsConfig;Pwd:rtsConfig
权限3,所有者:Username:rtsAdmin;pwd:rtsAdmin(可以对元素进行擦除)
Rule Execution Server Login:
username:resAdmin ; pwd:resAdmin

ILog JRules常见问题:
1.在调试规则流的时候不输出之前在流结尾处定义的结果,但是程序不报错?
检查流结尾处定义的输出语句是否有误,不要丢掉结尾处的分号
2.启动DVS(Decision Validation Services)在整个项目中的作用,如果没有这个任务,对后面将造成什么样的影响?
dvs通过创建场景文件并允许用户在rts中测试。如果在项目中没有安装dvs对后面的主要场景不会有影响,详情参考ILOG JRules文档第二节
3.ILog中哪些部分充当了规则引擎?具体做了些什么?
一般认为RES(Rule Execution Server)充当了规则引擎,但是实际上RES只是包含了规则引擎的一个大的环境,webapp可以在这里调用ruleapp
具体规则引擎的机制可以参考“Java规则引擎的原理及应用”文档。
4.发布规则到rts时发现选择不了“在Rule Team Server上创建一个新的项目”?
那是因为之前已经发布创建了一个规则项目在rts上,所以不能再次创建,要想再次创建,可以使用rtsAdmin(所有者)身份登录到rts然后再部署里面擦除该项目
即可重新创建了
5.集成中构建Ant不成功?
构建Ant不成功,如果是在迷你贷款项目中,主要原因是因为路径不对。可以先查看应用程序根目录下的build.properties文件中的JRules.home属性
是否指向了安装路径。具体的路径应该是安装盘的根目录到eclipse所在的子目录这段路径。

6.在决策表中要添加一个操作列时,先选择一个操作列,工具栏里面添加操作列的按钮变为可用,然后就可以添加操作列了。
如果不选择一个操作列,工具栏里面添加操作列的按钮是不可用的。

7.怎样做到业务对象模型与执行对象模型同步更新?
当更新了执行对象模型后,可以右键bom,然后点击bom更新,之后bom更新的视图里面将会有新的内容出现,
然后点击“差异和操作”下面的"执行和保存"按钮,即可实现与执行对象模型的同步。
8.为什么有时候连接不上RTS?
查看连接使用的数据是否有误,teamserver服务器是否开启,或者查看RTS是否安装!!

9.同一个jar在eclipse中可以正常使用,为什么在MyEclipse中会报错:bed version?????
因为他们所使用的jdk版本不一

样。可以查看项目所使用的jdk版本:选中项目-项目-属性-java编译器
如果版本不一致,可以在库文件中选中jre系统库-编辑-已安装的jre-添加-选择一个jdk路径,即可。
保持eclipse和MyEclipse的jdk版本一致即可

10.从java程序连接到teamserver时spring冲突的异常怎么解决?
查看类库中导入的spring开头的几个jar文件的版本是否一致,如果不一致将导致此异常。可以留一个最新
的版本将其他版本的spring删除即可。如果类库中的spring都一致还是报这个错误,那么查看lib文件夹下
的spring版本是否一致,如果不一致,纠正方法同上。

11.怎样解决规则集参数不合法(IlrInvalidArgumentException)的异常:
首先,查看保存到map中的规则集参数对象所对应的键值是否和规则集参数的名称一致;
其次,在使用循环添加规则到规则集的时候,查看是否将当前规则集绑定到了源规则集,使用以下代码
可以实现绑定:
IlrRuleset ruleset = parser.getRuleset();
IlrRuleset selectedRuleset = new IlrRuleset();
IlrRhsBind binding = (IlrRhsBind) ruleset.getInParameterBindings().get(0);
selectedRuleset.addInParameterBinding(binding);

12.为甚么使用IlrContext创建的规则引擎engine不执行规则?
因为使用IlrContext engine=new IlrContext(ruleset);创建的引擎的默认状态是没有被激活的,
因此他是不会工作,需要将它激活:engine.activateRules(rules.toArray(new IlrRule[0]));
该方法的参数是一个IlrRule类型的数组

13.为甚么在自定义的规则引擎可以执行规则集中所有的规则,但是不能执行从规则集中抽取出来的规则?
当我们为规则集创建了规则流之后,JRules的内定机制显示,如果存在规则流,那么规则的执行
必须在规则流中进行执行,而从规则集中抽取出来的规则等于是脱离了规则流,所以不能被执行

14.为甚么样例服务器在启动的时候会自动关闭?
可能是端口被占用了,关掉一些不必要的线程,如java.exe,jqs.exe,oracle.exe等线程,再启动样例服务

15.在发布规则的时候,报rules studio与rules team server的语言环境不一致的错误该怎么办?
rules teamserver的语言环境默认的是zh_CN,当rule studio的编写环境与它不一致时,往teamserver上发布的时候就会报上述错误。可以通过
修改teamserver的语言环境来满足程序的需要:打开teamserver的web界面,在配置选项卡中,点击管理下面的安装管理器,选择步骤4:设置许可权语言环境
可以设置一个新的持久的语言环境。在设置这个新的语言环境之前发布到teamserver的项目还是处于原来的语言环境,要想使原来的项目也处于
当前设置的新的语

言环境中,那么需要在步骤1:配置数据库的选项中进行设置,具体做法:选择“生成可擦除现有数据并重新创建模式的脚本”
点击生成sql的按钮,勾选执行sql脚本的复选框,点击应用。这样就会在teamserver的数据库中将原来的语言环境清除,但是,teamserver中处于
原来的语言环境中的项目也将被清除,需要重新发布。

16.如果类本身没有错误,但是报notfoundClassException异常:
将项目拷贝一份到磁盘,将当前工具上的项目彻底删除,然后再导入磁盘中的项目,再次运行则不会报类没有找到的异常。

17.svn一个新的项目下来后,会报一些包找不到的错误怎么解决?
需要导入两个地方的包:一个是was在本地的一些包,再就是将lib文件夹中还没有添加到项目中的jar包加进来:add jar按钮

18.The type https://www.360docs.net/doc/ef12292733.html,monbrm.model.IlrElement cannot be resolved
Add Dependency:project does not have pom.xml等异常的解决方法:
该错误的意思是没有找到https://www.360docs.net/doc/ef12292733.html,monbrm.model.ilrElement这个类,缺少这个包。可以以rar的方式打开jar查找ilog目录下面的rules目录下面是否包括
commonbrm这个文件,如果jar有这个文件,那么将这个jar导入到项目即可。可以通过这种方式查找需要导入的具体的jar包

19.一个工具下能找到包,而另一个工具下找不到包的异常的通用解决方法:
可以在能找到包的那个工具下的main方法中使用:System.out.println(Thread.currentThread().getContextClassLoader()
.getResource("*.class"));
这段代码的意思是从线程中查找抛出异常的类的位置,*代表一个异常信息如:ilog/rules/dt/IlrDTRuleElement之类

20.如何使用配置文件保存数据,如何读取使用这些数据?
建一个*.properties文件,定义相关字段以及它们的值,在使用它的地方:
@Autowired
protected @Value("${https://www.360docs.net/doc/ef12292733.html,ername}") String username;
为它添加get和set方法,OK

21.计算程序执行的时间:
// long beginTime = System.currentTimeMillis();

//........

// long endTime = System.currentTimeMillis();
//
// long excuteTime = (endTime - beginTime) / 1000;
//
// System.out.println("执行时间: " + excuteTime);
22.会话的一个异常: No session available in the current thread, you should call IlrSession.beginUsage.>https://www.360docs.net/doc/ef12292733.html,ng.IllegalStateException
如果会话过早的关闭会造成该异常。将会话打开即可解决。

23.使用engine.fireAllRules(IlrAgendaFilter filter)来执行规则时,规则项目中不能存在规则流,否则规则不会被执行

24.在MyEclipse中如何装入代码检查工具
将代码检查工具的文件夹放到MyEclipse安装文件夹下的dropins文件夹中,重启MyEclipse即可生效

25.异常:An IlrUserRuntim

eException has been thrown:
Target method: public com.ejintai.domain.udwr.model.AppCvrgDTO com.ejintai.domain.udwr.model.AppCoverageList.getCvrgDTOByCvrgID(https://www.360docs.net/doc/ef12292733.html,ng.String)
at condition part of rule '商业险.通则.险别信息.车身划痕损失险$_$001'
Target exception stack trace:
https://www.360docs.net/doc/ef12292733.html,ng.NullPointerException: null object when invoking public com.ejintai.domain.udwr.model.AppCvrgDTO com.ejintai.domain.udwr.model.AppCoverageList.getCvrgDTOByCvrgID(https://www.360docs.net/doc/ef12292733.html,ng.String)
解决的方法?
引起类似异常的原因有两个:1.规则需要的参数或数据没有正确设置。2.Dto里面的属性没有设置值

26.执行有预定义的规则时,只设置一部分的预定义的输入参数,则没有设置参数的规则不能正常执行,报25里面的错误,如果给预定义里面的所有输入参数都设置值,则正常运行,为甚么?
需要在设置输入参数的方法里面给输入参数赋一个初始值

27.shift+ctrl+F格式化代码时,需要将输入法设置为英文。

28.异常https://www.360docs.net/doc/ef12292733.html,ng.NoClassDefFoundError: org/eclipse/emf/ecore/ENamedElement的原因
将was的commons-ibm等相关jar包加入到tomcat。具体做法:window-->run configurations-->Apache Tomcat-->选择tomcat v6.0 Server
-->选择右边的classpath视图窗口-->选择User Entries-->选择右边的Add External Jars按钮,将was安装文件中runtimes文件夹下的jar包都导入进来。

29.打开规则编辑透视图时显示错误:未能打开编辑器:未能实例化编辑器类。这通常表示缺少无参数的构造函数或者在 plugin.xml 中错误地输入了编辑器的类名。

30.将properties配置文件的中文与ascii码进行转换
中文->ascii码:native2ascii 文件路径(d:/i.properties)
ascii码->中文:native2ascii -reverse 文件路径

31.使用XShell动态查看日志:
操作命令:cd pwd/opt/websphere/profile/rapsrv/logs/serverl //日志的路径
使用ls命令可以显示当前文件夹下面的文件或文件夹
动态查看日志:tail -F SystemOut.log


相关文档
最新文档