本文主要是介绍带有规则引擎的Apache NiFi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
将ApacheNiFi和RuleEngine结合起来很容易,也很有趣。您可以使用数据操作完成一些非常好的工作,我使用Drools为此编写了一些代码。
构建或下载规则引擎
下载编译后的NiFi NAR这里或从https://github.com/alefbt/NiFi-Rule-engine-processor
这目前只适用于JSON流文件。
(许可证:Apache 2)
NiFi-Rule-engine-processor github
然后运行以下命令:
git clone https://github.com/alefbt/NiFi-Rule-engine-processor
cd NiFi-Rule-engine-processor
mvn clean install package
cp nifi-ruleengien-processor-nar/target/nifi-ruleengien-processor-1.0.nar /path-to-nifi/lib/
重新启动NiFi。
例
创建一个NiFi流
GetFile处理器
SET属性`源文件夹‘:/some-project-path/IN
RuleEngineProcessor
设置属性DRL file path到/some-project-path/DRL/business_object_json_test1.drl
PutFile处理器
将财产“最大折页”设置为/some-project-path/OUT
Image title
创建文件和相关文件夹
Image title
创建DRL文件/some-project-path/DRL/business_object_json_test1.drl
package com.matrixbi.rules
import com.matrixbi.objects.BusinessObject
rule “Good Morning”
when
b: BusinessObject()
eval( b.getAsInt(“time”) < 12 )
then
b.set(“greet”,”G00d Morning ” + b.get(“name”));
end
rule “Good Afternoon”
when
b: BusinessObject()
eval(b.getAsInt(“time”) >=12 && b.getAsInt(“time”) < 16)
then
b.set(“greet”,”Good Afternoon ” + b.get(“name”));
end
rule “Good Night”
when
b: BusinessObject()
eval(b.getAsInt(“time”) >= 16)
then
b.set(“greet”,”Good Afternoon ” + b.get(“name”));
end
创建一个JSON测试文件/some-project-path/IN/business_object_json_test1.json
{
“time”: 11,
“greet”: “Default text”,
“name”:”Yehuda”
}
激活所有并运行它。
结果
过了一会儿,你该看看business_object_json_test1.json在.。/some-project-path/OUT文件夹文件。
Image title
来源
Image title结果
Image title
这篇关于带有规则引擎的Apache NiFi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!