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

[align=center][size=x-large][b]VisualRules接口调用(五)[/b][/size][/align]

[size=large][b]Java类中的List<E>类和VisualRules中的List<list>[/b][/size]

[size=medium][b]本案例的需求是:[/b][/size]

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

[size=medium][b]一、修改规则包[/b][/size]

[size=medium] 点击内存表“学生表”的“学生表操作”选项卡,点击[img]http://dl2.iteye.com/upload/attachment/0113/5786/e4888dcb-9396-39e0-a123-3f791fd720ac.png[/img]图标,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5788/4af35f60-ff3d-3d66-94b7-80bd37e09f8b.png[/img]
[/align]

[size=medium] 勾选上方法getHeaderList(),如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5790/a6c2e4b5-7fff-3159-b097-ef0f26061d79.png[/img]
[/align]

[size=medium] 点击确定,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5792/9d21856e-7b0c-3566-a6a3-8388d3abdb1f.png[/img]
[/align]

[size=medium] 修改规则“查询学生信息”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5794/7c0a6405-7bb8-3a9f-bbd0-7bfddfd420df.png[/img]
[/align]

[size=medium] 修改操作如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5796/45e423f6-d3bf-31d0-b03b-a502613aa0bc.png[/img]
[/align]

[size=medium] 替换后显示如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5798/53e5569e-6608-353e-bc8a-1c6b93dd838f.png[/img]
[/align]

[size=medium] 点击保存[img]http://dl2.iteye.com/upload/attachment/0113/5800/4ac03271-c65e-3639-a145-d995fdaf8897.png[/img]图标,导出规则编译文件,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5802/6511c1e3-7dce-3330-b85a-d0dd70d3511e.png[/img]
[/align]

[size=medium][b]二、添加java类[/b][/size]

[size=medium] 在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;

[color=blue]/**
* 调用指定目录下默认文件下的编译文件
* 使用的是RuleEngine,该接口只能用于本地调用
* 可以指定目录下,执行哪个版本下的编译文件。
* 如RuleEngineFactory.getInstance("1.1").getRuleEngine();
* @author Administrator
*
*/[/color]
public class Test10 {
public static void main(String[] args) {
try {
[color=green]// 编译文件指定目录,默认版本目录是指定目录下的default[/color]
RuleEngineManager.getInstance().init(new File("e:\\rscfile"));
[color=green]// 工厂模式,该接口只能用于本地调用,getInstance("1.1")中的1.1是指定目录下的文件名[/color]
RuleEngine engine = RuleEngineFactory.getInstance("1.3").getRuleEngine();
[color=green]// 以dto形式为规则传参[/color]
StudentInfo studentInfo = new StudentInfo();
[color=green]// 执行规则,其中"student.add"为规则全名,student为传入参数[/color]
engine.executeBeans("student.add", studentInfo.getStudent(),studentInfo);
[color=green]// 执行完规则后,获取数据,"studentList"必须和规则中取内存表数据的变量名一致[/color]
List<Student> list=studentInfo.getStudentList();
for (Student student : list) {
System.out.println(student.toString());
}
} catch (RuleEngineException e) {

e.printStackTrace();
}
}
}
[/size]

[size=large][b]三、执行java测试类[/b][/size]

[size=large] 点击执行后,可以看到如下结果:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/5806/138d0c20-58eb-39de-a564-7db39566bafe.png[/img]
[/align]

[size=medium] 说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
同理,上述例子都可以这样使用。
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值