我有以下结构的规则:
rule "ins b"
when
A()
then
B $b = new B();
$b.setName("hello");
insert($b);
end
我想获取规则添加到工作记忆中的对象(及其属性) 我可以使用以下代码获取LHS对象:
RuleImpl ri = (RuleImpl) kSession.getKieBase().getRule("com.sample", "ins b");
System.out.println("L: " + ri.getLhs());
Pattern rce = (Pattern) ri.getLhs().getChildren().get( 0 );
System.out.println("L: " + rce.getConstraints());
但我找不到类似的东西来获得规则的RHS。
我想这样做是因为我试图自动生成查询"基于规则。 从上面的规则我想生成类似的东西:
query howToGetA()
@Abductive( target = A.class )
$b := B( name == "hello" )
end
提前致谢。
答案 0 :(得分:0)
你为什么要这样做?您“知道”在编写规则代码时插入的对象。
您可以致电
获取RHSRuleImpl ri = ...
Consequence cons = ri.getConsequence();
但是,我不认为这会给你“规则添加到工作记忆中的对象(及其属性)”。结果是代码(以某种形式),并且您将无法在该代码中找到对象,因为该对象是在运行时构建的。
此外,RuleImpl(以及接口Consequence及其实现)都是非公共API的一部分,如有更改,恕不另行通知。