繁体   English   中英

在Kie-Server中修改事实的问题

[英]Issue with modifying facts in kie-server

我指的是Drools文档中的以下代码,以修改Kie-server中的事实。

1 BatchExecutionCommand command = new BatchExecutionCommand();
2 command.setLookup("ksession1");
3 ModifyCommand modifyCommand = new ModifyCommand();
4 modifyCommand.setFactHandleFromString("123:234:345:456:567");
5 List<Setter> setters = new ArrayList<Setter>();
6 setters.add(new SetterImpl("age", "30"));
7 modifyCommand.setSetters(setters);
8 command.getCommands().add(modifyCommand);

在第6行中,我想将属性设置为对象而不是字符串。 例如,

6 setters.add(new SetterImpl("id", UUID.randomUUID());

但是,SetterImpl(String accessor,String value)API仅接受String参数。

我们还有SetterImpl的其他实现,可以用来将对象而不是String发送给Kie-server吗?

我要发送对象的原因是,容器内的Java模型包含非原始类型的属性,例如,

Public class Test{
    UUID id;

    public UUID getId(){
        return id;
    }

    public void setId(UUID id){
        this.id = id;
    }

}

您可以尝试使用MVEL表达式作为Setter的值。 ModifyCommand中的代码看起来好像已经实现了。 因此,也许:

6 setters.add(new SetterImpl( "id", "UUID.randomUUID()" );

这是在会话的上下文中评估的。 您可能必须在DRL中导入UUID或使用完整的类名。

(我从未尝试过任何一种方法,多年未使用命令界面。我只是阅读了源代码。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM