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

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

[size=medium] 前面已经叙述了如何使用规则引擎,那么如何在Eclipse/MyEclipse中引入通过规则引擎编写好的模块呐?在接下来的连载中会详细介绍。
为了能够清晰的描述,还是用规则引擎重新搭建一个实例目吧:[/size]


[size=medium][b]一、编写实例[/b][/size]

[size=medium][b]1.案例场景描述:[/b][/size]

[size=medium] 外部系统传入一些学生基本信息(如:姓名、性别、年龄等),经规则引擎中的规则转换,学生信息以list信息返回给外部系统。[/size]

[size=medium][b]2.案例规则部分实现:[/b][/size]

[size=medium] 左键点击“文件”—“新建规则工程(N)”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9249/7b1cd701-c320-340b-8509-3565bdc7d984.png[/img]
[/align]

[size=medium] 弹出窗体“创建新工程”,工程名称为“test1”,存放路径默认,勾选上“工程名同名时覆盖”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9251/2d139dc7-f2cb-3764-8585-5a69f712facd.png[/img]
[/align]

[size=medium] [b]新建规则包:[/b]右键点击工程“test1”—“新建规则包”,并将其命名为“学生录入”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9253/850a2852-1335-3e85-8989-be8536c1817d.png[/img]
[/align]

[size=medium] [b]定义变量:[/b]点击对象库,查看其编辑窗体,点击传输数据中的[img]http://dl2.iteye.com/upload/attachment/0112/9279/e9957f04-048a-3f4e-8391-adc357ab3d3f.png[/img]图标,弹出窗体,名称“id”,类型选择“int”,显示名称“编号”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9255/149e4336-57a7-35e6-b124-233cc555fc47.png[/img]
[/align]

