浏览 1410 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2016-04-08
Java程序可以通过engine.jar中提供的API调用规则包或者规则包中的一级规则,调用时,简单的调用代码如下: RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine(); ruleEngine.put("export_0", "测试"); try { ruleEngine.execute("simple.helloworld"); System.out.println(ruleEngine.get("export")); } catch (Exception e) { e.printStackTrace(); } 以上是标准的调用方法。 RuleEngineFactory.newInstance().getRuleEngine()是得到一个引擎实例,每个引擎实例会分配一个单独的map用于接收java端调用的数据。 ruleEngine.put方法用于将调用的数据存入map中,ruleEngine.execute执行后,会根据传入的规则包名称,找到具体的规则包,并且将map中的所有数据传给此规则包。当规则包所有的规则执行完毕后,会将执行完毕的值,写回到map中。ruleEngine.execute执行时会出现异常,如果出现com.flagleader.engine.RuleEngineException: 103 : 导入规则包simple.helloworld,发现路径中/simple/helloworld.rsc文件不存在 这类错误则检查classpath是否存在simple/helloworld.rsc文件或者在engine.conf配置文件中指定的ruleEngineClassDir目录下是否存在simple/helloworld.rsc文件。 ruleEngine.get方法,可以读取map中的返回值。 因此,如果需要连续调用两个规则包,则需要执行两次RuleEngineFactory.newInstance().getRuleEngine(),否则这两次调用会共用同一个map,除非第二次调用的规则包需要用到前一次调用结果。 1.2.Java程序调用规则包中的内部规则 如果要调用规则包中的内部规则,则可以使用ruleEngine.execute(String)方法,该方法中的规则包名称可以使用@来访问规则包中的内部规则,比如: ruleEngine.execute("simple.helloworld@规则1"); 表示执行simple.helloworld规则包下面的规则1子规则。 注意,子规则最多可以调用二级,也就是说第三层的子规则不能被访问。 比如 规则集@规则集@规则,并不能被访问。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |