图形化显示知识库思路总结

写了个图形化显示知识库的功能,不常用,怕忘了,要点记录一下

1.推理机使用jsr94,实现用jess

2.图形显示用graphiz,java显示部分用idot,好多bug,幸好源代码很少,复制进来直接修改,里面用到prefuse.jar也有bug,绕过去吧,graphiz自己在网上下,idot带的有的时候生成不出图形来

3.jsr94尽量采用无状态的session

StatelessRuleSession statelessRuleSession = (StatelessRuleSession) ruleRuntime
    .createRuleSession(uri, new HashMap(), RuleRuntime.STATELESS_SESSION_TYPE);

 这样可以模拟用户的回答预先得到下级节点,如果用StatefulRuleSession就没办法做到了

缺点是workmemory(workmemory对应的概念是状态空间)自己维护,比较占内存

List<Object> workmemory = new ArrayList<Object>();
//workmemory.add(...);
//workmemory.add(...);
workmemory = session.executeRules(workmemory);

 4.知识库中最好不要修改传入的参数

尽量采用 request,response的方式,回复都放在response中,request不变化,否则会影响到外部变量

5.搜索方式采用广度有限搜索,符合图形显示的要求,可以一级一级展开

6.这种方式完全可以用于数据状态的图形化显示,只要去掉推理机

状态经过事件出发转换为新的状态,只要根据状态能得到允许的所有事件,例如一个单据处于制单状态,允许的所有事件是固定的(审核,修改,作废)

 

你可能感兴趣的:(Jess)