[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9257/83f3d609-77a9-38f3-ae4c-697a064c223b.png[/img]
[/align]

[size=medium] [b]添加计算表格:[/b]右键点击“对象库 ”—“添加计算表格”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9259/58dc60d6-0b6f-3b6c-b65e-af3a5209962c.png[/img]
[/align]

[size=medium] 弹出窗体,显示名称“学生表”,变量名称默认,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9261/23b89640-b9d9-3fb0-ac8a-f8c45cb390e9.png[/img]
[/align]

[size=medium] [b]定义表格列:[/b]选择传入数据中的参数,右键点击复制,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9263/6ebc2497-6a9f-3693-b07b-43cf408af584.png[/img]
[/align]

[size=medium] 点击计算表“学生表”,右键点击学生表结构选型卡中空白处,点击“粘贴”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9265/6981e447-5073-33cc-8aaa-7348e24f71a3.png[/img]
[/align]

[size=medium] [b] 规则编写:[/b]右键点击规则包“学生录入”—“添加规则(N)”,并将其命名为“添加”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9267/527aa481-2037-30ef-bdb7-8ab57b32fd2c.png[/img]
[/align]

[size=medium] 右键点击规则“添加”—“内存表格操作向导”—“对表格的列赋值向导”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9269/9216f146-7db0-3fbc-ba0e-0780fe12c596.png[/img]
[/align]

[size=medium] 选择需要插入的学生表的列,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9271/f2bfd9a0-6c13-3efb-afa4-c0ba4657b156.png[/img]
[/align]

[size=medium] 点击确定后,发现提示信息中提示错误信息,解决方法是,属性名“其他表格”,对应的属性值“允许设置起他表格的列”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9273/9ee4b4ee-a036-38d1-bf19-8f28cc4708a8.png[/img]
[/align]

[size=medium] 修改规则包“学生录入”的属性,属性名“[color=red]外部调用[/color]”,修改为“student.add”,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9275/85d9c657-b86c-3ebb-92df-6775ece37c72.png[/img]
[/align]

[size=medium] 勾选内存表中的getListResult方法,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9277/c3563ebc-b313-3dbd-b6e3-4f61b3b6f9b1.png[/img]
[/align]

[size=medium] 点击[img]http://dl2.iteye.com/upload/attachment/0112/9283/f5ff5dec-1a70-30aa-81f8-c060780e45a0.png[/img]图标—“变量赋值”—“传入数据”—“学生信息”,在点击如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9285/b120553c-e0a4-3e28-8b42-334f7e8635fc.png[/img]
[/align]

[size=medium] 选择方法如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9287/b11cf8d5-5202-3d8a-b32f-8c402aa42955.png[/img]
[/align]

[size=medium] 查看规则查询学生信息,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9289/e9afb159-452e-375a-ae75-0ac07bd0756b.png[/img]
[/align]

[size=medium] 点击规则包“学生录入”,选择测试选项卡,双击处输入值对应的列,进行输入值,输入完后,点击[img]http://dl2.iteye.com/upload/attachment/0112/9291/e5863e02-ca3d-3459-8b01-cec5bd462500.png[/img]图标,执行结果查看实际结果值列,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9293/ec32e65e-93cd-3c31-a8de-85e4cae36de2.png[/img]
[/align]

[size=medium] 导出多付编译文件:为外部程序调用不同版本规则预备。
在E盘 根目录下创建文件夹rscfile,再在recfile目录下创建文件夹1.1、1.2和default,点击规则包“学生录入”,点击[img]http://dl2.iteye.com/upload/attachment/0112/9295/1991bdce-1de8-30d2-89c2-dcc3266b1928.png[/img]图标 ,弹出浏览文件夹,选择default,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9297/c7efb8d3-1cef-3051-944b-4a7033969de0.png[/img]
[/align]

[size=medium] 成功后弹出提示,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9299/585c55e3-c8aa-3ad1-b0eb-fa2ff2428b5f.png[/img]
[/align]

[size=medium] [b]修改规则[/b] 如下:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9301/52e76224-278e-3328-9ac0-cb90e9c3d74a.png[/img]
[/align]

[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9303/2cdff9d8-416c-39f5-b413-eb7ea28ced07.png[/img]
[/align]

[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9305/6382bd7e-d772-3376-86d5-1d6d6fe85338.png[/img]
[/align]

[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9307/d79b926e-0861-3a3c-a31f-f8f644705349.png[/img]
[/align]

[size=medium] 导出编译文件到E:\rscfile\1.1目录下,如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9311/19ba420a-8e69-33c7-aa4a-3579e7719592.png[/img]
[/align]

[b][size=medium] 同理修改并保存到1.2版本[/size][/b]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9313/d783f033-e8bc-3a89-b018-7dc40d82e615.png[/img]
[/align]

[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9317/d4239710-c5f8-37f2-8ad7-26359780a066.png[/img]
[/align]

[size=medium] 开发环境要求:打开附带的java工程文件dtoTest。

JDK环境设置:Java工程使用的jdk必须在1.5以上,为了能更好的确定工程的jdk文件,下面我们来查看,操作如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9319/7f9af1a6-797f-3296-b51b-4c823c3afffc.png[/img]
[/align]

[size=medium] 弹出窗体,在左上方文 本框中输入“jdk”,点击Java Compiler,查看jdk,如果低于1.4,可进行更换,[color=red](JDK版本要求1.5以上(含1.5))[/color]如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9321/4c2f3407-ce14-333c-a88a-0c09113060fa.png[/img]
[/align]

[size=medium] [b]引入相关Jar包:[/b]点击工程“dtoTest”—“Build Path”—“Configure Build Path...”,
下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9323/09370d20-6a6c-3410-a4f9-5051bd1ed231.png[/img]
[/align]

[size=medium] 引入的jar位置,是工程目录下的... \Tomcat\webapps\ROOT\WEB-INF\lib ,
如:D:\VisualRules\Tomcat\webapps\ROOT\WEB-INF\lib,引入jar包有
common.jar、commons-beanutils.jar、commons-collections-3.1.jar、commons-lang-2.1.jar、
commons-logging.jar、engine.jar、ezmorph-1.0.5.jar、flservlet.jar、jdom.jar、json.jar,
如下图:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9325/bfd158d2-9e02-35bd-b9c3-6af9a45851c2.png[/img]
[/align]

[size=medium][b] 添加bean类[/b]
在java工程中添加一个java类,名为Student.java,其内容编辑如下:
package com.flagleader;
/**
* 学生信息
* @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() {
// TODO Auto-generated constructor stub
}
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
+ "]";
}
}

[/size]

[size=medium][b]二、Java类调用服务接口本地调用[/b][/size]

[size=medium] 在Eclipse中制作一个Test2类,main中接收参数输入姓名,通过接口RuleService调用执行本地规则编译文件,返回结果。[/size]

[size=medium][b] 1.添加java测试类:[/b][/size]

[size=medium] 在java工程中添加一个java类,名为Test2.java,其内容编辑如下:
package com.flagleader;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;
import com.flagleader.engine.RuleService;
import com.flagleader.engine.RuleServiceException;
import com.flagleader.engine.impl.LocalRuleServiceFactory;
/**
* 调用指定目录下默认文件下的编译文件
* 使用的接口是RuleService ,该接口可以用在本地调用,以及服务调用
* @author Administrator
*/
public class Test2 {
public static void main(String[] args) {
try {
// 编译文件指定目录,默认版本目录是指定目录下的default
RuleEngineManager.getInstance().init(new File("e:\\rscfile"));
// 工厂模式,该接口可以用在本地调用,以及服务调用
RuleService engine = new LocalRuleServiceFactory().getRuleService();
// 以dto形式为规则传参
Student student = new Student(1, "李丽", 12, '男', "六年级", "无");
// 执行规则,其中"student.add"为规则全名,student为传入参数
engine.executeBeans("student.add", student);
//判断engine.get("studentList")是不是集合类型
if (engine.get("studentList").getClass().isAssignableFrom(java.util.ArrayList.class)){
// 执行完规则后,获取数据,"studentList"必须和规则中取内存表数据的变量名一致
List list = (List) engine.get("studentList");
// 由于规则中采用的是list<list>类型,需要做两次转换
List list1 = (List) list.get(0);
// 循环次数为对象中字段个数
for (int i = 0; i < 6; i++) {
System.out.print(list1.get(i) + "\t");
}
}
} catch (RuleServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

[b] 2.执行java测试类[/b]
点击执行后,可以看到如下结果:[/size]
[align=center]
[img]http://dl2.iteye.com/upload/attachment/0112/9331/1a677d14-ead8-374e-8bca-24a2b3cba9b8.png[/img]
[/align]

[size=medium] 说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。[/size]
[size=medium] 对于接口调用有很多方式,例如:Java类调用服务接口本地调用、Java类调用本地调用、Java类调用本地调用指定版本、Java类通过Servlet调用-xml格式、Java类通过Servlet调用-json格式等。对于其他方式,在之后也会详细叙述。[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Visual C 开发实例大全(基础卷)》配套光盘教程是为初学者提供的一套针对Visual C开发的教学资料。该光盘包含了丰富的实例代码和详细的讲解,能够帮助读者快速入门并掌握Visual C开发的基础知识。 在这套教程中,读者可以学习到如何使用Visual C来开发Windows应用程序。通过实例的演示,读者可以学习到如何创建窗口、菜单、对话框等界面元素,并实现相应的功能。同时,读者还可以学习到如何使用Visual C的图形库和控件库,进行图形绘制、图像处理、文本处理等操作。 除了基础知识的学习,这套教程还提供了一些实际项目的开发示例,例如简单的文本编辑器、图片浏览器、计算器等。通过这些实例项目的学习,读者可以更好地理解如何利用Visual C进行项目开发,掌握一些常用的开发技巧和方法。 此外,光盘中还提供了一些附加资源,如常用函数库、开发工具等,以帮助读者更好地进行开发实践和练习。 总之,《Visual C 开发实例大全(基础卷)》配套光盘教程对于想要学习Visual C开发的初学者来说是一份很宝贵的教材。通过学习这套教程,读者可以系统地学习Visual C的基础知识,并通过实例的演示和实际项目的开发来提升自己的开发能力。 ### 回答2: Visual C++是一种常用的开发工具,可以用于编写Windows平台上的应用程序。配套光盘教程提供了丰富的实例代码和演示项目,旨在帮助初学者掌握Visual C++的基础知识和开发技巧。 配套光盘教程中的实例大全涵盖了多个应用领域,如图形界面设计、数据处理、网络编程等。这些实例覆盖了从简单到复杂的不同级别,从而逐步引导学习者提升编程能力。 光盘教程中的实例代码是经过精心挑选的,涵盖了Visual C++开发中的常见问题和技术难点。学习者可以通过对这些实例代码的理解和模仿,逐步掌握Visual C++的开发技巧和最佳实践。 通过配套光盘教程,学习者还可以学习到一些实用的开发工具和技术。例如,教程中可能会介绍一些常用的第三方库和控件,以及它们在实际项目中的应用。这些工具和技术可以帮助开发者更高效地开发各种应用。 总之,配套光盘教程是一种全面而实用的学习资源,对于想要学习和掌握Visual C++开发的初学者来说,具有重要的参考价值。通过学习教程中的实例,初学者可以快速入门并逐步提升自己的编程能力。同时,教程还可以帮助学习者了解并运用一些实用的开发工具和技术,提高开发效率。 ### 回答3: 《Visual C 开发实例大全(基础卷)配套光盘教程》是一套针对Visual C 开发的实例教程,旨在帮助开发人员更好地掌握和应用Visual C 开发工具和技术。 这套教程提供了大量的实例代码,并配备了光盘,方便学员使用实践和调试。光盘内包含了各种示例程序和项目文件,用户可以据此快速开始学习和开发。 该教程由浅入深地介绍了Visual C 的基础知识和编程技巧。从入门到进阶,内容涵盖了Visual C 编程的各个方面,包括界面设计、控件使用、数据操作、图形处理、网络编程等等。每个实例程序都有详细的注释和解释,帮助读者理解代码的逻辑和功能。 配套光盘上还提供了附加资源,如教程视频、示范项目等,进一步提升了学习的便利性和效果。学员可以通过观看视频教学,更加直观地了解Visual C 的使用方法和开发技巧。 《Visual C 开发实例大全(基础卷)配套光盘教程》适合想要从零基础学习Visual C 的初学者,也适合已有一定编程基础的开发人员提升技能。通过学习该教程,读者可以系统地学习和掌握Visual C 的使用方法和开发技巧,为自己的软件开发能力提升打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值