`
Mr-zhang
  • 浏览: 17337 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

规则引擎开发规范--程序开发类规范<连载1>

阅读更多
1.1.Java程序调用规则

   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子规则。
注意,子规则最多可以调用二级,也就是说第三层的子规则不能被访问。
比如 规则集@规则集@规则,并不能被访问。
分享到:
评论

相关推荐

    Struts原理、开发及项目实施

    Struts原理、开发及项目实施&lt;br/&gt; Holen 2002-9-12&lt;br/&gt;&lt;br/&gt;1、 摘要&lt;br/&gt;2、 关键词&lt;br/&gt;3、 Framework&lt;br/&gt;4、 Struts的起源&lt;br/&gt;5、 Struts工作原理&lt;br/&gt;6、 Struts安装&lt;br/&gt;7、 一个实例&lt;br/&gt;8、 Struts优缺点...

    FlowChartX控件

    &lt;br&gt;&lt;br&gt; FlowChartX控件 很多开发环境下和很多编程语言下测试过,也可用于全世界各地公司用Visual C++, Visual Basic, C#或VB.NET, Visual FoxPro, Borland Delphi, VBA, PowerBuilder, Advantage Gen, Progress 4...

    5 1 通用延时子程序

    &lt;br&gt;选自双龙电子SL-51(原NICE-51) 系列仿真器实验程序&lt;br&gt;NICE42.HEX 实验程序说明:&lt;br&gt;配合OK-02 /03 实验器使用实验器40 芯插座用仿真电缆接在NICE-51-PCNICE-8751 NICE-8752 NICE-51-OK/OKL 仿真器CZ1 仿真插座...

    Litelog - WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本

    WCF 项目应用连载[5] - 自定义配置 扩展ChannelFactory&lt;T&gt; WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本 WCF 项目应用连载[7] - 绑定、服务、行为 大数据传输与限流 - 上 WCF 项目应用...

    《大话企业级Android开发》--第06部分

    该部分内容主要介绍了在Android开发过程中如何利用日志输出、单元测试等方式对程序进行调试,该部分的最大亮点在于并没有停留在介绍F6、F5之类的快捷键的功能上面,而是结合实际案例对调试流程进行了全景式的记录,...

    Java学习资料入门的所有类容连载--01

    Java学习资料入门的所有类容连载--01

    Litelog - WCF 项目应用连载[2] - 创建Lig日志系统 C# 源代码

    WCF 项目应用连载[5] - 自定义配置 扩展ChannelFactory&lt;T&gt; WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本 WCF 项目应用连载[7] - 绑定、服务、行为 大数据传输与限流 - 上 WCF 项目...

    PHP实例开发源码-杰奇php小说连载系统.zip

    PHP实例开发源码—杰奇php小说连载系统.zip PHP实例开发源码—杰奇php小说连载系统.zip PHP实例开发源码—杰奇php小说连载系统.zip

    PHP实例开发源码-php读怪小说连载系统.zip

    PHP实例开发源码—php读怪小说连载系统.zip PHP实例开发源码—php读怪小说连载系统.zip PHP实例开发源码—php读怪小说连载系统.zip

    Ajax in action(中文版+源码)

    下载说明:&lt;br&gt;&lt;br&gt;共八章 CSDN web版书籍连载整理成PDF文档,有目录,附源码!&lt;br&gt;目前最全的中文电子版本!&lt;br&gt;&lt;br&gt;内容介绍:&lt;br&gt;Ajax领域的新框架和组件库层出不穷,一些功能非常简单,一些则是过度的设计或者...

    连载-吕宋贤flash教程(2-1)

    连载-吕宋贤flash教程 2-1

Global site tag (gtag.js) - Google Analytics