如何在Guvnor中创建BRL并查询Drools服务器

如何在Guvnor中创建BRL并查询Drools服务器,drools,drools-guvnor,guvnor,Drools,Drools Guvnor,Guvnor,我被古夫纳的BRL规则束缚住了。。我正在尝试使用Drools服务器从我的应用程序执行规则(此解决方案是因为在生产中我可以使用更多服务器,并可能提高性能。对此不确定,因为这是我们公司第一次使用Drools) 所以基本上规则是。。给定一个对象路由设置属性“SelectedOutboundTourney”,我上传到guvnor的jar中,我想获得另一个属性为“SelectedReturnTourney”的对象。。(但有可能得到相同的对象吗??) 实际上,我得到了一个Route对象,其中Selected

我被古夫纳的BRL规则束缚住了。。我正在尝试使用Drools服务器从我的应用程序执行规则(此解决方案是因为在生产中我可以使用更多服务器,并可能提高性能。对此不确定,因为这是我们公司第一次使用Drools)

所以基本上规则是。。给定一个对象路由设置属性“SelectedOutboundTourney”,我上传到guvnor的jar中,我想获得另一个属性为“SelectedReturnTourney”的对象。。(但有可能得到相同的对象吗??) 实际上,我得到了一个Route对象,其中SelectedReturnTraveline为null

考虑到我遇到的麻烦,我不确定使用BRL是否是一个好的解决方案。。对于那些想要改变规则或创建新规则的非技术人员来说,它似乎很容易使用

无论如何

这是我在Guvnor中创建的BRL:

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