浏览 998 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2015-12-21
规则包:新建一个学生规则包,此规则包接受一系列参数(编号,姓名,性别,年龄,年级,备注),定义两个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规则包,并且根据传入的参数,返回处理结果。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |