- 浏览: 55475 次
文章分类
最新评论
-
蒙奇君杰:
煎蛋就是幸福 写道我想说,lz你英语水平真不咋的,错误信息提示 ...
tomcat在Debug模式下无法启动解决办法 -
煎蛋就是幸福:
我想说,lz你英语水平真不咋的,错误信息提示的是在45秒内启动 ...
tomcat在Debug模式下无法启动解决办法
VisualRules接口调用(六)
——Java类中含类
本案例的需求是:
规则包:新建一个学生规则包,此规则包接受一系列参数(编号,姓名,性别,年龄,年级,备注),定义两个map参数(学生,教师)用于接收数据,一个学生由多名教师授课,录入一条学生信息,显示该学生的任课老师。
Java类调用:在Eclipse中制作,main中接收对象,将对象传给规则执行,查询执行结果,可执行选择版本,执行不同版本下的规则文件。
一、规则包开发
1.新建规则包
右键点击工程“test1”—“新建规则包(P)”,并将规则包命名为“学生”,如下图:
右键点击规则包“学生”下的“对象库”,在“对象库”中的传入数据中定义如下参数:(参照:规则包开发 3、定义参数)
右键点击“对象库”—“添加对象分类”,如下图:
右键点击“对象分类”—“数据库字典”,如下图:
弹出窗体,进行修改后点击确定,如下图:
将“对象库”中的参数复制到“数据字典”中,由于“数据字典”的特殊,复制的参数可能会发生改变,如下图:
修改成如下图:
点击“数据字典”,选择选下卡“数据字典操作”,点击图标,如下图:
勾选linkData(java.util.Map)方法,如下图:
点击确定后显示如下:
右键点击“对象库”—“添加树状结构”,如下图:
将复制“对象库”的变量到“数据树”中的“数据树属性”选项卡中,如下图:
点击“数据树”中的“数据树操作”选项卡中的图标 ,弹出如下窗体,勾选上方法loadFromMap(java.util.Map)和createMapDate()两个方法,如下图:
确定后显示如下:
右键点击“数据树”—“添加树状结构”,并将该树状结构的节点改名为“学生”,如下图:
定义“学生”参数和设置节点“学生”的属性,如下图:
“教师”节点同“学生”节点,完成如下:
2.新建规则
右键点击规则包“学生”—“添加规则(N)”,如下图:
配置规则,点击图标 —“请点击选择”—“数据字典操作”,如下图:
点击“点击选择字典表操作”—“数据字典”—“方法”—“数据库直接...”,如下图:
选择的方法,需要传参,点击“请选择”—“传入数据”—“学生”,如下图:
点击图标—“执行方法”,如下图:
点击“选择方法”—“数据树”—“方法”—“数据树.loadFromMap({arg1})”,如下图:
选择的方法需要传入一个map类型的方法,点击“请点击选择”—“选择值”,如下图:
新建规则“字典数据”,如下图:
点击“数据字典”选择“数据字典数据”选项卡,复制“id”,如下图:
将复制的id,粘贴到规则“字典数据”中,如下图:
粘贴后如下图:
如下操作:
点击“请选择”—“传入数据”—“编号”,如下图:
根据编号将其他数据添加进来,当添加到“性别”是,发现传入数据中没有对应的“性别”,如下图:
复制“对象库”中的“性别”,如下图:
操作如下图:
完成如下配置
新建规则“数据树”,右键点击“数据树”—“树状结构操作向导”—“设置数据属性向导”,如下图:
弹出窗体,勾选上字段,如下图:
点击确定后,显示如下图:
新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,如下图:
勾选如下字段
点击确定后显示如下:
新建规则“学生节点”, 右键点击“学生节点”—“树状结构操作向导”—“设置数据属性向导”,修改规则如下图:
设置属性,如下图:
新建规则“教师取值”,点击图标 —“请点击选择”—“变量赋值”,如下图:
点击“选择变量”—“传入数据”—“教师”,如下图:
选择如下方法,如下图:
完成规则配置
修改规则包“学生”的外部调用名“student.info”,如下图:
选择规则包“学生”点击图标 ,弹出窗体“浏览文件夹”,选择目录,如下图:
二、Java调用
1.新建类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
+ "]";
}
}
2.新建类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, "秦毅"));
}
}
3.新建类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, '男', "六年级", "无");
}
}
4.新建类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规则包,并且根据传入的参数,返回处理结果。
发表评论
-
规则引擎Visual Rules Solution开发基础教程【连载24】-- 使用VisualRules规则引擎实现业务逻辑
2016-04-29 09:33 911使用VisualRules规则引擎实现业务逻辑 ... -
规则引擎Visual Rules Solution开发基础教程【连载23】--规则协同管理之系统管理
2016-04-22 15:44 1000规则协同管理之系统管 ... -
规则引擎Visual Rules Solution开发基础教程【连载22】--规则协同管理之信息维护
2016-01-25 09:12 1015规则协同管理之信息维护 信息维护只有两个部分 ... -
规则引擎Visual Rules Solution开发基础教程【连载21】--规则协同管理之权限管理
2016-01-18 09:47 1325规则协同管理之权限管理 权限管理由三部分组成 ... -
规则引擎Visual Rules Solution开发基础教程【连载20】--规则协同管理之规则管理
2016-01-11 09:48 1476规则协同管理之规则管理 一、规则上传 我们 ... -
规则引擎Visual Rules Solution开发基础教程【连载19】--规则协同管理介绍
2016-01-07 09:20 670规则协同管理介绍 一、简介 在团队开发项目 ... -
规则引擎Visual Rules Solution开发基础教程【连载18】-- Linux环境 安装配置说明
2015-12-21 10:15 1267Linux环境 安装配置说明 一、安装配置测试环境及版本 ... -
规则引擎Visual Rules Solution开发基础教程【连载16】--VisualRules接口调用(五)
2015-12-07 09:09 1387VisualRules接口调用(五) Java类中的List ... -
规则引擎Visual Rules Solution开发基础教程【连载15】--VisualRules接口调用(四)
2015-11-30 09:11 1049VisualRules接口调用(四) 一、Java类调用服务 ... -
规则引擎Visual Rules Solution开发基础教程【连载14】--VisualRules接口调用(三)
2015-11-23 09:23 948VisualRules接口调用(三 ... -
规则引擎Visual Rules Solution开发基础教程【连载13】--VisualRules接口调用(二)
2015-11-16 10:31 930VisualRules接口调用(二) 接上一篇,下面介绍一下 ... -
规则引擎Visual Rules Solution开发基础教程【连载12】--VisualRules接口调用(一)
2015-11-09 10:25 1768VisualRules接口调用(一 ... -
规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用
2015-11-02 10:15 1315WebService 搭建及调用 webs ... -
规则引擎Visual Rules Solution开发基础教程【连载10】--VisualRules的组成及执行原理
2015-10-26 17:41 1176VisualRules的组成及执行原理 在 ... -
规则引擎Visual Rules Solution开发基础教程【连载9】--VisualRules实例二(下)
2015-10-19 10:46 886VisualRules实例二(下) 书接上 ... -
规则引擎Visual Rules Solution开发基础教程【连载8】--VisualRules实例二(中)
2015-10-12 10:11 1047VisualRules实例二(中) 上一篇 ... -
规则引擎Visual Rules Solution开发基础教程【连载7】--VisualRules实例二(上)
2015-10-08 11:45 990VisualRules实例二(上) ... -
规则引擎Visual Rules Solution开发基础教程【连载6】--VisualRules实例一
2015-09-28 11:22 670VisualRules实例一 以下通过一个 ... -
规则引擎Visual Rules Solution开发基础教程【连载5】--VisualRules深入了解
2015-09-21 10:02 1732VisualRules深入了解 通过前两篇的 ... -
规则引擎Visual Rules Solution开发基础教程【连载4】--VRS相关调用篇
2015-09-14 10:10 990VRS相关调用 一、Java类 ...
相关推荐
Visual Basic 6.0程序设计基础教程---李锦--大连理工大学出版社--2007.8.pdf
《Visual Rules规则引擎产品详解》 Visual Rules是一款由旗正信息公司自主研发的规则引擎产品,拥有完全独立的知识产权,专为中国市场打造。该产品旨在帮助企业高效管理业务规则,实现业务规则的快速更新和优化,...
在描述中提到的Visual Rules Solution旗正规则引擎中,决策池扮演了这样的角色。 1. **决策池功能介绍** 决策池的设计目标是提高规则的复用性和效率。在规则开发中,如果某些规则被频繁使用,将这些规则放入决策池...
2. **J2EE集成**:利用VisualRules提供的EJB Server业务规则服务器,实现规则的实时部署与调用。 #### 六、应用系统的使用与维护 业务支撑系统的日常使用与维护主要由业务人员或系统维护人员负责。他们的主要任务...
Visual Basic 6.0程序设计教程---曾强聪--中国水利水电出版社--2003.7.pdf
本篇主要介绍如何在Java环境中调用规则引擎,具体包括三种方法:Java类直接调用规则包、通过规则服务调用和通过SOAP方式调用。 1. **Java类调用规则包** 在Java项目中,首先需要配置类路径,将规则引擎的相关库...
在本文中,我们将深入探讨如何利用规则引擎,特别是Visual Rules Solution的旗正规则引擎,来访问和管理数据库中的部门信息,包括添加、修改、删除和查询部门等操作。 首先,我们要理解什么是数据库对象。在规则...
创建规则包的步骤简单明了,例如创建“基础规则”可以通过在Visual Rules Solution界面中选择新建规则包,并为其指定名称来完成。 2.1.2 变量定义 在规则包中,我们需要定义业务逻辑所需的变量。在“基础规则”中...
*************************************************************...Microsoft Visual C++ 2013 Redistributable(X64) - 12.0.40660 需先安装这个才行 *************************************************************
《Visual C++6.0实例教程》是一份专为初学者设计的教程,旨在通过具体的实例来教授如何在Microsoft Visual C++ 6.0(简称VC++6.0)环境中进行C++编程。Visual C++6.0是微软公司发布的一款强大的集成开发环境,它不仅...
在Visual Rules Solution这款规则引擎中,变量跟踪功能能够帮助用户深入了解规则执行的细节,尤其是在处理复杂的业务逻辑时。当我们在规则包测试中启用变量跟踪,可以观察到变量在每个规则执行前后以及规则集内的值...
下面将详细讨论规则引擎的版本控制以及如何在Visual Rules Solution的旗正规则引擎中实现这一功能。 首先,版本控制是规则引擎的一个重要特性。当业务规则不断迭代和更新时,传统的做法是直接修改代码,这可能导致...
ST Visual Programmer STM32(en.stvp-stm32)最新4.0
然后,在Visual C++中,需要引入相应的头文件,如`#include "mat.h"`,这包含了调用Matlab引擎所需的基本接口。接着,通过`MexFunction`接口,我们可以创建一个C函数来调用Matlab引擎。在这个函数中,可以使用`...
MySQL for Visual Studio 1.2.6 是一个官方提供的集成开发环境插件,它使得Visual Studio 2015用户能够方便地与MySQL数据库进行交互和开发。这个插件是MySQL与微软Visual Studio深度整合的一个体现,为C#开发者提供...
本书《Visual C# 2010 Recipes: A Problem-Solution Approach》是一部全面介绍Visual C# 2010开发技术的实用指南。全书共分为17章,覆盖了从基础的应用程序开发到高级的主题如并行编程和LINQ等各个方面。以下是各...
[Visual.C.开发实战1200例.第1卷].刘锐宁.扫描版.zip.002
Visual C++串口通信工程开发实例导航 - [求是科技].pdf
《Visual C++程序设计教程》是梁建武先生编著的一本专为初学者准备的编程教材,旨在帮助读者深入理解和掌握C++编程语言,特别是通过Microsoft的Visual C++集成开发环境进行应用开发。该教程涵盖了C++的基础语法、...