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