Visual Rules Solution Java集成接口<4>—Java类调用本地调用指定版本

指定规则编译文件目录,调用指定目录下默认文件的编译文件,既指定文件\default,如指定目录为E:\rscfile,那默认文件目录指E:\rscfile\default,为了能调用不同版本下的同名编译文件,可选择目录,比如E:\rscfile\1.1或者E:\rscfile\1.2,这样就会执行1.1或1.2下的编译文件。

添加java测试类
在java工程中添加一个java类,名为Test3.java,其内容编辑如下:
package com.flagleader;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;
import com.flagleader.engine.RuleService;
import com.flagleader.engine.RuleServiceException;
import com.flagleader.engine.impl.LocalRuleServiceFactory;
/**
* 调用指定目录下默认文件下的编译文件
* 使用的是RuleEngine,该接口只能用于本地调用
* 可以指定目录下,执行哪个版本下的编译文件。
* 如RuleEngineFactory.getInstance("1.1").getRuleEngine();
* @author Administrator
*/
public class Test3 {
public static void main(String[] args) {
try {
// 编译文件指定目录,默认版本目录是指定目录下的default
RuleEngineManager.getInstance().init(new File("e:\\rscfile"));
// 工厂模式,该接口只能用于本地调用,getInstance("1.1")中的1.1是指定目录下的文件名
RuleEngine engine = RuleEngineFactory.getInstance("1.1").getRuleEngine();
// 以dto形式为规则传参
Student student = new Student(1, "李丽", 12, '男', "六年级", "无");
// 执行规则,其中"student.add"为规则全名,student为传入参数
engine.executeBeans("student.add", student);
// 判断engine.get("studentList")是不是集合类型
// 执行完规则后,获取数据,"studentList"必须和规则中取内存表数据的变量名一致
List list = engine.getListList("studentList");
// 由于规则中采用的是list<list>类型,需要做两次转换
List list1 = (List) list.get(0);
// 循环次数为对象中字段个数
for (int i = 0; i < 6; i++) {
System.out.print(list1.get(i) + "\t");
}
} catch (RuleEngineException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

执行java测试类
点击执行后,可以看到如下结果:



点击执行后,可以看到如下结果:



说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。

猜你喜欢

转载自silencelight.iteye.com/blog/2260260
今日推荐