VisualRules接口调用(四)

来源:互联网 发布:caffe 找不到cudnn 编辑:程序博客网 时间:2024/06/05 06:40


    博客分类:

VisualRules接口调用(四)


一、Java类调用服务接口本地调用 

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

1.添加java测试类 

伦理片 http://www.dotdy.com/

         在java工程中添加一个java类,名为Test1.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测试类 

         点击执行后,可以看到如下结果: 

 

影音先锋电影 http://www.iskdy.com/ 
         说明已经调用了student.add规则包,并且根据传入的参数,返回处理结果以list<list>形式展示。 
         同理,任何的其他java类,只需加入上述的代码,即可完成调用规则包的工作。
 

二、Java类通过不同服务调用-传输数据格式类型 

         参数streamtype默认为1,可以不进行配置,可以根据需求配置传输数据格式类型,0表示原始字符串格式。1表示加密压缩字符串。2表示压缩字符串。3表示压缩字节。4表示GZIP压缩流。客户端传输时通过Property.getInstance().setServerSendtype(...)设置传输数据格式类型,默认为1,即 
Property.getInstance().setServerSendtype(Property.ENCRYZIPSTRINGSEND),其中Property.RAWSEND的值为0,Property.ZIPSTRINGSEND的值为2, Property.ZIPBYTESEND的值为3,Property.GZIPSEND的值为4,其中客户端传输数据格式类型为1时,参数streamtype的参数值可以是0或1。
 

传输数据格式类型 

         传输数据格式类型有四种,0代表原始格式,在代码中Property. RAWSEND,1代表加密并压缩,在代码中Property. ENCRYZIPSTRINGSEND,2代表压缩字符串,在代码中Property. ZIPSTRINGSEND,3代表压缩二进制,在代码中Property. ZIPBYTESEND,4代表GZIP流,在代码中Property. GZIPSEND。 
         Servlet调用:传输数据格式类型五种都可用,需要java代码中的传输数据格式类型和web.xml配置设置传输数据格式类型一致。 
0 0
原创粉丝点击