DROOLS通过URL访问changset
package droolsRule; import java.net.Authenticator;
import java.net.PasswordAuthentication; import kafka.producer2.KafkaProducerTest; import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.agent.KnowledgeAgent;
import org.drools.agent.KnowledgeAgentConfiguration;
import org.drools.agent.KnowledgeAgentFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.Resource;
import org.drools.io.ResourceChangeScannerConfiguration;
import org.drools.io.ResourceFactory;
import org.drools.io.impl.UrlResource;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession; import bean.DroolsResult;
import bean.Reg; public class RuleFilter {
public StatefulKnowledgeSession ksession = null;
public KnowledgeRuntimeLogger logger = null;
public KnowledgeAgent kagent = null;
public RuleFilter()
{
} public void getKsessionObj() throws Exception
{ } public void dispose()
{
ksession.dispose();
logger.close();
ksession = null;
logger = null;
} public StatefulKnowledgeSession readKnowledgeBase(String path) throws Exception {
if(kagent == null)
{
ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
sconf.setProperty("drools.resource.scanner.interval", "10");
ResourceFactory.getResourceChangeScannerService().configure(sconf);
ResourceFactory.getResourceChangeScannerService().start();
ResourceFactory.getResourceChangeNotifierService().start(); // KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
// aconf.setProperty("drools.agent.scanDirectories", "true");
// aconf.setProperty("drools.agent.newInstance", "true"); // UrlResource urlResource2 = (UrlResource)ResourceFactory.newUrlResource("http://localhost:8080/guvnor-5.6.0.Final-tomcat-6.0/org.drools.guvnor.Guvnor/package/heatbeat/LATEST/ChangeSet.xml");
// urlResource2.setBasicAuthentication("enabled");
// urlResource2.setUsername("admin");
// urlResource2.setPassword("admin");
// urlResource2.setResourceType(ResourceType.PKG); } //String path = "http://192.168.61.104:8080/guvnor-5.6.0.Final-tomcat-6.0/org.drools.guvnor.Guvnor/package/stormETL/LATEST";
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
UrlResource urlResource = ((UrlResource) ResourceFactory.newUrlResource(path));
urlResource.setBasicAuthentication("enabled");
urlResource.setUsername("admin");
urlResource.setPassword("admin");
kbuilder.add(urlResource, ResourceType.PKG);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
} KnowledgeAgentConfiguration conf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration(); Authenticator.setDefault(new Authenticator() { // Check https://issues.jboss.org/browse/JBRULES-3465 for any future changes. @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( "admin", "admin".toCharArray()); } }); kagent = KnowledgeAgentFactory.newKnowledgeAgent("kagent2",conf);
kagent.applyChangeSet(ResourceFactory.newUrlResource("http://localhost:8080/guvnor-5.6.0.Final-tomcat-6.0/org.drools.guvnor.Guvnor/package/heatbeat/LATEST/ChangeSet.xml"));
kagent.addEventListener(new MYEventListener());
// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
KnowledgeBase kbase = kagent.getKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
ksession = kbase.newStatefulKnowledgeSession();
logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);
return ksession;
}
public void runRroolsRule(KafkaProducerTest kafkaProducter,Object fact,String value,StatefulKnowledgeSession ksession) throws Exception
{ long startTime = System.currentTimeMillis(); DroolsResult dMessage = new DroolsResult();
// ksession.setGlobal("kafkaProducerObj", kafkaProducter);
ksession.setGlobal("dMessage", dMessage);
ksession.setGlobal("value", value);
ksession.insert(fact);
ksession.fireAllRules();
dMessage = (DroolsResult)ksession.getGlobal("dMessage");
System.out.print("~~~~~~~~" + dMessage.getFilterResult());
System.out.println("||||||||||||" + ksession.getFactCount());
dMessage = null;
if(ksession.getFactCount() > 10000)
{
dispose();
ksession = null;
logger = null;
//initDrools(); } long endTime = System.currentTimeMillis();
System.out.println("filter use time:" + (endTime - startTime));
}
//http://192.168.61.104:8080/guvnor-5.6.0.Final-tomcat-6.0/org.drools.guvnor.Guvnor/package/heatbeat/LATEST/SCENARIOS
public static void main(String[] args) throws Exception{
KafkaProducerTest kafkaProducerObj = new KafkaProducerTest();
RuleFilter rf = new RuleFilter();
StatefulKnowledgeSession ksession = rf.readKnowledgeBase("http://192.168.61.104:8080/guvnor-5.6.0.Final-tomcat-6.0/org.drools.guvnor.Guvnor/package/stormETL/LATEST");
kafkaProducerObj.init(); long startTime = System.currentTimeMillis();
for(int i = 0;i<10;i++)
{
Reg reg = new Reg();
String str = "123";
reg.setImei1("1111111111111111");
reg.setMeid("111");
//System.out.println(i);
rf.runRroolsRule(kafkaProducerObj, reg, str,ksession);
// reg = null;
System.out.println("!!!!!!!!!!!!!!!!!!" + i);
}
long endTime = System.currentTimeMillis();
System.out.println("all use time is:" + (endTime - startTime)); }
}
今天做DROOLS 通过网络访问changset(大多是通过文件方式访问,但是感觉既然用上了guvnor代码再做文件实在没意思)搞了几个小时,总算可以访问了。到此记录下
DROOLS通过URL访问changset的更多相关文章
- ThinkPHP的URL访问
url访问 http://www.kancloud.cn/manual/thinkphp5/118012 ThinkPHP5.0在没有启用路由的情况下典型的URL访问规则是: http://serve ...
- 关于搭建webservice以及无法通过URL访问的简易解决办法
之前工作天天在用webservice,但是从没有自己独立的搭建一个全新的项目,今天好不容易自己搭了一个webservice,报错不少,记录下来免得以后又忘了. 一.搭建webservice需要做的几点 ...
- 针对功能权限(url访问)如何避免越权访问
你可以用request获得之前的页面路径:Request.getHeader("Referer");然后你可以判断一下,这个是字符串类型的. 如果是需要登录的,你可以从sessio ...
- VS2012 easyui datagrid url访问之坑
VS2012 easyui datagrid url访问之坑 url属性放的是地址的话 返回的json格式必须有 total 和 rows,如下: {"total":2," ...
- phpcms V9 MVC模式 与 URL访问解析
[1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...
- 怎么通过URL访问到服务器上的物理文件
目的 :搞清楚在jsp页面中如何引用static目录结构中的静态资源 一.URL URL的全称是统一资源定位符,俗称网页地址(网址),如同在网络上的门牌,是因特网上标准的资源的地址(Address). ...
- thinkphp四种url访问方式详解
本文实例分析了thinkphp的四种url访问方式.分享给大家供大家参考.具体分析如下: 一.什么是MVC thinkphp的MVC模式非常灵活,即使只有三个中和一个也可以运行. M -Model 编 ...
- [ThinkPHP]MVC模块和URL访问
## ThinkPHP 3 MVC模式和URL访问#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲: 一.什么是MVC // ...
- phpcms(1)phpcms V9 MVC模式 与 URL访问解析(转)
[1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...
随机推荐
- 详解redis服务
http://mp.weixin.qq.com/s?__biz=MzIyMDA1MzgyNw==&mid=2651968327&idx=1&sn=6e6cb01d334d7ae ...
- erlang 开发建议
* 确保没有任何编译警告 * Erlang中String采用list实现,32位系统中,其1个字符用8个字节的空间(4个保存value, 4个保存指针).因此string速度较慢,空间占用较大 * 在 ...
- 【JZOJ3424】粉刷匠
description 赫克托是一个魁梧的粉刷匠,而且非常喜欢思考= = 现在,神庙里有N根排列成一直线的石柱,从1到N标号,长老要求用油漆将这些石柱重新粉刷一遍.赫克托有K桶颜色各不相同的油漆,第i ...
- http://wiki.ros.org/navigation/Tutorials/RobotSetup
http://wiki.ros.org/navigation/Tutorials/RobotSetup
- VC6 Release下,生成pdb文件
1.Generate debug必须选上,否则没有调试信息 2.把优化disable,否则容易产生代码地址偏移: 3.用program database产生PDB文件: 4.将dll, exe, pd ...
- 杂项-语言-Swift:Swift
ylbtech-杂项-语言-Swift:Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于 ...
- idea社区版+第一个spring boot项目+增删改查+yml修改端口号
参考:https://www.cnblogs.com/tanlei-sxs/p/9855071.html 中途出现问题时参考了太多 1.下载idea社区版 2.在settings -> Plug ...
- 阿里云CentOs7上安装Tomcat
一.下载安装tomcat8 cd /usr/ #创建tomcat目录 mkdir tomcat #从网上download 压缩包 wget tomcat8 url #解压 tar -zxvf apac ...
- ThinkPHP5的简单使用
目录的介绍 thinkphp5 的控制器的创建 第一步:新建一个控制器 第二步:admin.php控制器内容如下 第三步:如何显示模型页面 第四步:显示模板页面 第五步:定义模板变量 第六步:运行结果 ...
- 2019-9-2-贡献自己的服务器搭建tor中转
title author date CreateTime categories 贡献自己的服务器搭建tor中转 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 ...