`
何必如此
  • 浏览: 53471 次
社区版块
存档分类
最新评论

规则引擎Visual Rules Solution开发基础教程【连载16】--VisualRules接口调用(五)

阅读更多
VisualRules接口调用(五)


Java类中的List<E>类和VisualRules中的List<list>

本案例的需求是:

         规则包:新建一个学生录入规则包,此规则包接受一系列参数(编号,姓名,性别,年龄,年级,备注),将数据全部插入到内存表中,在定义一个list<list>查询内存表数据。
         Java类调用(可调用不同版本):在Eclipse中制作一个Test10类,main中接收对象,将对象传给规则执行,查询执行结果,可执行选择版本,执行不同版本下的规则文件。从上面例子都能看出来,从规则调用过来的学生表中数据都是list<list>类型的,在此希望是一list<Student>型式的数据。


一、修改规则包

         点击内存表“学生表”的“学生表操作”选项卡,点击图标,如下图:




         勾选上方法getHeaderList(),如下图:




         点击确定,如下图:




         修改规则“查询学生信息”,如下图:




         修改操作如下图:




         替换后显示如下图:




         点击保存图标,导出规则编译文件,如下图:




二、添加java类

         在java工程中添加一个java类,名为StudentInfo.java,其内容编辑如下:
package com.flagleader;
import java.util.ArrayList;
import java.util.List;
public class StudentInfo {
private Student student;
private List<Student> studentList = new ArrayList<Student>();
public StudentInfo() {
student = new Student(1, "李丽", 12, '男', "六年级", "无");
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public List<Student> getStudentList() {
return studentList;
}
public void setStudentList(List<Student> studentList) {
this.studentList = studentList;
}
}

         在java工程中添加一个java类,名为Test10.java,其内容编辑如下:
package com.flagleader;

import java.io.File;
import java.util.List;

import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;

/**
* 调用指定目录下默认文件下的编译文件
* 使用的是RuleEngine,该接口只能用于本地调用
* 可以指定目录下,执行哪个版本下的编译文件。
* 如RuleEngineFactory.getInstance("1.1").getRuleEngine();
* @author Administrator
*
*/

public class Test10 {
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.3").getRuleEngine();
// 以dto形式为规则传参
StudentInfo studentInfo = new StudentInfo();
// 执行规则,其中"student.add"为规则全名,student为传入参数
engine.executeBeans("student.add", studentInfo.getStudent(),studentInfo);
// 执行完规则后,获取数据,"studentList"必须和规则中取内存表数据的变量名一致
List<Student> list=studentInfo.getStudentList();
for (Student student : list) {
System.out.println(student.toString());
}
} catch (RuleEngineException e) {

e.printStackTrace();
}
}
}


三、执行java测试类

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




         说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
         同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
         同理,上述例子都可以这样使用。
  • 大小: 377 Bytes
  • 大小: 168 KB
  • 大小: 145.4 KB
  • 大小: 147.1 KB
  • 大小: 125.5 KB
  • 大小: 139.3 KB
  • 大小: 126.7 KB
  • 大小: 318 Bytes
  • 大小: 196 KB
  • 大小: 141.6 KB
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics