1.3.异步调用规则包
通过ruleEngine.excuteSynchronized(String)函数可以异步方式调用规则包。
RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
ruleEngine.put("export_0", "测试");
try {
ruleEngine.excuteSynchronized("simple.helloworld");
} catch (Exception e) {
e.printStackTrace();
}
异步调用并不能从map中将返回值取回,因此需要通过put方法将对象传给规则包,规则包获得该对象的引用后,直接修改,来实现异步修改值的功能。
执行ruleEngine.excuteSynchronized方法后,系统会生成一个RuleEngineInfo类的实例,然后交给RuleRecordServer类进行执行。RuleRecordServer会根据当前的线程,生成一个新的RuleRecordServer实例,该实例会启动一个RuleRecordServer.ExeThread线程池。
每次执行ruleEngine.excuteSynchronized方法,会从当前线程对应的RuleRecordServer实例中的线程池中,空闲的线程来执行,如果没有空闲的,并且线程池个数小于设置的最大线程数,则会创建一个新的线程,然后来执行。
RuleRecordServer. getInstance().waitThread()可以用于等待所有的子线程执行完毕,调用这个方法时,会判断RuleRecordServer实例的线程池中,是否存在正在执行的线程,如果在执行则当前线程等待,否则继续执行。
RuleRecordServer. getInstance().setMaxThread(int),可以设置线程池的大小。
1.4. 动态参数调用规则包
一般调用规则包时,需要首先知道规则包接收参数的名称,根据参数名称采用put方法传入值;并且需要知道传出参数的名称,根据传出参数采用get方法得到返回值。
缺省的这种调用方式,必须指定了参数名,才能传值。假设我们事先知道传入值的个数和位置,以及知道传出值的个数和位置,就可以直接使用ruleEngine.executeDynamic方法来通过动态参数来调用规则包。
比如test.simpleAdd规则包,其有两个传入参数,和一个传出参数。如图:
如果需要传入两个值、a=11 b=22,然后调用规则包,返回结果值c,那么可以以下方式调用:
RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
try {
Object[] os = ruleEngine.executeDynamic("test.simpleAdd",new Object[]{11,22});
if ( os != null && os.length > 0 )
System.out.println(os[0]);
} catch (Exception e) {
e.printStackTrace();
}
通过以上代码,无需指定规则包的参数名称,实现调用。
这种调用方式使用时和参数的顺序相关。
- 大小: 19.1 KB
分享到:
相关推荐
Struts原理、开发及项目实施<br/> Holen 2002-9-12<br/><br/>1、 摘要<br/>2、 关键词<br/>3、 Framework<br/>4、 Struts的起源<br/>5、 Struts工作原理<br/>6、 Struts安装<br/>7、 一个实例<br/>8、 Struts优缺点...
<br><br> FlowChartX控件 很多开发环境下和很多编程语言下测试过,也可用于全世界各地公司用Visual C++, Visual Basic, C#或VB.NET, Visual FoxPro, Borland Delphi, VBA, PowerBuilder, Advantage Gen, Progress 4...
- **标签**: `<h1>`至`<h6>`,分别表示不同级别的标题。 - **示例**: ```html <h1>一级标题</h1> <h2>二级标题</h2> ``` ##### 3. HTML段落 - **标签**: `<p>`,用于定义一个段落。 - **示例**: ```html <p>...
WCF 项目应用连载[5] - 自定义配置 扩展ChannelFactory<T> WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本 WCF 项目应用连载[7] - 绑定、服务、行为 大数据传输与限流 - 上 WCF 项目...
5. **模板引擎**:为了方便页面布局和样式,项目可能使用了如Twig或Smarty这样的模板引擎,将视图与控制器逻辑分离。 6. **错误处理和日志记录**:良好的错误处理和日志记录机制对于调试和维护至关重要,PHP的错误...
WCF 项目应用连载[5] - 自定义配置 扩展ChannelFactory<T> WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本 WCF 项目应用连载[7] - 绑定、服务、行为 大数据传输与限流 - 上 WCF 项目应用...
### FPGA Verilog HDL 设计实例系列连载——有限状态机设计 #### 1. 有限状态机(FSM)概述 有限状态机(Finite State Machine,FSM)是数字系统设计中非常重要的概念之一,它被广泛应用于各种数字系统的控制逻辑中...
杰奇PHP小说连载系统是一个基于PHP编程语言的开源软件,专为在线小说网站设计和开发。这个系统提供了全面的功能,包括小说的发布、管理、分类、搜索以及用户互动等,旨在帮助站长快速搭建一个高效、易用的小说阅读...
在实际应用中,我们还会学习如何创建标题(`<h1>`到`<h6>`)、段落(`<p>`)、列表(无序`<ul>`和有序`<ol>`,以及列表项`<li>`)、链接(`<a>`)、图像(`<img>`)以及区块(`<div>`)等基本元素。此外,还将讨论...
Java学习资料入门的所有类容连载--01
**ESRI Flex GIS开发连载(1) - 环境搭建** 在ESRI Flex GIS开发中,环境搭建是首要步骤,它确保了开发者有一个稳定且兼容的平台来创建GIS应用程序。Flex是Adobe开发的一种用于构建富互联网应用(RIA)的编程语言,...