- 浏览: 18408 次
- 性别:
文章分类
最新评论
本案例的需求是:
规则包:新建一个学生规则包,此规则包接受一系列参数(编号,姓名,性别,年龄,年级,备注),定义两个map参数(学生,教师)用于接收数据,一个学生由多名教师授课,录入一条学生信息,显示该学生的任课老师。
Java类调用:在Eclipse中制作,main中接收对象,将对象传给规则执行,查询执行结果,可执行选择版本,执行不同版本下的规则文件。
规则包开发
新建规则包
右键点击工程“test1”—“新建规则包(P)”,并将规则包命名为“学生”,如下图:
右键点击规则包“学生”下的“对象库”,在“对象库”中的传入数据中定义如下参数:(参照:规则包开发 3、定义参数)
右键点击“对象库”—“添加对象分类”,如下图:
右键点击“对象分类”—“数据库字典”,如下图:
弹出窗体,进行修改后点击确定,如下图:
将“对象库”中的参数复制到“数据字典”中,由于“数据字典”的特殊,复制的参数可能会发生改变,如下图:
修改成如下图:
点击“数据字典”,选择选下卡“数据字典操作”,点击图标 ,如下图:
勾选linkData(java.util.Map)方法,如下图:
点击确定后显示如下:
右键点击“对象库”—“添加树状结构”,如下图:
将复制“对象库”的变量到“数据树”中的“数据树属性”选项卡中,如下图:
点击“数据树”中的“数据树操作”选项卡中的图标 ,弹出如下窗体,勾选上方法loadFromMap(java.util.Map)和createMapDate()两个方法,如下图:
确定后显示如下:
右键点击“数据树”—“添加树状结构”,并将该树状结构的节点改名为“学生”,如下图:
定义“学生”参数和设置节点“学生”的属性,如下图:
“教师”节点同“学生”节点,完成如下:
图3-3-3-10-17 “教师”节点
新建规则
右键点击规则包“学生”—“添加规则(N)”,如下图:
配置规则,点击图标 —“请点击选择”—“数据字典操作”,如下图:
点击“点击选择字典表操作”—“数据字典”—“方法”—“数据库直接...”,如下图:
选择的方法,需要传参,点击“请选择”—“传入数据”—“学生”,如下图:
点击图标 —“执行方法”,如下图:
点击“选择方法”—“数据树”—“方法”—“数据树.loadFromMap({arg1})”,如下图:
选择的方法需要传入一个map类型的方法,点击“请点击选择”—“选择值”,如下图:
新建规则“字典数据”,如下图:
点击“数据字典”选择“数据字典数据”选项卡,复制“id”,如下图:
将复制的id,粘贴到规则“字典数据”中,如下图:
粘贴后如下图:
如下操作:
点击“请选择”—“传入数据”—“编号”,如下图:
根据编号将其他数据添加进来,当添加到“性别”是,发现传入数据中没有对应的“性别”,如下图:
复制“对象库”中的“性别”,如下图:
操作如下图:
完成如下配置
新建规则“数据树”,右键点击“数据树”—“树状结构操作向导”—“设置数据属性向导”,如下图:
弹出窗体,勾选上字段,如下图:
点击确定后,显示如下图:
新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,如下图:
勾选如下字段
点击确定后显示如下:
新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,修改规则如下图:
设置属性,如下图:
新建规则“教师取值”,点击图标 —“请点击选择”—“变量赋值”,如下图:
点击“选择变量”—“传入数据”—“教师”,如下图:
选择如下方法,如下图:
完成规则配置
修改规则包“学生”的外部调用名“student.info”,如下图:
选择规则包“学生”点击图标 ,弹出窗体“浏览文件夹”,选择目录,如下图:
图3-3-3-10-48 导出编译文件
Java调用
新建类Student.java
根据学生“节点”定义,字段名称需与规则中一致,如下
package com.flagleader.student;
/**
* 学生信息
* @author
*
*/
public class Student {
private int id;//编号
private String name;//姓名
private int age;//年龄
private char sex;//性别
private String grade;//年龄
private String remark;//备注
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
+ "]";
}
}
新建类StudentInfo.java
根据 “对象库”中的两个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, "秦毅"));
}
}
新建类StudentMap.java
“对象库”中所有参数,其中部分参数封装在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, '男', "六年级", "无");
}
}
新建类StudentDto.java
在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();
}
}
}
执行java测试类
点击执行后,可以看到如下结果:
这时候我们发现Teacher中的数据不对,那是因为我们规则中有对节点“teacher”进行了操作,修改规则,如下图:
保存后将规则导出,如下图:
为了能执行规则件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();
}
}
}
点击执行后,可以看到如下结果:
说明已经调用了student.info规则包,并且根据传入的参数,返回处理结果。
规则包:新建一个学生规则包,此规则包接受一系列参数(编号,姓名,性别,年龄,年级,备注),定义两个map参数(学生,教师)用于接收数据,一个学生由多名教师授课,录入一条学生信息,显示该学生的任课老师。
Java类调用:在Eclipse中制作,main中接收对象,将对象传给规则执行,查询执行结果,可执行选择版本,执行不同版本下的规则文件。
规则包开发
新建规则包
右键点击工程“test1”—“新建规则包(P)”,并将规则包命名为“学生”,如下图:
右键点击规则包“学生”下的“对象库”,在“对象库”中的传入数据中定义如下参数:(参照:规则包开发 3、定义参数)
右键点击“对象库”—“添加对象分类”,如下图:
右键点击“对象分类”—“数据库字典”,如下图:
弹出窗体,进行修改后点击确定,如下图:
将“对象库”中的参数复制到“数据字典”中,由于“数据字典”的特殊,复制的参数可能会发生改变,如下图:
修改成如下图:
点击“数据字典”,选择选下卡“数据字典操作”,点击图标 ,如下图:
勾选linkData(java.util.Map)方法,如下图:
点击确定后显示如下:
右键点击“对象库”—“添加树状结构”,如下图:
将复制“对象库”的变量到“数据树”中的“数据树属性”选项卡中,如下图:
点击“数据树”中的“数据树操作”选项卡中的图标 ,弹出如下窗体,勾选上方法loadFromMap(java.util.Map)和createMapDate()两个方法,如下图:
确定后显示如下:
右键点击“数据树”—“添加树状结构”,并将该树状结构的节点改名为“学生”,如下图:
定义“学生”参数和设置节点“学生”的属性,如下图:
“教师”节点同“学生”节点,完成如下:
图3-3-3-10-17 “教师”节点
新建规则
右键点击规则包“学生”—“添加规则(N)”,如下图:
配置规则,点击图标 —“请点击选择”—“数据字典操作”,如下图:
点击“点击选择字典表操作”—“数据字典”—“方法”—“数据库直接...”,如下图:
选择的方法,需要传参,点击“请选择”—“传入数据”—“学生”,如下图:
点击图标 —“执行方法”,如下图:
点击“选择方法”—“数据树”—“方法”—“数据树.loadFromMap({arg1})”,如下图:
选择的方法需要传入一个map类型的方法,点击“请点击选择”—“选择值”,如下图:
新建规则“字典数据”,如下图:
点击“数据字典”选择“数据字典数据”选项卡,复制“id”,如下图:
将复制的id,粘贴到规则“字典数据”中,如下图:
粘贴后如下图:
如下操作:
点击“请选择”—“传入数据”—“编号”,如下图:
根据编号将其他数据添加进来,当添加到“性别”是,发现传入数据中没有对应的“性别”,如下图:
复制“对象库”中的“性别”,如下图:
操作如下图:
完成如下配置
新建规则“数据树”,右键点击“数据树”—“树状结构操作向导”—“设置数据属性向导”,如下图:
弹出窗体,勾选上字段,如下图:
点击确定后,显示如下图:
新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,如下图:
勾选如下字段
点击确定后显示如下:
新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,修改规则如下图:
设置属性,如下图:
新建规则“教师取值”,点击图标 —“请点击选择”—“变量赋值”,如下图:
点击“选择变量”—“传入数据”—“教师”,如下图:
选择如下方法,如下图:
完成规则配置
修改规则包“学生”的外部调用名“student.info”,如下图:
选择规则包“学生”点击图标 ,弹出窗体“浏览文件夹”,选择目录,如下图:
图3-3-3-10-48 导出编译文件
Java调用
新建类Student.java
根据学生“节点”定义,字段名称需与规则中一致,如下
package com.flagleader.student;
/**
* 学生信息
* @author
*
*/
public class Student {
private int id;//编号
private String name;//姓名
private int age;//年龄
private char sex;//性别
private String grade;//年龄
private String remark;//备注
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
+ "]";
}
}
新建类StudentInfo.java
根据 “对象库”中的两个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, "秦毅"));
}
}
新建类StudentMap.java
“对象库”中所有参数,其中部分参数封装在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, '男', "六年级", "无");
}
}
新建类StudentDto.java
在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();
}
}
}
执行java测试类
点击执行后,可以看到如下结果:
这时候我们发现Teacher中的数据不对,那是因为我们规则中有对节点“teacher”进行了操作,修改规则,如下图:
保存后将规则导出,如下图:
为了能执行规则件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();
}
}
}
点击执行后,可以看到如下结果:
说明已经调用了student.info规则包,并且根据传入的参数,返回处理结果。
相关推荐
Java版精华区 <br>含java jsp及js等精华帖子合集<br>适合收藏 查询<br><br>序号 精华区主题 <br>--------------------------------<br> 1. [目录]Java教程 <br> 1. [目录]Java语言教程 <br> 2. [目录]来自java的传说...
<br><br>开发环境:Visual Assist X兼容于以下开发环境,当您改变或新增了IDE时,需要重新安装Visual Assist X:<br><br>Microsoft Visual Studio 2005 Team System<br>Microsoft Visual Studio 2005 Professional ...
<br><br>开发环境:Visual Assist X兼容于以下开发环境,当您改变或新增了IDE时,需要重新安装Visual Assist X:<br><br>Microsoft Visual Studio 2005 Team System<br>Microsoft Visual Studio 2005 Professional ...
<br>UltraEdit 7.2<br>WebGain Studio 4 with VisualCafe<br>Forte for Java开发指南<br>Dreamweaver UltraDev<br>IBM NetObjects ScriptBuilder3.0<br>使用HomeSite加速JSP的开发<br>Java2的安全新特性下的Applet...
本人不想使用庞大的Visual <br>Studio,但为了能编辑和使用<br>java,不得不开发了这一款小工具<br>,可以编译java程序,但是必须<br>安装好Java环境.<br><br> 本编辑器有如下功能或者是<br>如下优点:<br> 1,关键字...
<br>源文件的运行环境<br>操作系统:Windows 2000及其以上版本<br>开发环境:Microsoft Visual Studio 2005及其以上版本<br>数据库:SQL Server 2005及其以上版本<br>Web服务器:IIS 5.1及以上版本<br>来源...
1,01.zip<br>Toolbar - Custom status messages and tooltips<br>用户状态信息与工具提示(3KB)<END><br>2,02.zip<br>Remove system menu from floating toolbar<br>从浮动工具条中去除系统菜单(2KB)<END><br>3,03....
1,pic_open.zip<br>带位图预览的打开文件对话框(4KB)<END><br>2,bmpdlg.zip<br>一个位图对话框类 (11KB)<END><br>3,folder.zip<br>只显示文件夹信息的文件对话框(2KB)<END><br>4,dir_pic.zip<br>文件目录搜集工具...
1,01.zip<br>Output<br>显示所有的调试信息(5KB)<END><br>2,02.zip<br>Some general debugging tips<br>一般的调试技巧(11KB)<END><br>3,03.zip<br>Debugging ISAPI extension<br>调试ISAPI扩展(4KB)<END><br>4,04....
C#编程经验技巧宝典源代码,目录如下:<br>第1章 开发环境 1<br><br>1.1 Visual Studio开发环境安装与配置 2<br><br>0001 安装Visual Studio 2005开发环境须知 2<br><br>0002 配置合适的Visual Studio 2005...
<br> Word OCX ActiveX控件 是一个有功能的强大针对MS Word开发的ActiveX控件。...<br> <br> Word OCX ActiveX控件屏幕截图:<br><br> <img src=DownloadFilesother_activeximageswordocx.jpg><br><br>
CButtonST.zip<br>只要你的程序中使用按钮,这个类库就使你可以轻松做出图文并茂的按钮来(133KB)<END><br>10,hoverbut.zip<br>这个类库是对鼠标敏感的按纽,你用它可以做出象Office助手提示选项那样的东东来(24KB)...
DriverStudio 3.2 升级补丁<br><br>将DriverStudio 3.2升级至DriverStudio 3.2.1<br><br>原说明如下:<br><br>Compuware DriverStudio – DriverSuite<br>Version 3.2 ONLY<br><br>Version 3.2 patch.<br>The ...
* Home Page<br>* http://visual-mingw.sourceforge.net/<br>*<br>* Mailing list<br>* http://sourceforge.net/mail/?group_id=46778<br>* visual-mingw-general@lists.sourceforge.net<br>*<br>* License<br>* ...
/language:<language> 用于生成的代理类的语言。请从“CS”、“VB”、“JS”、“VJS”、 “CPP”中选择,或者为实现 System.CodeDom.Compiler.CodeDomProvider 的类提供一个完全限定的名称。默认语言为“CS”...
一个绘画的例子(165KB)<END><br>9,autofont.zip<br>自动字体处理类(3KB)<END><br>10,colorapp.zip<br>CColor - 在一个类中包括了RGB和HLS设定可执行程序(10KB)<END><br>11,colorapp2.zip<br>CColor - 在一个类中包括...
19<br>2.2文档窗口 20<br>2.2.1文档窗口中的视图 20<br>2.2.2标记导航器 21<br>2.2.3页面标签 22<br>2.2.4代码改变状态的通知 23<br>2.2.5错误通知和辅助 23<br>2.3工具箱 25<br>2.4SolutionExplorer 26<br>2.5...
<artifactId>javacv</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>1.5.6</version> </dependency> ...
<br><br>Visual Assist X具有强大的编辑特色,提高了生产效率,可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到Visual Assist X为您带来的好处。 <br><br>Visual Assist...
☆☆☆☆ Visual Basic 6.0 SP6 简体中文迷你版 ☆☆☆☆<br><br>此版本是在以前网上流传的Visual Basic 6.0 SP6迷你版基础上修改制作而成。它集成了最新的Service Pack 6升级包,以及“类生成器”和“资源编辑器”...