如何在Guvnor中创建BRL并查询Drools服务器
我被古夫纳的BRL规则束缚住了。。我正在尝试使用Drools服务器从我的应用程序执行规则(此解决方案是因为在生产中我可以使用更多服务器,并可能提高性能。对此不确定,因为这是我们公司第一次使用Drools) 所以基本上规则是。。给定一个对象路由设置属性“SelectedOutboundTourney”,我上传到guvnor的jar中,我想获得另一个属性为“SelectedReturnTourney”的对象。。(但有可能得到相同的对象吗??) 实际上,我得到了一个Route对象,其中SelectedReturnTraveline为null 考虑到我遇到的麻烦,我不确定使用BRL是否是一个好的解决方案。。对于那些想要改变规则或创建新规则的非技术人员来说,它似乎很容易使用 无论如何 这是我在Guvnor中创建的BRL:如何在Guvnor中创建BRL并查询Drools服务器,drools,drools-guvnor,guvnor,Drools,Drools Guvnor,Guvnor,我被古夫纳的BRL规则束缚住了。。我正在尝试使用Drools服务器从我的应用程序执行规则(此解决方案是因为在生产中我可以使用更多服务器,并可能提高性能。对此不确定,因为这是我们公司第一次使用Drools) 所以基本上规则是。。给定一个对象路由设置属性“SelectedOutboundTourney”,我上传到guvnor的jar中,我想获得另一个属性为“SelectedReturnTourney”的对象。。(但有可能得到相同的对象吗??) 实际上,我得到了一个Route对象,其中Selected
rule "Selected Return for Dover - Calais"
dialect "mvel"
when
Route( selectedOutboundJourney == "DOCA" )
then
Route fact0 = new Route();
fact0.setSelectedReturnJourney( "CADO" );
insertLogical( fact0 );
end
这是我正在使用的代码:
final List<Command> commands = new ArrayList<Command>();
final Command insertObjectCommand = CommandFactory.newInsert(input, RESULT, true, "default");
final Command getObjectCommand = CommandFactory.newGetObjects();
final Command fireAllRulesCommand = CommandFactory.newFireAllRules();
commands.add(insertObjectCommand);
commands.add(getObjectCommand);
commands.add(fireAllRulesCommand);
final ExecutionResults executionResults = droolsHttpClient.callDroolsServer(commands);
return executionResults.getValue(RESULT);
有人能帮我吗?假设在执行以下规则后,您的知识会话开始时只有一个事实
rule "Selected Return for Dover - Calais"
dialect "mvel"
when
Route( selectedOutboundJourney == "DOCA" )
then
Route fact0 = new Route()
fact0.setSelectedReturnJourney( "CADO" )
insert( fact0 )
end
您的会话中将有两个Route
事实,因为您刚刚插入了第二个事实
Route: selectedOutboundJourney = "DOCA", selectedReturnJourney=null
Route: selectedOutboundJourney = null, selectedReturnJourney="DACO"
如果要修改原始事实,请使用以下规则:
rule "Selected Return Routes for Dover Calais"
when
$r : Route(selectedOutboundJourney == "DOCA")
then
modify ($r) {
selectedReturnJourney = "CADO"
}
end
谢谢!现在我看不出有任何理由在Guvnor中创建BRL,因为THEN部分只包含“插入事实”和“逻辑插入事实”。。文档中没有提到“修改”。如果您为事实指定了名称,您可以稍后修改它。这不是很有创意,但它确实存在。您还可以使用guvnor管理您的自由形式-“技术规则”。我们这样使用guvnor。
Route: selectedOutboundJourney = "DOCA", selectedReturnJourney=null
Route: selectedOutboundJourney = null, selectedReturnJourney="DACO"
rule "Selected Return Routes for Dover Calais"
when
$r : Route(selectedOutboundJourney == "DOCA")
then
modify ($r) {
selectedReturnJourney = "CADO"
}
end