[align=center][size=x-large][b]VisualRules接口调用(六)[/b][/size][/align]
[size=medium][b][align=center]——Java类中含类[/align][/b][/size]
[size=medium]本案例的需求是:
规则包:新建一个学生规则包,此规则包接受一系列参数(编号,姓名,性别,年龄,年级,备注),定义两个map参数(学生,教师)用于接收数据,一个学生由多名教师授课,录入一条学生信息,显示该学生的任课老师。
Java类调用:在Eclipse中制作,main中接收对象,将对象传给规则执行,查询执行结果,可执行选择版本,执行不同版本下的规则文件。[/size]
[size=medium][b]一、规则包开发[/b][/size]
[size=medium][b]1.新建规则包[/b]
右键点击工程“test1”—“新建规则包(P)”,并将规则包命名为“学生”,如下图:
[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7947/79ee6535-89a2-3f65-918d-6deed7af5d42.png[/img]
[/align]
[size=medium] 右键点击规则包“学生”下的“对象库”,在“对象库”中的传入数据中定义如下参数:(参照:规则包开发 3、定义参数)[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7949/831d0c1f-0da2-383c-ad6b-e4a8e4f99ea8.png[/img]
[/align]
[size=medium] 右键点击“对象库”—“添加对象分类”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7953/bcfbef94-54fc-37d2-84fa-31f312ae02b2.png[/img]
[/align]
[size=medium] 右键点击“对象分类”—“数据库字典”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7957/c814d0c6-a0b0-34fc-8fd1-ba321351e9f1.png[/img]
[/align]
[size=medium] 弹出窗体,进行修改后点击确定,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7959/a0bb7063-680e-3016-a539-a26f2cf967d3.png[/img]
[/align]
[size=medium] 将“对象库”中的参数复制到“数据字典”中,由于“数据字典”的特殊,复制的参数可能会发生改变,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7973/421b27ec-6000-3dec-aa9e-fd1bc305d7b8.png[/img]
[/align]
[size=medium] 修改成如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7975/c0240a68-55d8-3cf8-bf11-a2c9cf231062.png[/img]
[/align]
[size=medium] 点击“数据字典”,选择选下卡“数据字典操作”,点击图标[img]http://dl2.iteye.com/upload/attachment/0113/7977/67fa98ff-7401-381d-9d0d-04b990bdedce.png[/img],如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7979/ae59dee6-afae-3f88-8e04-41112d01f9ef.png[/img]
[/align]
[size=medium] 勾选linkData(java.util.Map)方法,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7981/7bf9288d-c58e-3c6b-b213-a0c421282baf.png[/img]
[/align]
[size=medium] 点击确定后显示如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7983/f4bcec6d-27ce-30c4-b899-822748e340a6.png[/img]
[/align]
[size=medium] 右键点击“对象库”—“添加树状结构”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7985/8a6b35e6-b0a6-30b9-a6a9-86f9e55584d5.png[/img]
[/align]
[size=medium] 将复制“对象库”的变量到“数据树”中的“数据树属性”选项卡中,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7989/c3d172ce-425a-3033-8a73-7b5b27055f41.png[/img]
[/align]
[size=medium] 点击“数据树”中的“数据树操作”选项卡中的图标[img]http://dl2.iteye.com/upload/attachment/0113/7977/67fa98ff-7401-381d-9d0d-04b990bdedce.png[/img] ,弹出如下窗体,勾选上方法loadFromMap(java.util.Map)和createMapDate()两个方法,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8002/e0ebca1f-8df6-364e-ba39-962934dbf991.png[/img]
[/align]
[size=medium] 确定后显示如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8004/bd88c570-2b3e-3f01-9db5-ed0bd483a018.png[/img]
[/align]
[size=medium] 右键点击“数据树”—“添加树状结构”,并将该树状结构的节点改名为“学生”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8006/fbf35ba7-a1ac-30ca-ae16-d4cb11c1c805.png[/img]
[/align]
[size=medium] 定义“学生”参数和设置节点“学生”的属性,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8008/84e97744-fd5d-39ba-b9d8-1ee544e0b8be.png[/img]
[/align]
[size=medium] “教师”节点同“学生”节点,完成如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8010/2d37322f-e7ba-353b-aad3-85b3a3c5cdaa.png[/img]
[/align]
[size=medium][b]2.新建规则[/b]
右键点击规则包“学生”—“添加规则(N)”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8012/112ccddf-7e00-3f62-a409-ee2b1762f923.png[/img]
[/align]
[size=medium] 配置规则,点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8014/e80301e0-760c-3619-b56d-affa1347a306.png[/img] —“请点击选择”—“数据字典操作”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8016/8939a11c-f9d9-3e17-9711-fd7352f52a03.png[/img]
[/align]
[size=medium] 点击“点击选择字典表操作”—“数据字典”—“方法”—“数据库直接...”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8018/ec74f9d8-3999-3df2-9820-bc68bd0cf446.png[/img]
[/align]
[size=medium] 选择的方法,需要传参,点击“请选择”—“传入数据”—“学生”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8022/a3ba3139-9b48-3ad7-9cd1-4012f5153145.png[/img]
[/align]
[size=medium] 点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8014/e80301e0-760c-3619-b56d-affa1347a306.png[/img]—“执行方法”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8024/f6092770-c94e-3ac9-9aad-80525d5f1795.png[/img]
[/align]
[size=medium] 点击“选择方法”—“数据树”—“方法”—“数据树.loadFromMap({arg1})”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8030/fce46bbe-52f1-3366-8faa-a05979e91215.png[/img]
[/align]
[size=medium] 选择的方法需要传入一个map类型的方法,点击“请点击选择”—“选择值”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8032/f8a60e51-d0c1-31a8-b517-0d9dc594bb39.png[/img]
[/align]
[size=medium] 新建规则“字典数据”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8034/24543f30-3ca0-3dec-9b30-55138925cc3a.png[/img]
[/align]
[size=medium] 点击“数据字典”选择“数据字典数据”选项卡,复制“id”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8036/cf566e55-cb91-3664-9126-2906f1f8a3d5.png[/img]
[/align]
[size=medium] 将复制的id,粘贴到规则“字典数据”中,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8038/9a805c06-505a-377f-8d14-80195481c291.png[/img]
[/align]
[size=medium] 粘贴后如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8041/650e330e-8c47-33d8-9b5d-2f3546370bce.png[/img]
[/align]
[size=medium] 如下操作:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8044/fd1137f8-923a-39d0-98a9-b61350790a3c.png[/img]
[/align]
[size=medium] 点击“请选择”—“传入数据”—“编号”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8046/824dedd0-6b69-342f-8ad0-272e4063fe16.png[/img]
[/align]
[size=medium] 根据编号将其他数据添加进来,当添加到“性别”是,发现传入数据中没有对应的“性别”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8048/e0a7989c-69b4-30e6-bc9c-a2f18f15165f.png[/img]
[/align]
[size=medium] 复制“对象库”中的“性别”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8052/1e1bb48e-04c2-3cd6-893b-7a099fea0326.png[/img]
[/align]
[size=medium] 操作如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8054/de43bd30-7246-3c84-9763-683be68fb209.png[/img]
[/align]
[size=medium] 完成如下配置[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8056/68fc93c8-1ac6-3776-9254-5b49564cde5e.png[/img]
[/align]
[size=medium] 新建规则“数据树”,右键点击“数据树”—“树状结构操作向导”—“设置数据属性向导”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8058/85e01af4-67b5-356e-82ce-e5665ec26575.png[/img]
[/align]
[size=medium] 弹出窗体,勾选上字段,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8060/066ff8ac-5423-3248-b4f3-edbfa0ff495e.png[/img]
[/align]
[size=medium] 点击确定后,显示如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8062/79cfaffa-9bb2-391f-85ff-dd3b227a5d57.png[/img]
[/align]
[size=medium] 新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8064/332872c1-c07b-3ee1-adbe-7d8729ff0f79.png[/img]
[/align]
[size=medium] 勾选如下字段[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8066/c5f2f7a4-c0d1-34a1-825f-dd8906e2948f.png[/img]
[/align]
[size=medium] 点击确定后显示如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8068/1d6402f1-96ef-32a0-9881-eac86bbe2ce9.png[/img]
[/align]
[size=medium] 新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,修改规则如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8070/db22c8ed-6001-30ad-8bfb-c37fc7879f7b.png[/img]
[/align]
[size=medium] 设置属性,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8072/8e77210d-a020-32f2-89d9-5dc9dc7e1482.png[/img]
[/align]
[size=medium] 新建规则“教师取值”,点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8014/e80301e0-760c-3619-b56d-affa1347a306.png[/img] —“请点击选择”—“变量赋值”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8074/56e2f776-fbcd-38be-9f2a-3d558765b0bd.png[/img]
[/align]
[size=medium] 点击“选择变量”—“传入数据”—“教师”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8076/2fb13e8b-fb23-3243-b942-98f41844f24d.png[/img]
[/align]
[size=medium] 选择如下方法,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8078/c75554f6-9d62-33d4-b4a7-f81d52d1d528.png[/img]
[/align]
[size=medium] 完成规则配置[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8080/34eaf2db-0e7b-3d3e-b5f2-7ca8f2f4902d.png[/img]
[/align]
[size=medium] 修改规则包“学生”的外部调用名“student.info”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8082/be88a7e4-4e72-311c-9c3e-931bcaeb9b8a.png[/img]
[/align]
[size=medium] 选择规则包“学生”点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8084/ccdbcf2d-bb25-3999-afee-ccee3b386648.png[/img] ,弹出窗体“浏览文件夹”,选择目录,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8086/4c16a811-15d8-34b4-885b-cec56c602527.png[/img]
[/align]
[size=medium][b]二、Java调用[/b][/size]
[size=medium][b]1.新建类Student.java[/b]
根据学生“节点”定义,[color=darkred]字段名称需与规则中一致[/color],如下
package com.flagleader.student;
[color=blue]/**
* 学生信息
* @author
*
*/[/color]
public class Student {
private int id;[color=green]//编号[/color]
private String name;[color=green]//姓名[/color]
private int age;[color=green]//年龄[/color]
private char sex;[color=green]//性别[/color]
private String grade;[color=green]//年龄[/color]
private String remark;[color=green]//备注[/color]
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Student() {}
public Student(int id, String name, int age, char sex, String grade,
String remark) {
super();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.grade = grade;
this.remark = remark;
}
@Override
public String toString() {
return "Student [age=" + age + ", grade=" + grade + ", id=" + id
+ ", name=" + name + ", remark=" + remark + ", sex=" + sex
+ "]";
}
}
[b]2.新建类StudentInfo.java[/b]
根据 “对象库”中的两个map参数定义,字段名称需与规则中一致,如下
package com.flagleader.student;
import java.util.ArrayList;
import java.util.List;
public class StudentInfo {
private Student student=new Student();
private List<Teacher> teacher = new ArrayList<Teacher>();
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public List<Teacher> getTeacher() {
return teacher;
}
public void setTeacher(List<Teacher> teacher) {
this.teacher = teacher;
}
public StudentInfo() {
teacher.add(new Teacher(1, "李丽"));
teacher.add(new Teacher(2, "战栗"));
teacher.add(new Teacher(3, "庆阳"));
teacher.add(new Teacher(4, "周娇"));
teacher.add(new Teacher(5, "秦毅"));
}
}
[b]3.新建类StudentMap.java[/b]
“对象库”中所有参数,其中部分参数封装在Student.java中,在此定义一个Student类的字段,字段名由使用者定义,还有部分参数封装在StudentInfo.java中,在定义一个StudentInfo类的字段,字段名使用者定义,如下图:
package com.flagleader.student;
public class StudentMap {
private Student student =new Student();
private StudentInfo teacher=new StudentInfo();
public StudentInfo getTeacher() {
return teacher;
}
public void setTeacher(StudentInfo teacher) {
this.teacher = teacher;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public StudentMap() {
student = new Student(6, "庆隆", 12, '男', "六年级", "无");
}
}
[b]4.新建类StudentDto.java[/b]
在java工程中添加一个java类,名为StudentDto.java,其内容编辑如下
package com.flagleader.student;
import java.io.File;
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;
public class StudentDto {
public static void main(String[] args) {
try {
RuleEngineManager.getInstance().init(new File("E:\\rscfile"));
RuleEngine engine=RuleEngineFactory.newInstance().getRuleEngine();
StudentMap map=new StudentMap();
engine.executeBeans("student.info", map,map.getStudent());
System.out.println(map.getStudent());
System.out.println(map.getTeacher().getTeacher());
System.out.println(map.getTeacher().getStudent());
} catch (RuleEngineException e) {
e.printStackTrace();
}
}
}
[/size]
[size=medium][b]三、执行java测试类[/b][/size]
[size=medium] 点击执行后,可以看到如下结果:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8088/1dace2d8-9a11-3a7b-aeeb-12edf83b4615.png[/img]
[/align]
[size=medium] 这时候我们发现Teacher中的数据不对,那是因为我们规则中有对节点“teacher”进行了操作,修改规则,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8090/a696e7de-dc54-3204-b865-7829b4a14035.png[/img]
[/align]
[size=medium] 保存后将规则导出,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8094/bd600bca-ab2e-3274-a893-878c51c5be54.png[/img]
[/align]
[size=medium] 为了能执行规则件E:\rscfile\1.1\studnet\info.rsc,新建了一个java类StudentDto1.java,代码如下
package com.flagleader.student;
import java.io.File;
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;
public class StudentDto1 {
public static void main(String[] args) {
try {
RuleEngineManager.getInstance().init(new File("E:\\rscfile"));
RuleEngine engine=RuleEngineFactory.getInstance("1.1").getRuleEngine();
StudentMap map=new StudentMap();
engine.executeBeans("student.info", map,map.getStudent());
System.out.println(map.getStudent());
System.out.println(map.getTeacher().getTeacher());
} catch (RuleEngineException e) {
e.printStackTrace();
}
}
}
点击执行后,可以看到如下结果:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8096/f26609b7-939b-3dd0-9cd9-676c516987a0.png[/img]
[/align]
[size=medium] 说明已经调用了student.info规则包,并且根据传入的参数,返回处理结果。[/size]
[size=medium][b][align=center]——Java类中含类[/align][/b][/size]
[size=medium]本案例的需求是:
规则包:新建一个学生规则包,此规则包接受一系列参数(编号,姓名,性别,年龄,年级,备注),定义两个map参数(学生,教师)用于接收数据,一个学生由多名教师授课,录入一条学生信息,显示该学生的任课老师。
Java类调用:在Eclipse中制作,main中接收对象,将对象传给规则执行,查询执行结果,可执行选择版本,执行不同版本下的规则文件。[/size]
[size=medium][b]一、规则包开发[/b][/size]
[size=medium][b]1.新建规则包[/b]
右键点击工程“test1”—“新建规则包(P)”,并将规则包命名为“学生”,如下图:
[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7947/79ee6535-89a2-3f65-918d-6deed7af5d42.png[/img]
[/align]
[size=medium] 右键点击规则包“学生”下的“对象库”,在“对象库”中的传入数据中定义如下参数:(参照:规则包开发 3、定义参数)[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7949/831d0c1f-0da2-383c-ad6b-e4a8e4f99ea8.png[/img]
[/align]
[size=medium] 右键点击“对象库”—“添加对象分类”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7953/bcfbef94-54fc-37d2-84fa-31f312ae02b2.png[/img]
[/align]
[size=medium] 右键点击“对象分类”—“数据库字典”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7957/c814d0c6-a0b0-34fc-8fd1-ba321351e9f1.png[/img]
[/align]
[size=medium] 弹出窗体,进行修改后点击确定,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7959/a0bb7063-680e-3016-a539-a26f2cf967d3.png[/img]
[/align]
[size=medium] 将“对象库”中的参数复制到“数据字典”中,由于“数据字典”的特殊,复制的参数可能会发生改变,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7973/421b27ec-6000-3dec-aa9e-fd1bc305d7b8.png[/img]
[/align]
[size=medium] 修改成如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7975/c0240a68-55d8-3cf8-bf11-a2c9cf231062.png[/img]
[/align]
[size=medium] 点击“数据字典”,选择选下卡“数据字典操作”,点击图标[img]http://dl2.iteye.com/upload/attachment/0113/7977/67fa98ff-7401-381d-9d0d-04b990bdedce.png[/img],如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7979/ae59dee6-afae-3f88-8e04-41112d01f9ef.png[/img]
[/align]
[size=medium] 勾选linkData(java.util.Map)方法,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7981/7bf9288d-c58e-3c6b-b213-a0c421282baf.png[/img]
[/align]
[size=medium] 点击确定后显示如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7983/f4bcec6d-27ce-30c4-b899-822748e340a6.png[/img]
[/align]
[size=medium] 右键点击“对象库”—“添加树状结构”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7985/8a6b35e6-b0a6-30b9-a6a9-86f9e55584d5.png[/img]
[/align]
[size=medium] 将复制“对象库”的变量到“数据树”中的“数据树属性”选项卡中,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/7989/c3d172ce-425a-3033-8a73-7b5b27055f41.png[/img]
[/align]
[size=medium] 点击“数据树”中的“数据树操作”选项卡中的图标[img]http://dl2.iteye.com/upload/attachment/0113/7977/67fa98ff-7401-381d-9d0d-04b990bdedce.png[/img] ,弹出如下窗体,勾选上方法loadFromMap(java.util.Map)和createMapDate()两个方法,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8002/e0ebca1f-8df6-364e-ba39-962934dbf991.png[/img]
[/align]
[size=medium] 确定后显示如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8004/bd88c570-2b3e-3f01-9db5-ed0bd483a018.png[/img]
[/align]
[size=medium] 右键点击“数据树”—“添加树状结构”,并将该树状结构的节点改名为“学生”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8006/fbf35ba7-a1ac-30ca-ae16-d4cb11c1c805.png[/img]
[/align]
[size=medium] 定义“学生”参数和设置节点“学生”的属性,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8008/84e97744-fd5d-39ba-b9d8-1ee544e0b8be.png[/img]
[/align]
[size=medium] “教师”节点同“学生”节点,完成如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8010/2d37322f-e7ba-353b-aad3-85b3a3c5cdaa.png[/img]
[/align]
[size=medium][b]2.新建规则[/b]
右键点击规则包“学生”—“添加规则(N)”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8012/112ccddf-7e00-3f62-a409-ee2b1762f923.png[/img]
[/align]
[size=medium] 配置规则,点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8014/e80301e0-760c-3619-b56d-affa1347a306.png[/img] —“请点击选择”—“数据字典操作”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8016/8939a11c-f9d9-3e17-9711-fd7352f52a03.png[/img]
[/align]
[size=medium] 点击“点击选择字典表操作”—“数据字典”—“方法”—“数据库直接...”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8018/ec74f9d8-3999-3df2-9820-bc68bd0cf446.png[/img]
[/align]
[size=medium] 选择的方法,需要传参,点击“请选择”—“传入数据”—“学生”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8022/a3ba3139-9b48-3ad7-9cd1-4012f5153145.png[/img]
[/align]
[size=medium] 点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8014/e80301e0-760c-3619-b56d-affa1347a306.png[/img]—“执行方法”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8024/f6092770-c94e-3ac9-9aad-80525d5f1795.png[/img]
[/align]
[size=medium] 点击“选择方法”—“数据树”—“方法”—“数据树.loadFromMap({arg1})”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8030/fce46bbe-52f1-3366-8faa-a05979e91215.png[/img]
[/align]
[size=medium] 选择的方法需要传入一个map类型的方法,点击“请点击选择”—“选择值”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8032/f8a60e51-d0c1-31a8-b517-0d9dc594bb39.png[/img]
[/align]
[size=medium] 新建规则“字典数据”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8034/24543f30-3ca0-3dec-9b30-55138925cc3a.png[/img]
[/align]
[size=medium] 点击“数据字典”选择“数据字典数据”选项卡,复制“id”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8036/cf566e55-cb91-3664-9126-2906f1f8a3d5.png[/img]
[/align]
[size=medium] 将复制的id,粘贴到规则“字典数据”中,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8038/9a805c06-505a-377f-8d14-80195481c291.png[/img]
[/align]
[size=medium] 粘贴后如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8041/650e330e-8c47-33d8-9b5d-2f3546370bce.png[/img]
[/align]
[size=medium] 如下操作:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8044/fd1137f8-923a-39d0-98a9-b61350790a3c.png[/img]
[/align]
[size=medium] 点击“请选择”—“传入数据”—“编号”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8046/824dedd0-6b69-342f-8ad0-272e4063fe16.png[/img]
[/align]
[size=medium] 根据编号将其他数据添加进来,当添加到“性别”是,发现传入数据中没有对应的“性别”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8048/e0a7989c-69b4-30e6-bc9c-a2f18f15165f.png[/img]
[/align]
[size=medium] 复制“对象库”中的“性别”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8052/1e1bb48e-04c2-3cd6-893b-7a099fea0326.png[/img]
[/align]
[size=medium] 操作如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8054/de43bd30-7246-3c84-9763-683be68fb209.png[/img]
[/align]
[size=medium] 完成如下配置[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8056/68fc93c8-1ac6-3776-9254-5b49564cde5e.png[/img]
[/align]
[size=medium] 新建规则“数据树”,右键点击“数据树”—“树状结构操作向导”—“设置数据属性向导”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8058/85e01af4-67b5-356e-82ce-e5665ec26575.png[/img]
[/align]
[size=medium] 弹出窗体,勾选上字段,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8060/066ff8ac-5423-3248-b4f3-edbfa0ff495e.png[/img]
[/align]
[size=medium] 点击确定后,显示如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8062/79cfaffa-9bb2-391f-85ff-dd3b227a5d57.png[/img]
[/align]
[size=medium] 新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8064/332872c1-c07b-3ee1-adbe-7d8729ff0f79.png[/img]
[/align]
[size=medium] 勾选如下字段[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8066/c5f2f7a4-c0d1-34a1-825f-dd8906e2948f.png[/img]
[/align]
[size=medium] 点击确定后显示如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8068/1d6402f1-96ef-32a0-9881-eac86bbe2ce9.png[/img]
[/align]
[size=medium] 新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,修改规则如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8070/db22c8ed-6001-30ad-8bfb-c37fc7879f7b.png[/img]
[/align]
[size=medium] 设置属性,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8072/8e77210d-a020-32f2-89d9-5dc9dc7e1482.png[/img]
[/align]
[size=medium] 新建规则“教师取值”,点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8014/e80301e0-760c-3619-b56d-affa1347a306.png[/img] —“请点击选择”—“变量赋值”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8074/56e2f776-fbcd-38be-9f2a-3d558765b0bd.png[/img]
[/align]
[size=medium] 点击“选择变量”—“传入数据”—“教师”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8076/2fb13e8b-fb23-3243-b942-98f41844f24d.png[/img]
[/align]
[size=medium] 选择如下方法,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8078/c75554f6-9d62-33d4-b4a7-f81d52d1d528.png[/img]
[/align]
[size=medium] 完成规则配置[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8080/34eaf2db-0e7b-3d3e-b5f2-7ca8f2f4902d.png[/img]
[/align]
[size=medium] 修改规则包“学生”的外部调用名“student.info”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8082/be88a7e4-4e72-311c-9c3e-931bcaeb9b8a.png[/img]
[/align]
[size=medium] 选择规则包“学生”点击图标[img]http://dl2.iteye.com/upload/attachment/0113/8084/ccdbcf2d-bb25-3999-afee-ccee3b386648.png[/img] ,弹出窗体“浏览文件夹”,选择目录,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8086/4c16a811-15d8-34b4-885b-cec56c602527.png[/img]
[/align]
[size=medium][b]二、Java调用[/b][/size]
[size=medium][b]1.新建类Student.java[/b]
根据学生“节点”定义,[color=darkred]字段名称需与规则中一致[/color],如下
package com.flagleader.student;
[color=blue]/**
* 学生信息
* @author
*
*/[/color]
public class Student {
private int id;[color=green]//编号[/color]
private String name;[color=green]//姓名[/color]
private int age;[color=green]//年龄[/color]
private char sex;[color=green]//性别[/color]
private String grade;[color=green]//年龄[/color]
private String remark;[color=green]//备注[/color]
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Student() {}
public Student(int id, String name, int age, char sex, String grade,
String remark) {
super();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.grade = grade;
this.remark = remark;
}
@Override
public String toString() {
return "Student [age=" + age + ", grade=" + grade + ", id=" + id
+ ", name=" + name + ", remark=" + remark + ", sex=" + sex
+ "]";
}
}
[b]2.新建类StudentInfo.java[/b]
根据 “对象库”中的两个map参数定义,字段名称需与规则中一致,如下
package com.flagleader.student;
import java.util.ArrayList;
import java.util.List;
public class StudentInfo {
private Student student=new Student();
private List<Teacher> teacher = new ArrayList<Teacher>();
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public List<Teacher> getTeacher() {
return teacher;
}
public void setTeacher(List<Teacher> teacher) {
this.teacher = teacher;
}
public StudentInfo() {
teacher.add(new Teacher(1, "李丽"));
teacher.add(new Teacher(2, "战栗"));
teacher.add(new Teacher(3, "庆阳"));
teacher.add(new Teacher(4, "周娇"));
teacher.add(new Teacher(5, "秦毅"));
}
}
[b]3.新建类StudentMap.java[/b]
“对象库”中所有参数,其中部分参数封装在Student.java中,在此定义一个Student类的字段,字段名由使用者定义,还有部分参数封装在StudentInfo.java中,在定义一个StudentInfo类的字段,字段名使用者定义,如下图:
package com.flagleader.student;
public class StudentMap {
private Student student =new Student();
private StudentInfo teacher=new StudentInfo();
public StudentInfo getTeacher() {
return teacher;
}
public void setTeacher(StudentInfo teacher) {
this.teacher = teacher;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public StudentMap() {
student = new Student(6, "庆隆", 12, '男', "六年级", "无");
}
}
[b]4.新建类StudentDto.java[/b]
在java工程中添加一个java类,名为StudentDto.java,其内容编辑如下
package com.flagleader.student;
import java.io.File;
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;
public class StudentDto {
public static void main(String[] args) {
try {
RuleEngineManager.getInstance().init(new File("E:\\rscfile"));
RuleEngine engine=RuleEngineFactory.newInstance().getRuleEngine();
StudentMap map=new StudentMap();
engine.executeBeans("student.info", map,map.getStudent());
System.out.println(map.getStudent());
System.out.println(map.getTeacher().getTeacher());
System.out.println(map.getTeacher().getStudent());
} catch (RuleEngineException e) {
e.printStackTrace();
}
}
}
[/size]
[size=medium][b]三、执行java测试类[/b][/size]
[size=medium] 点击执行后,可以看到如下结果:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8088/1dace2d8-9a11-3a7b-aeeb-12edf83b4615.png[/img]
[/align]
[size=medium] 这时候我们发现Teacher中的数据不对,那是因为我们规则中有对节点“teacher”进行了操作,修改规则,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8090/a696e7de-dc54-3204-b865-7829b4a14035.png[/img]
[/align]
[size=medium] 保存后将规则导出,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8094/bd600bca-ab2e-3274-a893-878c51c5be54.png[/img]
[/align]
[size=medium] 为了能执行规则件E:\rscfile\1.1\studnet\info.rsc,新建了一个java类StudentDto1.java,代码如下
package com.flagleader.student;
import java.io.File;
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;
public class StudentDto1 {
public static void main(String[] args) {
try {
RuleEngineManager.getInstance().init(new File("E:\\rscfile"));
RuleEngine engine=RuleEngineFactory.getInstance("1.1").getRuleEngine();
StudentMap map=new StudentMap();
engine.executeBeans("student.info", map,map.getStudent());
System.out.println(map.getStudent());
System.out.println(map.getTeacher().getTeacher());
} catch (RuleEngineException e) {
e.printStackTrace();
}
}
}
点击执行后,可以看到如下结果:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0113/8096/f26609b7-939b-3dd0-9cd9-676c516987a0.png[/img]
[/align]
[size=medium] 说明已经调用了student.info规则包,并且根据传入的参数,返回处理结果。[/size]