- 浏览: 55306 次
文章分类
最新评论
-
蒙奇君杰:
煎蛋就是幸福 写道我想说,lz你英语水平真不咋的,错误信息提示 ...
tomcat在Debug模式下无法启动解决办法 -
煎蛋就是幸福:
我想说,lz你英语水平真不咋的,错误信息提示的是在45秒内启动 ...
tomcat在Debug模式下无法启动解决办法
VisualRules接口调用(一)
前面已经叙述了如何使用规则引擎,那么如何在Eclipse/MyEclipse中引入通过规则引擎编写好的模块呐?在接下来的连载中会详细介绍。
为了能够清晰的描述,还是用规则引擎重新搭建一个实例目吧:
一、编写实例
1.案例场景描述:
外部系统传入一些学生基本信息(如:姓名、性别、年龄等),经规则引擎中的规则转换,学生信息以list信息返回给外部系统。
2.案例规则部分实现:
左键点击“文件”—“新建规则工程(N)”,如下图:
弹出窗体“创建新工程”,工程名称为“test1”,存放路径默认,勾选上“工程名同名时覆盖”,如下图:
新建规则包:右键点击工程“test1”—“新建规则包”,并将其命名为“学生录入”,如下图:
定义变量:点击对象库,查看其编辑窗体,点击传输数据中的图标,弹出窗体,名称“id”,类型选择“int”,显示名称“编号”,如下图:
添加计算表格:右键点击“对象库 ”—“添加计算表格”,如下图:
弹出窗体,显示名称“学生表”,变量名称默认,如下图:
定义表格列:选择传入数据中的参数,右键点击复制,如下图:
点击计算表“学生表”,右键点击学生表结构选型卡中空白处,点击“粘贴”,如下图:
规则编写:右键点击规则包“学生录入”—“添加规则(N)”,并将其命名为“添加”,如下图:
右键点击规则“添加”—“内存表格操作向导”—“对表格的列赋值向导”,如下图:
选择需要插入的学生表的列,如下图:
点击确定后,发现提示信息中提示错误信息,解决方法是,属性名“其他表格”,对应的属性值“允许设置起他表格的列”,如下图:
修改规则包“学生录入”的属性,属性名“外部调用”,修改为“student.add”,如下图:
勾选内存表中的getListResult方法,如下图:
点击图标—“变量赋值”—“传入数据”—“学生信息”,在点击如下图:
选择方法如下图:
查看规则查询学生信息,如下图:
点击规则包“学生录入”,选择测试选项卡,双击处输入值对应的列,进行输入值,输入完后,点击图标,执行结果查看实际结果值列,如下图:
导出多付编译文件:为外部程序调用不同版本规则预备。
在E盘 根目录下创建文件夹rscfile,再在recfile目录下创建文件夹1.1、1.2和default,点击规则包“学生录入”,点击图标 ,弹出浏览文件夹,选择default,如下图:
成功后弹出提示,如下图:
修改规则 如下:
导出编译文件到E:\rscfile\1.1目录下,如下图:
同理修改并保存到1.2版本
开发环境要求:打开附带的java工程文件dtoTest。
JDK环境设置:Java工程使用的jdk必须在1.5以上,为了能更好的确定工程的jdk文件,下面我们来查看,操作如下图:
弹出窗体,在左上方文 本框中输入“jdk”,点击Java Compiler,查看jdk,如果低于1.4,可进行更换,(JDK版本要求1.5以上(含1.5))如下图:
引入相关Jar包:点击工程“dtoTest”—“Build Path”—“Configure Build Path...”,
下图:
引入的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,
如下图:
添加bean类
在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
+ "]";
}
}
二、Java类调用服务接口本地调用
在Eclipse中制作一个Test2类,main中接收参数输入姓名,通过接口RuleService调用执行本地规则编译文件,返回结果。
1.添加java测试类:
在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();
}
}
}
2.执行java测试类
点击执行后,可以看到如下结果:
说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
对于接口调用有很多方式,例如:Java类调用服务接口本地调用、Java类调用本地调用、Java类调用本地调用指定版本、Java类通过Servlet调用-xml格式、Java类通过Servlet调用-json格式等。对于其他方式,在之后也会详细叙述。
发表评论
-
规则引擎Visual Rules Solution开发基础教程【连载24】-- 使用VisualRules规则引擎实现业务逻辑
2016-04-29 09:33 907使用VisualRules规则引擎实现业务逻辑 ... -
规则引擎Visual Rules Solution开发基础教程【连载23】--规则协同管理之系统管理
2016-04-22 15:44 998规则协同管理之系统管 ... -
规则引擎Visual Rules Solution开发基础教程【连载22】--规则协同管理之信息维护
2016-01-25 09:12 1014规则协同管理之信息维护 信息维护只有两个部分 ... -
规则引擎Visual Rules Solution开发基础教程【连载21】--规则协同管理之权限管理
2016-01-18 09:47 1323规则协同管理之权限管理 权限管理由三部分组成 ... -
规则引擎Visual Rules Solution开发基础教程【连载20】--规则协同管理之规则管理
2016-01-11 09:48 1474规则协同管理之规则管理 一、规则上传 我们 ... -
规则引擎Visual Rules Solution开发基础教程【连载19】--规则协同管理介绍
2016-01-07 09:20 666规则协同管理介绍 一、简介 在团队开发项目 ... -
规则引擎Visual Rules Solution开发基础教程【连载18】-- Linux环境 安装配置说明
2015-12-21 10:15 1265Linux环境 安装配置说明 一、安装配置测试环境及版本 ... -
规则引擎Visual Rules Solution开发基础教程【连载17】--VisualRules接口调用(六)
2015-12-16 11:28 1019VisualRules接口调用(六) ——Java类中含类 ... -
规则引擎Visual Rules Solution开发基础教程【连载16】--VisualRules接口调用(五)
2015-12-07 09:09 1386VisualRules接口调用(五) Java类中的List ... -
规则引擎Visual Rules Solution开发基础教程【连载15】--VisualRules接口调用(四)
2015-11-30 09:11 1047VisualRules接口调用(四) 一、Java类调用服务 ... -
规则引擎Visual Rules Solution开发基础教程【连载14】--VisualRules接口调用(三)
2015-11-23 09:23 943VisualRules接口调用(三 ... -
规则引擎Visual Rules Solution开发基础教程【连载13】--VisualRules接口调用(二)
2015-11-16 10:31 926VisualRules接口调用(二) 接上一篇,下面介绍一下 ... -
规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用
2015-11-02 10:15 1308WebService 搭建及调用 webs ... -
规则引擎Visual Rules Solution开发基础教程【连载10】--VisualRules的组成及执行原理
2015-10-26 17:41 1175VisualRules的组成及执行原理 在 ... -
规则引擎Visual Rules Solution开发基础教程【连载9】--VisualRules实例二(下)
2015-10-19 10:46 883VisualRules实例二(下) 书接上 ... -
规则引擎Visual Rules Solution开发基础教程【连载8】--VisualRules实例二(中)
2015-10-12 10:11 1040VisualRules实例二(中) 上一篇 ... -
规则引擎Visual Rules Solution开发基础教程【连载7】--VisualRules实例二(上)
2015-10-08 11:45 986VisualRules实例二(上) ... -
规则引擎Visual Rules Solution开发基础教程【连载6】--VisualRules实例一
2015-09-28 11:22 662VisualRules实例一 以下通过一个 ... -
规则引擎Visual Rules Solution开发基础教程【连载5】--VisualRules深入了解
2015-09-21 10:02 1727VisualRules深入了解 通过前两篇的 ... -
规则引擎Visual Rules Solution开发基础教程【连载4】--VRS相关调用篇
2015-09-14 10:10 988VRS相关调用 一、Java类 ...
相关推荐
Visual Basic 6.0程序设计基础教程---李锦--大连理工大学出版社--2007.8.pdf
Visual Rules是一款由旗正信息公司自主研发的规则引擎产品,拥有完全独立的知识产权,专为中国市场打造。该产品旨在帮助企业高效管理业务规则,实现业务规则的快速更新和优化,同时提供卓越的性能和稳定性。 一、...
在描述中提到的Visual Rules Solution旗正规则引擎中,决策池扮演了这样的角色。 1. **决策池功能介绍** 决策池的设计目标是提高规则的复用性和效率。在规则开发中,如果某些规则被频繁使用,将这些规则放入决策池...
2. **J2EE集成**:利用VisualRules提供的EJB Server业务规则服务器,实现规则的实时部署与调用。 #### 六、应用系统的使用与维护 业务支撑系统的日常使用与维护主要由业务人员或系统维护人员负责。他们的主要任务...
本篇主要介绍如何在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 Rules Solution这款规则引擎中,变量跟踪功能能够帮助用户深入了解规则执行的细节,尤其是在处理复杂的业务逻辑时。当我们在规则包测试中启用变量跟踪,可以观察到变量在每个规则执行前后以及规则集内的值...
下面将详细讨论规则引擎的版本控制以及如何在Visual Rules Solution的旗正规则引擎中实现这一功能。 首先,版本控制是规则引擎的一个重要特性。当业务规则不断迭代和更新时,传统的做法是直接修改代码,这可能导致...
ST Visual Programmer STM32(en.stvp-stm32)最新4.0
接着,通过`MexFunction`接口,我们可以创建一个C函数来调用Matlab引擎。在这个函数中,可以使用`engOpen`函数启动引擎,`engEvalString`执行Matlab代码,最后用`engClose`关闭引擎。 标签"matlab 混合编程 VC++ ...
在IT行业中,数据库开发是一项至关重要的技能,尤其是在使用Visual C++这样的强大开发工具时。"Visual C++数据库开发基础与应用"这个主题涵盖了C++编程语言与数据库管理系统(DBMS)交互的基础知识和实践应用。这...
MySQL for Visual Studio 1.2.6 是一个官方提供的集成开发环境插件,它使得Visual Studio 2015用户能够方便地与MySQL数据库进行交互和开发。这个插件是MySQL与微软Visual Studio深度整合的一个体现,为C#开发者提供...
MySQL for Visual Studio 是一个插件,它允许开发人员在Visual Studio环境中直接管理MySQL数据库,进行数据操作、设计表结构、编写SQL查询以及执行其他数据库相关的任务。版本1.2.7提供了与Visual Studio的紧密集成...
本书《Visual C# 2010 Recipes: A Problem-Solution Approach》是一部全面介绍Visual C# 2010开发技术的实用指南。全书共分为17章,覆盖了从基础的应用程序开发到高级的主题如并行编程和LINQ等各个方面。以下是各...
《Visual C++程序设计教程》是梁建武先生编著的一本专为初学者准备的编程教材,旨在帮助读者深入理解和掌握C++编程语言,特别是通过Microsoft的Visual C++集成开发环境进行应用开发。该教程涵盖了C++的基础语法、...
Visual-Basic基础语法-常规 Visual Basic 代码的词法规则指南 Visual Basic 程序的编译首先涉及到将原始的 Unicode 字符流转换为有序的词法标记集。因为 Visual Basic 语言不是自由格式语言,标记集随后进一步划分为...