我对口水很陌生。
我正在开发一个应用程序,其中我的drools引擎每秒钟将获得一系列事件。我需要查看过去10秒内所有事件的属性值是否低于10,如果条件为真,我必须进行一些处理。这里是我尝试的示例代码,请帮助我理解和解决问题。
我的规则文件....
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
declare Employee
@role (event)
@expires(10s)
end
// Using timer to ensure rule processing starts only after 10 secs,
//else processing starts as soon as first event comes in
rule "Test Timer"
no-loop true
10timer(int: 5s)
when
$E : Employee()
$total : Number( doubleValue < 1 )
from accumulate( Employee( Age > 10 ), count() )
then
System.out.println( $E.getName() + " is crossing the threshold of 20");
retract($E);
end
和主类
// import classes removed from here...
public class MainClass {
/**
* @param args
*/
public static void main(String[] args){
//Create KnowledgeBase...
KnowledgeBase knowledgeBase = createKnowledgeBase();
//Create a stateful session
StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
// KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(session);
try {
// Using random generator to simulate the data.
int randomInt=0;
Random randomGenerator = new Random();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = null;
while (true) {
Thread.sleep(1000);
date = new Date();
randomInt = randomGenerator.nextInt(12);
//Create Facts and insert them
Employee emp = new Employee();
emp.setName("Anurag" + randomInt);
emp.setAge(randomInt);
//LOAD THE FACT AND FIREEEEEEEEEEEEEEEEEEE............
System.out.println(dateFormat.format(date)+ " => Random no " + randomInt);
session.insert(emp);
session.fireAllRules();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
session.dispose();
}
}
/**
* Create new knowledge base
*/
private static KnowledgeBase createKnowledgeBase() {
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
//Add drl file into builder
File drl = new File("D:\\eclipse\\worspace\\Research\\misc\\testforall.drl");
builder.add(ResourceFactory.newFileResource(drl), ResourceType.DRL);
if (builder.hasErrors()) {
System.out.println(builder.getErrors().toString());
//throw new RuntimeException(builder.getErrors().toString());
}
KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
//Add to Knowledge Base packages from the builder which are actually the rules from the drl file.
knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());
KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
config.setOption( EventProcessingOption.STREAM );
return knowledgeBase;
}
}
public class Employee {
private String Name;
private int Age;
// getter - setters
}
你查过Drools融合文档了吗?首先,Employee听起来不是一个好主意。事件是与您的域相关的某物的状态的有意义的变化。因此,事件可以是员工到达办公室的时间,也可以是员工离开办公室的时间,但是员工本身是一个域实体(或者对于规则引擎来说是一个事实),而不是一个事件。如果您对使用Drools fusion临时操作符感兴趣,我建议您阅读关于滑动窗口(临时窗口)的内容,它可以让您随时看到过去十秒钟发生了什么。你不需要使用计时器。干杯
我正在写一个新的家长pom.xml 下面是我的孩子pom 下面是我在构建过程中遇到的错误
我创建并尝试使用构建项目,但它不工作。不是这个项目,我试着构建我的所有项目,但在我的ubuntu笔记本电脑上不工作 [信息]扫描项目...从中心下载:https://repo . maven . Apache . org/maven 2/org/spring framework/boot/spring-boot-starter-parent/2 . 6 . 11/spring-boot-start
本文向大家介绍体验MySQL5.6.25并处理所遇到的问题,包括了体验MySQL5.6.25并处理所遇到的问题的使用技巧和注意事项,需要的朋友参考一下 在安装包下的根目录,之前的版本是有my.ini文件可以用来配置的,然而在新的版本中却只发现了my-defult.ini文件。 而且里面的数据少之又少。想要修改字符编码之前的方式行不通了。 用记事本打开该文件会发现并没有【default-charac
我正在尝试从何处运行此源代码https://github.com/kishancs2020/TicketBookingServiceJunitTestingGithub在我的Jenkins中查看了在Jenkins文件中创建的管道源代码。 我已经更新了maven,java版本来修复它,但错误仍然是一样的。我也通过了这个链接http://cwiki.apache.org/confluence/disp
本文向大家介绍使用批处理删除文件夹时遇到的问题,包括了使用批处理删除文件夹时遇到的问题的使用技巧和注意事项,需要的朋友参考一下 C盘有一个文件夹1,里面有2.exe和3.exe 。 想做一个批处理,先运行1.exe,安装完成后运行2.exe 等到2.exe安装完成后,删除文件夹1 我的代码如下 现在有一个缺点。2和3安装完成后,文件夹1不能被删除,里面2.exe被删除,3.exe仍然存在。不知道
我们需要在constructor中对于事件与对应的handler函数进行绑定. 大多数时候我们在发出DOM事件的组件内部写我们的handler函数. 在下面的例子中,我们在组件内部创建了一个click handler, 因为我们想所有的Swithcer Component当被点击时,做出同样的响应. class Switcher extends React.Component { render