持久规则引擎

durable的Python项目详细描述


持久性规则
==
持久性规则是一个多线程的微观框架,用于实时、一致和可伸缩的事件协调。使用持久性规则,您可以通过组合来自多个源的数据来推断更复杂的情况,从而跟踪和分析发生的事情(事件)的信息。

a forward chaining algorithm(也称为rete)用于评估大量数据流。一个简单而强大的元语言抽象允许您定义简单而复杂的规则集,如流程图、状态图、嵌套状态图、并行和时间驱动流。

持久规则核心引擎在c语言中实现,实现了超快速的规则求值和推理以及多语言支持。持久规则依赖于最先进的技术:

*[node.js](http://www.nodejs.org)、[werkzeug](http://werkzeug.pocoo.org/)、[sinatra](http://www.sinatrarb.com/)分别用于托管用javascript、python和ruby编写的规则集。
*推理状态使用[redis]缓存(http://www.redis.io),它可以在不放弃性能的情况下进行扩展。
*基于[d3.js]的web客户端(http://www.d3js.org)提供了强大的数据可视化和测试工具。

下面是一个示例,说明定义实时欺诈检测规则是多么容易(30秒内三次购买超过100美元



``ruby
需要‘持久性’


>持久性。状态图:欺诈行为
状态:开始做
到:待机
结束
状态:待机做
到:计量,当(m.amount>;100)做
开始计时器:速度,30
结束
结束
结束
状态:计量做
到:欺诈,当欺诈,当欺诈,当(m.amount>;100,至少(2)do
将“检测到欺诈”
结束
设为:待命,当(timeout:velocity)do
将“欺诈清除”设为“欺诈清除”
end
end
end
end
end
end
state

state chart('fraud')


@当(m.amount>;100)
定义开始计数时:
s.start_timer('velocity',30)

状态为('metering'):
@到('fraud')
@当((m.amount>;100).至少(2)
def报告欺诈:
打印('fraud detected')

@to('standby')
@when(timeout('velocity')
def清除欺诈:
打印('fraud cleared')

state('fraud')

run_all()
`````
javascript
``javascript
``var d=需要('durable');

with(d.statechart('fraud')){
with(state('start'){
to('standby');
}
with(state('standby'){
to('metering')。when(m.amount.gt(100),function(s){
s.starttimer('velocity',30);
};
}
(state('metering'){
到('fraud')。when(m.amount.gt(100)。至少(2),个函数{
console.log('fraud detected');
};
到('standby')。when(timeout('velocity'),个函数{
console.log('fraud cleared');
};
}
state('fraud');
}

````





\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\用c提高性能(2014年8月)。(http://jruizblog.com/2014/08/19/boosting-performance-with-c/)
*【rete满足redis(2014年2月)】(http://jruizblog.com/2014/02/02/rete满足redis/)
*[推断:从专家系统到云级事件处理(2014年1月)》(http://jruizblog.com/2014/01/27/event-processing/)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么程序显示空结果?   java应用程序在测试设备上调试时工作正常,但在发布版apk中没有,它没有获得post。来自firebase的类变量   java Android:从主活动按钮确定在listview中选中哪个复选框   在Spring中添加@OneToOne注释时启动ApplicationContext时发生java错误   用JAVA Android实现矩阵计算的最快方法   SpringJava语义有没有更好的编写方法?   java从hashmap中减去两个值后返回最小差值的键?   Java中的静态初始化顺序:Netty 4.0.7的例外   java如何检查用户输入是否为字符串   循环Java计数单词索引   java如何使用以下代码将视频流传输到Android异步Http服务器?   java如何在jtable的所有行中循环   java如何使用maven将unicode插入mysql   java使用安卓加速远程数据检索   java试图模拟麦克风(javax.sound.sampled)   swing SwingWorker从不归还任何东西?(爪哇)   首次在Android Studio上未加载java LibGDX文件   java如何在多个Mysql服务器上设置限制和偏移?   如何防止从java连接到mongodb时登录控制台?