一、Java类通过Servlet调用-xml格式
webrule是VisualRules提供的web管理平台,在此webrule放在VisualRules安装目录下Tomcat下的webapps目录下的,如D:\VisualRules\Tomcat\webapps,启动Apache Tomcat rules,如下图:
1.配置web.xml
配置webrules下的web.xml,既
D:\VisualRules\Tomcat\webapps\webrule\WEB-INF\web.xml。
参考:webrule\WEB-INF\web.xml。
配置的web.xml需注意配置如下信息:
<servlet>
<description>
</description>
<display-name>RuleServlet</display-name>
<servlet-name>RuleServlet</servlet-name>
<servlet-class>com.flagleader.webrules.RuleServlet</servlet-clas>
<init-param>
<param-name>onlyregist</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>edition</param-name>
<param-value>stan</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RuleServlet</servlet-name>
<url-pattern>/servlet/readrule.servlet</url-pattern>
</servlet-mapping>
设置好上述才能调用:
http://localhost:8880/webrule/servlet/ruleservlet.servlet
配置说明:
对web.xml中的servlet说明文档webrule\WEB-INF\readme.txt。
解析web.xml:
..\webrule\WEB-INF\web.xml,《web.xml》解析.txt是对web.xml中的servlet的一一解释,能更好的确定需要配置的属性,可以精简web.xml文件。
编译文件存放目录:
将编译文件放在..\ webrule\WEB-INF\classes目录下,如下图:
2.登录webrule管理平台:
访问http://localhost:8880/webrule/server/,登录用户名默认是admin,密码是admin123,如下图:
3.webrule管理平台添加任务和添加服务:
登录后,点击选项卡“规则执行版本”中看到存放在..\ webrule\WEB-INF\classes目录下的编译文件(即4、编译文件存放目录),点击选项卡“规则执行版本”—“公用版本”,勾选上学生录入student.add,在点击添加到任务,如下图:
点击选项卡“规则执行版本”,点击右侧树状菜单中的“公用版本”,勾选上学生录入student.add,在点击添加到服务,如下图:
4.查看任务和服务:
点击选项卡“规则执行任务”,查看任务学生录入,如下图:
点击选项卡“规则执行服务”,查看服务学生录入,服务需要启动,如下图:
5.添加java测试类
在java工程中添加一个java类,名为Test4.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;
import com.flagleader.engine.impl.RuleServerServletFactory;
/**
* 调用指定目录下默认文件下的编译文件
* 使用的接口是RuleService ,该接口可以用在本地调用,以及服务调用
* servlet调用
* @author Administrator*
*/
public class Test4 {
public static void main(String[] args) {
try {
// 工厂模式,该接口可以用在本地调用,以及服务调用
RuleService engine =new RuleServerServletFactory("http://localhost:8880/webrule/servlet/ruleservlet.servlet").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-generatedcatch block
e.printStackTrace();
}
}
}
6.执行java测试类
点击执行后,可以看到如下结果:
说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
二、Java类通过Servlet调用-xml格式(调用指定版本)
完成 Java类通过Servlet调用-xml格式的1到7小点操作,
即(1、配置web.xml 2、配置说明 3、解析web.xml 4、编译文件存放目录 5、登录webrule管理平台 6、webrule管理平台添加任务和添加服务 7、查看任务和服务)
1.新建版本库
访问webrule下的servser的index.jsp,即
http://localhost:8880/webrule/server点击选项卡“规则执行版本”,右键点击左边窗体“规则库版本”,选择“新建版本库”,如下图:
弹出窗体“工程信息”,工程名称文本框中输入1.1,如下图:
查看新建的1.1版本库,我们可以看到“学生录入”,查看Java类通过Servlet调用-xml格式的4、编译文件存放目录,在此我们不是存放
D:\VisualRules\Tomcat\webapps\webrule\WEB-INF\classes目录,而是
D:\VisualRules\Tomcat\webapps\webrule\WEB-INF\rsc\1.1目录,这样在新建的1.1版本库中就能看到“学生录入”,如下图:
复制E:\rscfile\1.1目录下的student文件夹到
D:\VisualRules\Tomcat\webapps\webrule\WEB-INF\rsc\1.1目录下,如下图:
2.添加java测试类
在java工程中添加一个java类,名为Tes5.java,其内容编辑如下:
package com.flagleader;
import java.util.List;
import com.flagleader.engine.RuleService;
import com.flagleader.engine.RuleServiceException;
import com.flagleader.engine.impl.RuleServerServletFactory;
/**
* 调用启动文件
* 使用的接口是RuleService ,该接口可以用在本地调用,以及服务调用, servlet调用
* 执行哪个版本下的编译文件。
* 如engine.setLibraryName("1.1");
* @author Administrator *
*/
public class Test5{
public static void main(String[] args) {
try {
// 工厂模式,该接口可以用在本地调用,以及服务调用
RuleService engine =new RuleServerServletFactory("http://localhost:8880/webrule/servlet/ruleservlet.servlet").getRuleService();
//执行哪个版本下的编译文件
engine.setLibraryName("1.1");
// 以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-generatedcatch block
e.printStackTrace();
}
}
}
3.执行java测试类
点击执行后,可以看到如下结果:
说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。
同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
产品试用下载链接:试用下载_Visual Rules (flagleader.com)