假设我们在JavaEE应用程序中有这些类,它们也是Hibernate实体:
public class A {
private String code;
private List<B> tests;
}
public class B {
private String code;
private List<C> steps;
}
public class C {
private String code;
private List<D> subSteps;
}
在过去几年中,创建了一些Swing窗口,让配置器用户创建ad deploy DRools软件包规则,以自定义客户所需的工作流。这些窗口以某种方式将Swing组件转换为Drool Mvel文本,以避免配置程序用户编写原始代码。然后将这些规则保存并部署到BLOB字段中的DB表中,并在需要时执行。问题是,现在我们需要实现一个新的事实层次结构,对其执行断言以触发规则。使用示例代码中的a类事实,此代码是从DRools窗口生成的:
rule "RULE_TRY"
dialect "mvel"
salience 10
enabled true
no-loop false
when
$a : A( )
$b : B( code == "testCode" ) from $a.tests
$c : C( code== "stepCode" ) from $a.tests.steps
then
end
很明显,这个规则和事实反映了我们的DB结构,其中“code”是相应的相对表中的PK或FK
但此代码会在编译和部署包时引发DRools错误:
无法为“from”生成表达式:未能编译:1个编译错误:-(1,26)步骤“$a.tests”的严格模式下的非限定类型。步骤“:[规则名称=”Rule\u TRY“]
也许,这是正确的语法:
when
$a : A( )
$b : B( code == "testCode" ) from $a
$c : C( code== "stepCode" ) from $b
? 因为,考虑到Mvel代码是一种getter/setter,我希望像$a.tests中的这样的语法返回一个
列表
目前,我看到DRL语言中的最后一个字符串是通过调用class
DrlDumper
上的方法dump()
创建的。
我认为您需要的语法是:
rule "RULE_TRY"
dialect "mvel"
salience 10
enabled true
no-loop false
when
$a : A( )
$b : B( code == "testCode" ) from $a.tests
$c : C( code== "stepCode" ) from $b.steps
then
//...
end
希望有帮助,
这篇文章建议添加一些事实类作为嵌套规则的一种方式。http://drools.46999.n3.nabble.com/How-can-I-nested-rules-td4020488.html#a4020681 我想知道的是——有没有保证“年龄和性别女性”在“怀孕”之前执行,“怀孕”在“怀孕2”之前执行?据我所知,我的申请中总是这样。但是,它是记录在口水留档的某个地方,还是只是等待倒塌的纸牌屋?
使用JSF 2.0,我需要显示一个表,其中每一行都包含一个打开弹出窗口的链接。我有两种型号:
我使用Apache Spark 2.2.0和Scala。 我以这个问题为指导,在不使用pivot函数的情况下透视数据帧。 我需要在不使用pivot函数的情况下透视数据帧,因为我有非数字数据,而< code>pivot只对数字数据使用聚合函数,如< code>sum 、< code>min 、< code>max。我想在< code>pivot聚合中使用一个非数字列。 这是我的数据: 我希望它按<
问题内容: 我有这个嵌套列表: 现在,我要做的是将列表中的每个元素转换为float。我的解决方案是这样的: 但这可以使用嵌套列表理解来完成吗? 我所做的是: 但是结果是一堆100的总数为2400。 任何解决方案,解释将不胜感激。谢谢! 问题答案: 这是使用嵌套列表理解的方法: 这将为你提供一个列表列表,与你开始时的列表类似,只是使用浮点数而不是字符串。如果你想要一个固定列表,则可以使用。
问题内容: 没有使用foreach循环就可以针对以下问题定义LINQ语句吗? 在写这个问题时,我找到了解决问题的办法。我仍然会发布(并回答)这个问题,因为这个问题对我来说真是个麻烦。而且我在这里没有找到合适的现有问题。 乔,尤文 问题答案: 相信and可以解决这个问题! 第二个变量名称具有误导作用。除其他字母外,它还会返回的一个实例,该实例在原始集合中 不是 唯一的;)
在索引位置1的输入中遇到的字符串的前半部分将被替换为字符“-”使用流我们如何执行操作? 我有上面的列表,我想用我这样做的循环将每个嵌套列表值的第一个位置替换为“-” 样本输出:[[0,-],[6,-],[0,-],[6,gh],[4,ij],[0,ab],[6,cd]] 但是任何人都可以解释如何使用流来实现同样的目标