专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 行业应用

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

发布时间:2010-06-06 17:18:28 文章来源:www.iduyao.cn 采编人员:星星草
规则引擎开发规范--程序开发类规范<连载3>
1.5   直接将传入值以map方式传入调用规则包
缺省调用规则包时,需要一个个通过put方式传入相应的值,然后通过execute方法调用规则包之后,通过get方法获得每个返回的参数值。如果事先系统以及有一个map在维护数据,比如工作流中的数据,本身已经存储在map中,那么就可以使用ruleEngine.executeMap方法直接将map作为所有的传入值。传入后也返回map,但是返回的map本身并不是原先的map,而是根据返回值,生成一个新的map,具体可以参考代码:
HashMap<String,Object> map = new HashMap<String,Object>() ;
map.put("a", 11) ;
map.put("b", 22) ;
RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
try {
Map os = ruleEngine.executeMap("test.simpleAdd",map);
if ( os != null && !os.isEmpty() )
System.out.println(os.get("c"));
} catch (Exception e) {
e.printStackTrace();
}
1.6. 批量数据调用规则包
如果需要批量计算一批数据,然后将值再以批量数据的形式返回。目前规则引擎支持通过ruleEngine.executeBatch方法用List<List>方式来存储批量的传入数据。比如第二个List中就是将传入值,按顺序放到指定的位置中。执行后,该方法可以返回一个存储了返回值的List<List>。具体如下:
ArrayList<ArrayList> inputs = new ArrayList<ArrayList>() ;
for (int i = 1 ; i <= 10 ; i++ ) {
ArrayList value = new ArrayList() ;
value.add(11*i) ;
value.add(22*i) ;
inputs.add(value);
}
RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
try {
List<List> os = ruleEngine.executeBatch("test.simpleAdd",inputs);
if ( os != null && os.size() > 0 ) {
for ( List val : os ) {
System.out.println(StringUtil.stringValue(val));
}
}

} catch (Exception e) {
e.printStackTrace();
}
1.7. 以Java Bean调用规则包
以上的调用方式中,都是需要将参数传递给规则包,最后取相应的参数值。通过ruleEngine.executeBeans方法可以实现直接通过将类传递给规则引擎进行调用。其中规则包对应的传入值和传出值,都直接定义在类的属性中。如下所示:
public class BeanExecuteTest {

public class BeanInfo {
private double a ;
private double b ;
private double c ;
public BeanInfo() {
a = 11 ;
b = 22 ;
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
}
public static void main(String[] args) {
BeanInfo info = new BeanExecuteTest().new BeanInfo() ;
HashMap<String,Object> map = new HashMap<String,Object>() ;
map.put("a", 11) ;
map.put("b", 22) ;
RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
try {
ruleEngine.executeBeans("test.simpleAdd",info);
System.out.println(info.getC());
} catch (Exception e) {
e.printStackTrace();
}
}
}
采用这种方式,可以和其他的系统对接,直接将多个Bean传给规则引擎进行处理。规则引擎自动将Bean的属性作为传入值传给规则包执行,规则包处理完之后,将传出值,复制给Bean的属性值。

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 《松本行弘的程序全世界》之面向对象

    《松本行弘的程序世界》之面向对象 最近读《SICP》把脑细胞搞死大半,还没看完2章,而且看得也是一知半解,实在是受不了了,...

  • GroovyHelp 3.2.7 GA公布

    GroovyHelp 3.2.7 GA发布 GroovyHelp简介   GroovyHelp是一款Javadoc及Groovydoc搜索查阅软件,它能够帮助Java开发人员以...

  • Velocity在Roller中的使用

    Velocity在Roller中的应用 Velocity是java世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。   所...

  • Rpc远程调用框架的设计与兑现(2)

    Rpc远程调用框架的设计与实现(2) 接上: 3   基于Json的前后端数据交互 3.1   轻量级的数据交换形式 3.1.1    什么是Jso...

  • excel 单元格的锁定 以及 JXL的兑现方式

    excel 单元格的锁定 以及 JXL的实现方式 在使用excel表格时,有些列是不希望用户可以修改的,诸如审计日志里面确定的部分,而审计...

  • 仓秤跟散料秤:java连接opc Server

    仓秤和散料秤:java连接opc Server 这三篇都是之前写好的,一直没发。 这次一起发出来吧。   java连接硬件很痛苦,特别是对我这...

  • Rpc远程调用框架的设计与兑现(1)

    Rpc远程调用框架的设计与实现(1) Rpc远程调用框架的设计与实现 1     Rpc远程调用框架设计概述 1.1   研究背景 1.1.1...

  • 集合中的线程安全有关问题

    集合中的线程安全问题 一、why? Java中常用的集合框架推荐使用的三个实现:HashSet\ArrayList\HashMap都是线程不安全的.如...

  • Java定时任务的兑现

    Java定时任务的实现 本例依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。 MyListener: ...

  • java中log日记的使用

    java中log日志的使用 一、介绍  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控...

热门推荐: