rule-engine - 自定义规则引擎中的esper

标签 rule-engine esper complex-event-processing

我需要使用 ESPER 实现一个规则引擎
为此,我必须准备查询规则(如果有任何其他优化方式,请提出建议)。规则必须在运行时可声明和修改
此外,我还必须创建一个 UI 来定义规则。
请提出更好和优化的方法。
一个例子:
Example
可以在运行时定义更多规则。

最佳答案

几乎没有上下文可以引用,但一个简单的解决方案是简单地保持每个订单和每个价格的最新状态,并将每个规则实现为引擎订阅。您的引擎可以使用以下 EPL 语句进行初始化:

/* Minimal schema-s */
create schema LiveOrder (user string, orderid string, quantity, double, symbol string);
create schema LivePrice (symbol string, price double);

/* create two windows to store the latest order by orderid, and latest price by symbol */
create window LiveOrders.std:unique(orderid) as select * from LiveOrder;
create window LivePrices.std:unique(symbol) as select * from LivePrice;

/* insert data into the windows when data arrives */
insert into LiveOrders select * from LiveOrder;
insert into LivePrices select * from LivePrice;

此时您将存储所有订单和价格,因此可以根据不同的规则轻松“加入”它们。如果用户在下订单和订购数量 > 100 时需要提醒,您只需创建以下 EPL 语句并附加一个监听器来发送提醒:

select * from LiveOrders where user='U1' and quantity > 100;

要在任何交易品种的订单金额超过 10000 时创建提醒,您可以对这个 EPL 执行相同的操作:

select LiveOrders.symbol as symbol, LiveOrders.quantity*LivePrices as total from LiveOrders
inner join LivePrices on LiveOrders.symbol=LivePrices.symbol
where LiveOrders.quantity*LivePrices > 10000

只要不再需要警报,您只需删除监听器并销毁 EPL 语句。

关于rule-engine - 自定义规则引擎中的esper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413666/

相关文章:

java - 事件来到 Esper Engine 后阅读 Mysql 数据库?

javascript - Photoshop CEP 面板 - 选择 json 文件的路径

事件过滤和触发算法

go - Go有没有规则引擎/推理引擎

java - 在外部 Tomcat 容器中加载文件与 Bootrun

wso2 - CEP 如何检测和报告流中的重复项?

java - Esper XML dom 文档错误

java - 编写一条规则,根据访问情况检测客户在商店某个部门的位置

rule-engine - 集成了规则引擎的系统是否曾经真正成功过?

java - Drools eval() 优化