首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在kie-server中修改事实的问题

在kie-server中修改事实的问题
EN

Stack Overflow用户
提问于 2016-04-06 02:34:10
回答 1查看 122关注 0票数 0

我引用Drools文档中的以下代码来修改Kie-server中的事实。

代码语言:javascript
复制
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行中,我希望将属性设置为对象而不是字符串。例如,

代码语言:javascript
复制
6 setters.add(new SetterImpl("id", UUID.randomUUID());

而SetterImpl(String accessor,String value)接口只接受字符串参数。

我们有没有其他的SetterImpl实现可以用来发送对象而不是字符串到Kie-server?

我想发送对象的原因是容器中的java模型包含非原语类型的属性,例如,

代码语言:javascript
复制
Public class Test{
    UUID id;

    public UUID getId(){
        return id;
    }

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

}
EN

回答 1

Stack Overflow用户

发布于 2016-04-06 12:51:45

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

代码语言:javascript
复制
6 setters.add(new SetterImpl( "id", "UUID.randomUUID()" );

这是在会话的上下文中计算的。您可能需要在DRL中导入UUID或使用完整的类名。

(我从来没有尝试过这些,我已经很多年没有使用命令界面了。我刚刚阅读了源代码。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36434339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档