论坛首页 综合技术论坛

Visual Rules Solution Java集成接口<2>—Java类调用本地调用

浏览 797 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-11-23  
指定规则编译文件目录,调用指定目录下默认的版本 下的规则编译文件 ,既版本default,在没有指定版本的情况下,VisualRules内部约定调用版本default下的规则编译文件,如指定目录为E:\rscfile,那默认版本目录E:\rscfile\default。

添加java测试类
在java工程中添加一个java类,名为Test1.java,其内容编辑如下:
package com.flagleader;
import java.io.File;
import java.util.List;
import com.flagleader.engine.RuleEngine;
import com.flagleader.engine.RuleEngineException;
import com.flagleader.engine.RuleEngineFactory;
import com.flagleader.engine.RuleEngineManager;
/**
* 调用指定目录下默认文件下的编译文件
* 使用的是RuleEngine,该接口只能用于本地调用
* @author Administrator
*/
public class Test1 {
public static void main(String[] args) {
try {
//编译文件指定目录,默认版本目录是指定目录下的default
RuleEngineManager.getInstance().init(new File("e:\\rscfile"));
//工厂模式,该接口只能用于本地调用
RuleEngine engine = RuleEngineFactory.newInstance().getRuleEngine();
//以dto形式为规则传参
Student student = new Student(1,"李丽",12,'男',"六年级","无");
//执行规则,其中"student.add"为规则全名,student为传入参数
engine.executeBeans("student.add", student);
//执行完规则后,获取数据,"studentList"必须和规则中取内存表数据的变量名一致
List list=engine.getListList("studentList");

1.版本:这里的版本指指定目录下的文件
2.规则编译文件:这规则包外部调用名

//由于规则中采用的是list<list>类型,需要做两次转换
List list1=(List)list.get(0);
//循环次数为对象中字段个数
for (int i = 0; i < 6; i++) {
System.out.print(list1.get(i)+"\t");
}
} catch (RuleEngineException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


执行java测试类

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





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

  • 大小: 115.7 KB
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics